From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nishanth Menon Subject: [PATCH V2 8/8] cpufreq: OMAP: donot allow to be used with device tree Date: Tue, 19 Mar 2013 12:53:10 -0500 Message-ID: <1363715590-5131-9-git-send-email-nm@ti.com> References: <1363715590-5131-1-git-send-email-nm@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: In-Reply-To: <1363715590-5131-1-git-send-email-nm@ti.com> Sender: cpufreq-owner@vger.kernel.org To: linux-omap@vger.kernel.org Cc: Nishanth Menon , Kevin Hilman , Jon Hunter , =?UTF-8?q?Beno=C3=AEt=20Cousson?= , Santosh Shilimkar , Shawn Guo , Keerthy , devicetree-discuss@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, cpufreq@vger.kernel.org, linux-pm@vger.kernel.org List-Id: devicetree@vger.kernel.org We now use Soc generic cpufreq-cpu0 driver using DT entries. However to allow cpufreq-cpu0 and omap-cpufreq drivers to co-exist, we need to ensure the following using the same image: 1. With device tree boot, we use cpufreq-cpu0 2. With non device tree boot, we use omap-cpufreq In the case of (1), we will have cpu OPPs and regulator registered as part of the DT, to ensure that omap-cpufreq and cpufreq-cpu0 don't conflict in managing the frequency of the same cpu, we should not permit init to pass in omap-cpufreq. In the case of (2), we will not have the cpufreq-cpu0 device, hence only omap-cpufreq will be active. So, to acommodate both these usage conditions, we fail init of omap-cpufreq when we boot with device tree. Cc: Kevin Hilman Cc: Jon Hunter Cc: "Beno=C3=AEt Cousson" Cc: Santosh Shilimkar Cc: Shawn Guo Cc: Keerthy Cc: linux-omap@vger.kernel.org Cc: devicetree-discuss@lists.ozlabs.org Cc: linux-arm-kernel@lists.infradead.org Cc: cpufreq@vger.kernel.org Cc: linux-pm@vger.kernel.org Signed-off-by: Nishanth Menon --- Changes in V2: - donot remove support for omap-cpufreq in non-DT boot - little more verbose commit log V1: https://patchwork.kernel.org/patch/2273641/ drivers/cpufreq/omap-cpufreq.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpuf= req.c index 9128c07..9382ed0 100644 --- a/drivers/cpufreq/omap-cpufreq.c +++ b/drivers/cpufreq/omap-cpufreq.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -174,6 +175,19 @@ static inline void freq_table_free(void) static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy) { int result =3D 0; + struct device_node *np; + + /* + * If we have a device tree node describing OPPs, + * we will NOT permit usage of omap-cpufreq driver. + * use cpufreq-cpu0 driver to manage. + */ + if (of_have_populated_dt()) { + for_each_child_of_node(of_find_node_by_path("/cpus"), np) { + if (of_get_property(np, "operating-points", NULL)) + return -EPERM; + } + } =20 mpu_clk =3D clk_get(NULL, "cpufreq_ck"); if (IS_ERR(mpu_clk)) --=20 1.7.9.5