Message ID | 1448348129-46675-1-git-send-email-hongtao.jia@freescale.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Tue, 2015-11-24 at 14:55 +0800, Jia Hongtao wrote: > Register the qoriq cpufreq driver as a cooling device, based on the > thermal device tree framework. When temperature crosses the passive trip > point cpufreq is used to throttle CPUs. > > Signed-off-by: Jia Hongtao <hongtao.jia@freescale.com> > Reviewed-by: Scott Wood <scottwood@freescale.com> When did I add "Reviewed-by" to this? -Scott
On Tue, Nov 24, 2015 at 08:18:17AM -0600, Scott Wood wrote: > On Tue, 2015-11-24 at 14:55 +0800, Jia Hongtao wrote: > > Register the qoriq cpufreq driver as a cooling device, based on the > > thermal device tree framework. When temperature crosses the passive trip > > point cpufreq is used to throttle CPUs. > > > > Signed-off-by: Jia Hongtao <hongtao.jia@freescale.com> > > Reviewed-by: Scott Wood <scottwood@freescale.com> > > When did I add "Reviewed-by" to this? This is typically why I prefer seeing people emailing their reviewed-by and acked-by to the mailing list in reply to the patch itself, instead of getting a patch with all the honors already added. :-/ > > -Scott >
> -----Original Message----- > From: Viresh Kumar [mailto:viresh.kumar@linaro.org] > Sent: Tuesday, November 24, 2015 3:11 PM > To: Jia Hongtao-B38951 > Cc: edubezval@gmail.com; linux-pm@vger.kernel.org; linuxppc- > dev@lists.ozlabs.org; devicetree@vger.kernel.org; Wood Scott-B07421 > Subject: Re: [PATCH] cpufreq: qoriq: Register cooling device based on > device tree > > On 24-11-15, 14:55, Jia Hongtao wrote: > > + /* Register CPU cooling device for QorIQ platform */ > > + for_each_node_with_property(cpu_np, "#cooling-cells") { > > + of_property_read_u32(cpu_np, "reg", &cpu_id); > > + cpufreq_get_policy(&cpu_policy, cpu_id); > > That's not the right way to do it. You already have DT node for the CPU, > look at how it is done from ->ready() callback for cpufreq-dt. > > -- > viresh Thanks. I made a new patch to use ->ready callback for cpu cooling registration. I will send V2 after test. -Hongtao.
diff --git a/drivers/cpufreq/qoriq-cpufreq.c b/drivers/cpufreq/qoriq-cpufreq.c index 4f53fa2..cb1bc3c 100644 --- a/drivers/cpufreq/qoriq-cpufreq.c +++ b/drivers/cpufreq/qoriq-cpufreq.c @@ -12,6 +12,7 @@ #include <linux/clk.h> #include <linux/cpufreq.h> +#include <linux/cpu_cooling.h> #include <linux/errno.h> #include <linux/init.h> #include <linux/kernel.h> @@ -33,6 +34,7 @@ struct cpu_data { struct clk **pclk; struct cpufreq_frequency_table *table; + struct thermal_cooling_device *cdev; }; /* @@ -292,7 +294,11 @@ static const struct of_device_id node_matches[] __initconst = { static int __init qoriq_cpufreq_init(void) { int ret; - struct device_node *np; + struct device_node *np; + struct device_node *cpu_np; + unsigned int cpu_id; + struct cpufreq_policy cpu_policy; + struct cpu_data *cpud; const struct of_device_id *match; const struct soc_data *data; @@ -309,6 +315,22 @@ static int __init qoriq_cpufreq_init(void) return -ENODEV; ret = cpufreq_register_driver(&qoriq_cpufreq_driver); + + /* Register CPU cooling device for QorIQ platform */ + for_each_node_with_property(cpu_np, "#cooling-cells") { + of_property_read_u32(cpu_np, "reg", &cpu_id); + cpufreq_get_policy(&cpu_policy, cpu_id); + + cpud = cpu_policy.driver_data; + cpud->cdev = of_cpufreq_cooling_register(cpu_np, + cpu_policy.related_cpus); + if (IS_ERR(cpud->cdev) && ERR_PTR(cpud->cdev) != -ENOSYS) + pr_err("Failed to register cooling device cpu%d: %ld\n", + cpu_id, PTR_ERR(cpud->cdev)); + } + + of_node_put(cpu_np); + if (!ret) pr_info("Freescale QorIQ CPU frequency scaling driver\n");