From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nishanth Menon Subject: Re: [PATCH] cpufreq-cpu0: support Device Tree initialisation Date: Fri, 26 Jul 2013 07:20:26 -0500 Message-ID: <51F2698A.5020904@ti.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: cpufreq-owner@vger.kernel.org To: Guennadi Liakhovetski Cc: linux-sh@vger.kernel.org, Magnus Damm , cpufreq@vger.kernel.org, linux-pm@vger.kernel.org, "Rafael J. Wysocki" , Shawn Guo List-Id: linux-pm@vger.kernel.org On 07/26/2013 05:19 AM, Guennadi Liakhovetski wrote: > Currently the cpufreq-cpu0 driver doesn't support Device Tree probing. To > support it we add an OF match table to it. In principle this alone is > enough to get the driver working with DT devices, but then the driver > rewrites the .of_node field of the probed device with a different one, > which isn't clean. To avoid this we use the cpu0 system device for clock > and OPP handling, similar to what the arm_big_little CPUFreq driver does. > This is also less intrusive, since the cpu0 device's .of_node field is > initially NULL, since this isn't a DT device. > > Signed-off-by: Guennadi Liakhovetski > --- > drivers/cpufreq/cpufreq-cpu0.c | 14 +++++++++++--- > 1 files changed, 11 insertions(+), 3 deletions(-) > > diff --git a/drivers/cpufreq/cpufreq-cpu0.c b/drivers/cpufreq/cpufreq-cpu0.c > index ad1fde2..d2ad7b8 100644 > --- a/drivers/cpufreq/cpufreq-cpu0.c > +++ b/drivers/cpufreq/cpufreq-cpu0.c > @@ -12,6 +12,7 @@ > #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt > > #include > +#include > #include > #include > #include > @@ -194,7 +195,7 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev) > goto out_put_parent; > } > > - cpu_dev = &pdev->dev; > + cpu_dev = get_cpu_device(0); > cpu_dev->of_node = np; > > cpu_reg = devm_regulator_get(cpu_dev, "cpu0"); > @@ -289,10 +290,17 @@ static int cpu0_cpufreq_remove(struct platform_device *pdev) > return 0; > } > > +static const struct of_device_id cpu0_cpufreq_of_match[] = { > + {.compatible = "cpufreq-cpu0"}, > + {} > +}; > +MODULE_DEVICE_TABLE(of, cpu0_cpufreq_of_match); > + > static struct platform_driver cpu0_cpufreq_platdrv = { > .driver = { > - .name = "cpufreq-cpu0", > - .owner = THIS_MODULE, > + .name = "cpufreq-cpu0", > + .of_match_table = cpu0_cpufreq_of_match, > + .owner = THIS_MODULE, > }, > .probe = cpu0_cpufreq_probe, > .remove = cpu0_cpufreq_remove, > Did we not go down this approach[1] previously? Could you explain why this path is different now? [1] http://marc.info/?t=136304320700004&r=1&w=2 -- Regards, Nishanth Menon