• Danny Lin's avatar
    arm64: dts: qcom: sm8150: Add support for deep CPU cluster idle · b2e3f897
    Danny Lin authored
    This commit adds support for deep idling of the entire unified DynamIQ
    CPU cluster on sm8150. In this idle state, the LLCC (Last-Level Cache
    Controller) is powered off and the AOP (Always-On Processor) enters a
    low-power sleep state.
    
    I'm not sure what the per-CPU 0x400000f4 idle state previously
    contributed by Qualcomm as the "cluster sleep" state is, but the
    downstream kernel has no such state. The real deep cluster idle state
    is 0x41000c244, composed of:
    
        Cluster idle state: (0xc24) << 4 = 0xc240
        Is reset state: 1 << 30 = 0x40000000
        Affinity level: 1 << 24 = 0x1000000
        CPU idle state: 0x4 (power collapse)
    
    This setup can be replicated with the PSCI power domain cpuidle driver,
    which utilizes OSI to enter cluster idle when the last active CPU
    enters idle.
    
    The cluster idle state cannot be used as a plain cpuidle state because
    it requires that all CPUs in the cluster are idling.
    Reviewed-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: default avatarDanny Lin <danny@kdrag0n.dev>
    Link: https://lore.kernel.org/r/20210105201000.913183-1-danny@kdrag0n.devSigned-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
    b2e3f897
sm8150.dtsi 66.5 KB