Entering L2

Entering L2 from a non-D0 state is cleaner and the PCIe Controller can automate the handshake process with the host. The PCIe specification has provisions to enter L2 from D0. D0 is a normal operating state. L2 entry while a function's power state is D0 requires the client to respond to the host.

The following steps illustrates L2 entry from all allowed function power states.

  1. The remote root port sends a PME_Turn_Off message to the PCIe Controller.
  2. The PCIe Controller delivers the PME_Turn_Off message to the client through the AXI message interface (for AXI configurations) or target-request interface (for non-AXI configurations).
  3. When ready, the client transmits the PME_TO_Ack message to the root port via the client master interface with the following steps:
    1. Wait for the client target request interface to receive a PME_Turn_Off message.
    2. Read the function's power state from the Power Management Control/Status Register configuration register.
    3. Check the programmed value of PME Turnoff Ack Delay[15:0] in the local management register space.
    4. If the Function Power State == 'D0' or if the PME Turnoff Ack Delay == 0x0000, the PCIe Controller does not transmit the PME_TO_Ack message (see following note).
      • Client firmware should ensure that there are no PCIe transfers active in the PCIe subsystem.
      • Client sends a PME_TO_ACK message over the client master request interface.
    5. If the condition in step (d) is not true, the PCIe Controller automatically transmits a PME_TO_Ack message after the PME Turnoff Ack Delay time. The client must not send PME_TO_ACK.
  4. Optionally, the client can now change the PCIe Controller's power state to L23_Ready by asserting REQ_PM_TRANSITION_L23_READY. This assertion causes the PCIe Controller's LTSSM to transition to L2 and enables the client to power down the PCIe Controller completely. The client has to assert REQ_PM_TRANSITION_L23_READY until the LTSSM moves into L2.
Note: If any enabled PF is in the D0 power state, there may be PCIe transfers outstanding in the system for that PF. In this case, the PCIe Controller does not automatically transmit PME_TO_Ack.