• Sandrine Bailleux's avatar
    PSCI: Unify warm reset entry points · eb975f52
    Sandrine Bailleux authored
    There used to be 2 warm reset entry points:
    
     - the "on finisher", for when the core has been turned on using a
       PSCI CPU_ON call;
    
     - the "suspend finisher", entered upon resumption from a previous
       PSCI CPU_SUSPEND call.
    
    The appropriate warm reset entry point used to be programmed into the
    mailboxes by the power management hooks.
    
    However, it is not required to provide this information to the PSCI
    entry point code, as it can figure it out by itself. By querying affinity
    info state, a core is able to determine on which execution path it is.
    If the state is ON_PENDING then it means it's been turned on else
    it is resuming from suspend.
    
    This patch unifies the 2 warm reset entry points into a single one:
    psci_entrypoint(). The patch also implements the necessary logic
    to distinguish between the 2 types of warm resets in the power up
    finisher.
    
    The plat_setup_psci_ops() API now takes the
    secure entry point as an additional parameter to enable the platforms
    to configure their mailbox. The platform hooks `pwr_domain_on`
    and `pwr_domain_suspend` no longer take secure entry point as
    a parameter.
    
    Change-Id: I7d1c93787b54213aefdbc046b8cd66a555dfbfd9
    eb975f52
psci_suspend.c 9.37 KB