• Viresh Kumar's avatar
    PM / Domains: Add support to select performance-state of domains · 42f6284a
    Viresh Kumar authored
    Some platforms have the capability to configure the performance state of
    PM domains. This patch enhances the genpd core to support such
    platforms.
    
    The performance levels (within the genpd core) are identified by
    positive integer values, a lower value represents lower performance
    state.
    
    This patch adds a new genpd API, which is called by user drivers (like
    OPP framework):
    
    - int dev_pm_genpd_set_performance_state(struct device *dev,
    					 unsigned int state);
    
      This updates the performance state constraint of the device on its PM
      domain. On success, the genpd will have its performance state set to a
      value which is >= "state" passed to this routine. The genpd core calls
      the genpd->set_performance_state() callback, if implemented,
      else -ENODEV is returned to the caller.
    
    The PM domain drivers need to implement the following callback if they
    want to support performance states.
    
    - int (*set_performance_state)(struct generic_pm_domain *genpd,
    			       unsigned int state);
    
      This is called internally by the genpd core on several occasions. The
      genpd core passes the genpd pointer and the aggregate of the
      performance states of the devices supported by that genpd to this
      callback. This callback must update the performance state of the genpd
      (in a platform dependent way).
    
    The power domains can avoid supplying above callback, if they don't
    support setting performance-states.
    
    Currently we aren't propagating performance state changes of a subdomain
    to its masters as we don't have hardware that needs it right now. Over
    that, the performance states of subdomain and its masters may not have
    one-to-one mapping and would require additional information. We can get
    back to this once we have hardware that needs it.
    Tested-by: default avatarRajendra Nayak <rnayak@codeaurora.org>
    Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    Acked-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    42f6284a
domain.c 66.6 KB