Hello Viresh, Thanks for providing a proposal. On Wed, Nov 26, 2014 at 11:22:55AM +0530, Viresh Kumar wrote: > Hi Rafael/Eduardo, > > Currently there is no callback for cpufreq drivers which is called once the > policy is ready to be used. There are some requirements where such a callback is > required. > > One of them is registering a cooling device with the help of > of_cpufreq_cooling_register(). This routine tries to get 'struct cpufreq_policy' > for CPUs which isn't yet initialed at the time ->init() is called and so we face > issues while registering the cooling device. > > Because we can't register cooling device from ->init(), we need a callback that > is called after the policy is ready to be used and hence ->usable() callback. > > The first patch fixes few formatting issues, so that the third patch doesn't > throw any checkpatch warnings. Second one fixes a potential bug in cpufreq-dt > driver. Third one introduces ->usable() callback which will be used in the > fourth patch. > > Last three are fixes for cooling core, which may be applied separately by > Eduardo if he wants. Sent them in this series as they were sort of connected > with cpufreq in general. > > Let me know if it still doesn't work properly. For the series, the last three patches somehow breaks things. I didn't not investigate the reason now, because, well, I think we should take one thing at a time. For the patches 1 to 4, I tried then and they do the trick. Now the sequencing is correct between cpufreq-dt and cpu cooling. That means I can also improve the thermal code by accepting the following patches: https://patchwork.kernel.org/patch/5326991/ https://patchwork.kernel.org/patch/5387161/ on top of the four first patches. Cheers, Eduardo Valentin > > -- > viresh > > Viresh Kumar (7): > cpufreq: Fix formatting issues in 'struct cpufreq_driver' > cpufreq-dt: pass 'policy->related_cpus' to > of_cpufreq_cooling_register() > cpufreq: Introduce ->usable() callback for cpufreq drivers > cpufreq-dt: register cooling device from ->usable() callback > cpu_cooling: Don't match min/max frequencies for all CPUs on cooling > register > cpu_cooling: don't iterate over all allowed_cpus to update cpufreq > policy > cpu_cooling: No need to check is_cpufreq_valid() > > drivers/cpufreq/cpufreq-dt.c | 51 +++++++++++++++++++++++++--------------- > drivers/cpufreq/cpufreq.c | 5 ++++ > drivers/thermal/cpu_cooling.c | 44 ++++------------------------------- > include/linux/cpufreq.h | 54 +++++++++++++++++++++++-------------------- > 4 files changed, 70 insertions(+), 84 deletions(-) > > -- > 2.0.3.693.g996b0fd >