• Anson Huang's avatar
    imx: make sure GIC redistributor is awake before initialization · e655fefc
    Anson Huang authored
    
    
    GICR_WAKER.ProcessorSleep can only be set to zero when:
    — GICR_WAKER.Sleep bit[0] == 0.
    — GICR_WAKER.Quiescent bit[31] == 0.
    
    On some platforms, when system reboot with GIC in sleep
    mode but with power ON, such as on NXP's i.MX8QM, Linux
    kernel enters suspend but could be requested to reboot,
    and GIC is in sleep mode and it is inside a power domain
    which is ON in this scenario, when CPU reset, the GIC
    driver trys to set CORE's redistributor interface to awake,
    with GICR_WAKER.Sleep bit[0] and GICR_WAKER.Quiescent bit[31]
    both set, the ProcessorSleep bit[1] will never be clear
    and cause system hang.
    
    This patch makes sure GICR_WAKER.Sleep bit[0] and
    GICR_WAKER.Quiescent bit[31] are both zeor before clearing
    ProcessorSleep bit[1].
    Signed-off-by: default avatarAnson Huang <Anson.Huang@nxp.com>
    e655fefc
plat_imx8_gic.c 2.94 KB