Skip to content
Snippets Groups Projects
  1. Jul 29, 2020
  2. Jan 02, 2020
    • 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
    • Ulf Hansson's avatar
      cpuidle: psci: Add a helper to attach a CPU to its PM domain · a5e0454c
      Ulf Hansson authored
      
      Introduce a PSCI DT helper function, psci_dt_attach_cpu(), which takes a
      CPU number as an in-parameter and tries to attach the CPU's struct device
      to its corresponding PM domain.
      
      Let's makes use of dev_pm_domain_attach_by_name(), as it allows us to
      specify "psci" as the "name" of the PM domain to attach to. Additionally,
      let's also prepare the attached device to be power managed via runtime PM.
      
      Note that, the implementation of the new helper function is in a new
      separate c-file, which may seems a bit too much at this point. However,
      subsequent changes that implements the remaining part of the PM domain
      support for cpuidle-psci, helps to justify this split.
      
      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>
      a5e0454c
Loading