• Nishanth Menon's avatar
    PM / OPP: Remove cpufreq wrapper dependency on internal data organization · 0f5c890e
    Nishanth Menon authored
    CPUFREQ custom functions for OPP (Operating Performance Points)
    currently exist inside the OPP library. These custom functions currently
    depend on internal data structures to pick up OPP information to create
    the cpufreq table.  For example, the cpufreq table is created precisely
    in the same order of how OPP entries are stored inside the list implementation.
    
    This kind of tight interdependency is purely artificial since the same
    functionality can be achieved using the generic OPP functions
    meant to do the same. This interdependency also limits the independent
    modification of cpufreq and OPP library.
    
    So use the generic dev_pm_opp_find_freq_ceil function that achieves the
    table organization as we currently use.
    
    As a result of this, we dont need to use the internal device_opp
    structure anymore, and we hence we can switch over to rcu lock instead
    of the mutex holding the internal list lock.
    
    This breaking of dependency on internal data structure imposes no change
    to usage of these.
    
    NOTE: This change is a precursor to moving this cpufreq specific logic
    out of the generic library into cpufreq.
    
    Cc: Kevin Hilman <khilman@deeprootsystems.com>
    Signed-off-by: default avatarNishanth Menon <nm@ti.com>
    Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    0f5c890e
opp.c 22.5 KB