Agilex™ 7 Hard Processor System Technical Reference Manual

ID 683567
Date 4/22/2024
Public
Document Table of Contents

13.4.3. Warm Reset Sequence

  1. You can assert warm reset request using the Arm* RMR_EL3 register through software. You must ensure that all CPUs enter WFI mode (for example, consider CPU0 is the master CPU):
    CPU3/2/1 interrupt routine:
    1. Pause all transactions prior to interrupt.
    2. Idle the CPU3/2/1 with the WFI mode.
    CPU0 interrupt routine:
    1. Pause all transactions prior to interrupt.
    2. Perform L2FLUSH procedure.
    3. Perform a Fence & Drain process to request that the SDRAM Controller Subsystem stops accepting any new transactions and allow all outstanding transactions to drain:
      1. Write to Reset_Mgr.hdskreq.mpfe_hmca_drainreq.
      2. Read from Reset_Mgr.hdskack.mpfe_hmca_drainack.
    4. Write to RMR_EL3 register to reset.
    5. Idle the CPU0 with the WFI mode.
  2. Reset Manager performs the following handshakes:
    1. L2 cache handshaking, if enabled using the Reset_Mgr.hdsken.l2flushen register.
    2. FPGA handshaking, if enabled using the Reset_Mgr.hdsken.fpgasen register.
    3. ETR handshaking, if enabled using the Reset_Mgr.hdsken.etrstallen register.
    4. HMC handshaking, if enabled using the Reset_Mgr.hdsken.mpfe_hmca_drainen register.
  3. Reset Manager initiates boot mode request handshake with Clock Manager.
  4. Reset Manager waits for an acknowledgement signal from Clock Manager that indicates completion of the boot mode handshake before proceeding any further.
    • A cold or watchdog reset requests that occurs before the completion of this step takes precedence over the warm reset sequence.
    • A cold or watchdog reset requests that occurs after the completion of this step is delayed until the warm reset is completed.
  5. Reset Manager asserts System Warm Reset.
  6. After a definite time-period, Reset Manager de-asserts all modules in reset except MPU.
  7. Reset Manager waits until the Reset_Mgr.ocramload.done bit is set.
  8. Reset Manager de-asserts L2/SCU using the Reset_Mgr.coldmodrst.l2 register bit.
  9. Reset Manager de-asserts MPU cores using the Reset_Mgr.mpumodrst.core[3:0] and Reset_Mgr.coldmodrst.cpupor[3:0] register bits.
  10. You can de-assert peripheral modules using the Reset_Mgr.per0modrst and Reset_Mgr.per1modrst registers.