Hi Guys,
Resending this again because: - opp-hz is now 64 bit long and so that required a binding update. - There is another 4 patch series that as updating turbo OPP support, along with updates to cpufreq core and cpufreq-dt driver. - A minor bug-fix in V2 4/11, which caused false positive for duplicate OPPs in some cases.
Tested this on dual-core exynos board with the driver inbuilt as well as a module. Tried multiple insertion/removals of the module. Have tested cpufreq-dt driver with both old and new bindings.
Also tried by sending some dummy OPPs that contained opp-hz greater than what can be captured by u32, to test the u64 updates.
----------x-----------------x-------------
This adds code to support operating-points-v2 bindings. Not everything is supported yet, but most of the basic stuff is.
Pushed here as well for reference: ssh://git@git.linaro.org/people/viresh.kumar/linux.git opp/v2
V2->V3: - Update to opp-hz binding to make it pass u64 value instead of 32 bit value. This is done to support clock rates greater than 4 GHz. - Merged two inter-related series, opp-v2 and turbo mode updates. - Fixed 4/11 from opp-v2 series, which cased false positive for duplicate OPPs in some cases. - Add a separate comment in _opp_add_dynamic() (5/16), to clearly specify that we pass &dev_opp->opp_list to list_for_each_entry_rcu() and not pass 'head' which contains the same value. Because head will get modified by the code and that may result in an infinite loop. - Accumulate more RBY tags.
V1->V2: - 1/11 is a new patch which moves the bindings file into opp specific folder. - 'opp-suspend' binding got updated and is part of individual OPPs now, instead of a phandle present in the opp table. - Some more minor reformatting as suggested by Bartlomiej and Stephen, they were already posted as reply to earlier patches in V1.
Bartlomiej Zolnierkiewicz (2): PM / OPP: add dev_pm_opp_is_turbo() helper cpufreq: Update boost flag while initializing freq table from OPPs
Viresh Kumar (14): PM / OPP: Update bindings to make opp-hz a 64 bit value PM / OPP: Create a directory for opp bindings PM / OPP: Relocate few routines PM / OPP: Create _remove_device_opp() for freeing dev_opp PM / OPP: Allocate dev_opp from _add_device_opp() PM / OPP: Break _opp_add_dynamic() into smaller functions PM / OPP: Add support to parse "operating-points-v2" bindings PM / OPP: Add clock-latency-ns support PM / OPP: Add OPP sharing information to OPP library PM / OPP: Add support for opp-suspend PM / OPP: Add helpers for initializing CPU OPPs cpufreq: Allow drivers to enable boost support after registering driver cpufreq: dt: Add support for operating-points-v2 bindings cpufreq: dt: Add support for turbo/boost mode
.../devicetree/bindings/power/{ => opp}/opp.txt | 40 +- drivers/base/power/opp.c | 1084 ++++++++++++++++---- drivers/cpufreq/cpufreq-dt.c | 64 +- drivers/cpufreq/cpufreq.c | 68 +- drivers/cpufreq/cpufreq_opp.c | 4 + drivers/cpufreq/freq_table.c | 15 + include/linux/cpufreq.h | 12 + include/linux/pm_opp.h | 36 + 8 files changed, 1049 insertions(+), 274 deletions(-) rename Documentation/devicetree/bindings/power/{ => opp}/opp.txt (93%)