• Ulf Hansson's avatar
    cpuidle: psci: Add support for PM domains by using genpd · a65a397f
    Ulf Hansson authored
    When the hierarchical CPU topology layout is used in DT and the PSCI OSI
    mode is supported by the PSCI FW, let's initialize a corresponding PM
    domain topology by using genpd. This enables a CPU and a group of CPUs,
    when attached to the topology, to be power-managed accordingly.
    
    To trigger the attempt to initialize the genpd data structures let's use a
    subsys_initcall, which should be early enough to allow CPUs, but also other
    devices to be attached.
    
    The initialization consists of parsing the PSCI OF node for the topology
    and the "domain idle states" DT bindings. In case the idle states are
    compatible with "domain-idle-state", the initialized genpd becomes
    responsible of selecting an idle state for the PM domain, via assigning it
    a genpd governor.
    
    Note that, a successful initialization of the genpd data structures, is
    followed by a call to psci_set_osi_mode(), as to try to enable the OSI mode
    in the PSCI FW. In case this fails, we fall back into a degraded mode
    rather than bailing out and returning error codes.
    Co-developed-by: default avatarLina Iyer <lina.iyer@linaro.org>
    Signed-off-by: default avatarLina Iyer <lina.iyer@linaro.org>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    Reviewed-by: default avatarSudeep Holla <sudeep.holla@arm.com>
    Acked-by: default avatarRafael J. Wysocki <rafael@kernel.org>
    a65a397f
cpuidle-psci-domain.c 6.53 KB