The PRCM module can request the ISS to go into IDLE state when the ISS has asserted its MStandBy output.
In a normal case, software must ensure that the ISS is in a quiet state before allowing the PRCM module to send an IDLE request to the ISS:
- The ISS has no more traffic to generate.
- The ISS cannot generate any new interrupts.
- The ISS has no pending interrupts.
When an IDLE request is received from the PRCM module, the ISS power manager verifies that the ISS MWait input has been asserted and that all ISS interrupt outputs are deasserted. It then starts the STANDBY-to-IDLE transition:
- Send IDLE request to the ISS configuration interconnect.
- The ISS configuration interconnect requests disconnection of both ISS interface slave ports. Disconnection is done by the master:
- It stops accepting new requests and drains currently ongoing ones.
- It waits for completion of all ongoing transactions.
- The ISS configuration interconnect acknowledges the IDLE transition.
- The ISS power manager acknowledges the IDLE request from the PRCM module.
- The PRCM module can cut the ISS clock and power.
The PRCM module first enables the ISS power and clock before requesting the ISS to go into functional state by deasserting the SIdleReq signal. The ISS power manager then executes the wake-up sequence:
- Request the ISS interconnect to go into functional state.
- The ISS interconnect connects the ISS slave ports.
- The ISS interconnect acknowledges transition into functional mode.
- The ISS power manager acknowledges transition into functional mode (ISS output SIdleAck = 00).
Four modes for IDLE control are supported, controlled through the ISS_HL_SYSCONFIG[3:2] IDLEMODE register bit-field:
- Smart-idle-wakeup mode [IDLEMODE = 0x3]: This is the mode normally used. When in this mode, the ISS acknowledges a request to go idle from the power manager after having performed all hardware operations necessary for the IAF to be in a correct quiet state.
- Smart-idle mode (default) [IDLEMODE = 0x2]: This is equivalent to smart-idle-wakeup mode.
- Force-idle mode [IDLEMODE = 0x0]: This is a backup mode intended to be used only if smart-idle mode is bugged. When in this mode, the ISS acknowledges a request to go idle from the power manager with no hardware condition. Software must ensure that the ISS is in a correct quiet state before requesting a force-idle transition.
- No-idle mode [IDLEMODE = 0x1]: When in this mode, the ISS disregards any request to go idle from the power manager.