All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: Nishanth Menon <nm@ti.com>
Cc: "linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	linux-omap <linux-omap@vger.kernel.org>
Subject: Re: [PATCH 05/12] ARM: OMAP2+: Remove legacy PM init
Date: Tue, 26 Nov 2013 15:33:35 -0800	[thread overview]
Message-ID: <20131126233335.GS26766@atomide.com> (raw)
In-Reply-To: <CAGo_u6pwOdizyxD8Hy_znQHG0Spk-UTOKYxfj30UMxi7=cUbtw@mail.gmail.com>

* Nishanth Menon <nm@ti.com> [131126 14:14]:
> On Mon, Nov 25, 2013 at 6:14 PM, Tony Lindgren <tony@atomide.com> wrote:
> > This is no longer needed when booted with device tree.
> [...]
> >  static inline void omap_init_cpufreq(void)
> >  {
> >         struct platform_device_info devinfo = { };
> >
> > -       if (!of_have_populated_dt())
> > -               devinfo.name = "omap-cpufreq";
> > -       else
> > -               devinfo.name = "cpufreq-cpu0";
> > +       devinfo.name = "cpufreq-cpu0";
> 
> struct platform_device_info devinfo = { .name = "cpufreq-cpu0" };
> 
> otherwise, ok with the change.

OK thanks, updated patch below.

Regards,

Tony


From: Tony Lindgren <tony@atomide.com>
Date: Mon, 25 Nov 2013 11:37:25 -0800
Subject: [PATCH] ARM: OMAP2+: Remove legacy PM init

This is no longer needed when booted with device tree.

Signed-off-by: Tony Lindgren <tony@atomide.com>

--- a/arch/arm/mach-omap2/pm.c
+++ b/arch/arm/mach-omap2/pm.c
@@ -30,7 +30,6 @@
 #include "powerdomain.h"
 #include "clockdomain.h"
 #include "pm.h"
-#include "twl-common.h"
 
 /*
  * omap_pm_suspend: points to a function that does the SoC-specific
@@ -70,42 +69,6 @@ void omap_pm_get_oscillator(u32 *tstart, u32 *tshut)
 }
 #endif
 
-static int __init _init_omap_device(char *name)
-{
-	struct omap_hwmod *oh;
-	struct platform_device *pdev;
-
-	oh = omap_hwmod_lookup(name);
-	if (WARN(!oh, "%s: could not find omap_hwmod for %s\n",
-		 __func__, name))
-		return -ENODEV;
-
-	pdev = omap_device_build(oh->name, 0, oh, NULL, 0);
-	if (WARN(IS_ERR(pdev), "%s: could not build omap_device for %s\n",
-		 __func__, name))
-		return -ENODEV;
-
-	return 0;
-}
-
-/*
- * Build omap_devices for processors and bus.
- */
-static void __init omap2_init_processor_devices(void)
-{
-	_init_omap_device("mpu");
-	if (omap3_has_iva())
-		_init_omap_device("iva");
-
-	if (cpu_is_omap44xx()) {
-		_init_omap_device("l3_main_1");
-		_init_omap_device("dsp");
-		_init_omap_device("iva");
-	} else {
-		_init_omap_device("l3_main");
-	}
-}
-
 int __init omap_pm_clkdms_setup(struct clockdomain *clkdm, void *unused)
 {
 	/* XXX The usecount test is racy */
@@ -118,84 +81,6 @@ int __init omap_pm_clkdms_setup(struct clockdomain *clkdm, void *unused)
 	return 0;
 }
 
-/*
- * This API is to be called during init to set the various voltage
- * domains to the voltage as per the opp table. Typically we boot up
- * at the nominal voltage. So this function finds out the rate of
- * the clock associated with the voltage domain, finds out the correct
- * opp entry and sets the voltage domain to the voltage specified
- * in the opp entry
- */
-static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name,
-					 const char *oh_name)
-{
-	struct voltagedomain *voltdm;
-	struct clk *clk;
-	struct dev_pm_opp *opp;
-	unsigned long freq, bootup_volt;
-	struct device *dev;
-
-	if (!vdd_name || !clk_name || !oh_name) {
-		pr_err("%s: invalid parameters\n", __func__);
-		goto exit;
-	}
-
-	if (!strncmp(oh_name, "mpu", 3))
-		/* 
-		 * All current OMAPs share voltage rail and clock
-		 * source, so CPU0 is used to represent the MPU-SS.
-		 */
-		dev = get_cpu_device(0);
-	else
-		dev = omap_device_get_by_hwmod_name(oh_name);
-
-	if (IS_ERR(dev)) {
-		pr_err("%s: Unable to get dev pointer for hwmod %s\n",
-			__func__, oh_name);
-		goto exit;
-	}
-
-	voltdm = voltdm_lookup(vdd_name);
-	if (!voltdm) {
-		pr_err("%s: unable to get vdd pointer for vdd_%s\n",
-			__func__, vdd_name);
-		goto exit;
-	}
-
-	clk =  clk_get(NULL, clk_name);
-	if (IS_ERR(clk)) {
-		pr_err("%s: unable to get clk %s\n", __func__, clk_name);
-		goto exit;
-	}
-
-	freq = clk_get_rate(clk);
-	clk_put(clk);
-
-	rcu_read_lock();
-	opp = dev_pm_opp_find_freq_ceil(dev, &freq);
-	if (IS_ERR(opp)) {
-		rcu_read_unlock();
-		pr_err("%s: unable to find boot up OPP for vdd_%s\n",
-			__func__, vdd_name);
-		goto exit;
-	}
-
-	bootup_volt = dev_pm_opp_get_voltage(opp);
-	rcu_read_unlock();
-	if (!bootup_volt) {
-		pr_err("%s: unable to find voltage corresponding to the bootup OPP for vdd_%s\n",
-		       __func__, vdd_name);
-		goto exit;
-	}
-
-	voltdm_scale(voltdm, bootup_volt);
-	return 0;
-
-exit:
-	pr_err("%s: unable to set vdd_%s\n", __func__, vdd_name);
-	return -EINVAL;
-}
-
 #ifdef CONFIG_SUSPEND
 static int omap_pm_enter(suspend_state_t suspend_state)
 {
@@ -245,40 +130,17 @@ static const struct platform_suspend_ops omap_pm_ops = {
 
 #endif /* CONFIG_SUSPEND */
 
-static void __init omap3_init_voltages(void)
-{
-	if (!cpu_is_omap34xx())
-		return;
-
-	omap2_set_init_voltage("mpu_iva", "dpll1_ck", "mpu");
-	omap2_set_init_voltage("core", "l3_ick", "l3_main");
-}
-
-static void __init omap4_init_voltages(void)
-{
-	if (!cpu_is_omap44xx())
-		return;
-
-	omap2_set_init_voltage("mpu", "dpll_mpu_ck", "mpu");
-	omap2_set_init_voltage("core", "l3_div_ck", "l3_main_1");
-	omap2_set_init_voltage("iva", "dpll_iva_m5x2_ck", "iva");
-}
-
 static inline void omap_init_cpufreq(void)
 {
-	struct platform_device_info devinfo = { };
+	struct platform_device_info devinfo = {
+		.name = "cpufreq-cpu0",
+	};
 
-	if (!of_have_populated_dt())
-		devinfo.name = "omap-cpufreq";
-	else
-		devinfo.name = "cpufreq-cpu0";
 	platform_device_register_full(&devinfo);
 }
 
 static int __init omap2_common_pm_init(void)
 {
-	if (!of_have_populated_dt())
-		omap2_init_processor_devices();
 	omap_pm_if_init();
 
 	return 0;
@@ -287,26 +149,6 @@ omap_postcore_initcall(omap2_common_pm_init);
 
 int __init omap2_common_pm_late_init(void)
 {
-	/*
-	 * In the case of DT, the PMIC and SR initialization will be done using
-	 * a completely different mechanism.
-	 * Disable this part if a DT blob is available.
-	 */
-	if (!of_have_populated_dt()) {
-
-		/* Init the voltage layer */
-		omap_pmic_late_init();
-		omap_voltage_late_init();
-
-		/* Initialize the voltages */
-		omap3_init_voltages();
-		omap4_init_voltages();
-
-		/* Smartreflex device init */
-		omap_devinit_smartreflex();
-
-	}
-
 	/* cpufreq dummy device instantiation */
 	omap_init_cpufreq();
 

WARNING: multiple messages have this Message-ID (diff)
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 05/12] ARM: OMAP2+: Remove legacy PM init
Date: Tue, 26 Nov 2013 15:33:35 -0800	[thread overview]
Message-ID: <20131126233335.GS26766@atomide.com> (raw)
In-Reply-To: <CAGo_u6pwOdizyxD8Hy_znQHG0Spk-UTOKYxfj30UMxi7=cUbtw@mail.gmail.com>

* Nishanth Menon <nm@ti.com> [131126 14:14]:
> On Mon, Nov 25, 2013 at 6:14 PM, Tony Lindgren <tony@atomide.com> wrote:
> > This is no longer needed when booted with device tree.
> [...]
> >  static inline void omap_init_cpufreq(void)
> >  {
> >         struct platform_device_info devinfo = { };
> >
> > -       if (!of_have_populated_dt())
> > -               devinfo.name = "omap-cpufreq";
> > -       else
> > -               devinfo.name = "cpufreq-cpu0";
> > +       devinfo.name = "cpufreq-cpu0";
> 
> struct platform_device_info devinfo = { .name = "cpufreq-cpu0" };
> 
> otherwise, ok with the change.

OK thanks, updated patch below.

Regards,

Tony


From: Tony Lindgren <tony@atomide.com>
Date: Mon, 25 Nov 2013 11:37:25 -0800
Subject: [PATCH] ARM: OMAP2+: Remove legacy PM init

This is no longer needed when booted with device tree.

Signed-off-by: Tony Lindgren <tony@atomide.com>

--- a/arch/arm/mach-omap2/pm.c
+++ b/arch/arm/mach-omap2/pm.c
@@ -30,7 +30,6 @@
 #include "powerdomain.h"
 #include "clockdomain.h"
 #include "pm.h"
-#include "twl-common.h"
 
 /*
  * omap_pm_suspend: points to a function that does the SoC-specific
@@ -70,42 +69,6 @@ void omap_pm_get_oscillator(u32 *tstart, u32 *tshut)
 }
 #endif
 
-static int __init _init_omap_device(char *name)
-{
-	struct omap_hwmod *oh;
-	struct platform_device *pdev;
-
-	oh = omap_hwmod_lookup(name);
-	if (WARN(!oh, "%s: could not find omap_hwmod for %s\n",
-		 __func__, name))
-		return -ENODEV;
-
-	pdev = omap_device_build(oh->name, 0, oh, NULL, 0);
-	if (WARN(IS_ERR(pdev), "%s: could not build omap_device for %s\n",
-		 __func__, name))
-		return -ENODEV;
-
-	return 0;
-}
-
-/*
- * Build omap_devices for processors and bus.
- */
-static void __init omap2_init_processor_devices(void)
-{
-	_init_omap_device("mpu");
-	if (omap3_has_iva())
-		_init_omap_device("iva");
-
-	if (cpu_is_omap44xx()) {
-		_init_omap_device("l3_main_1");
-		_init_omap_device("dsp");
-		_init_omap_device("iva");
-	} else {
-		_init_omap_device("l3_main");
-	}
-}
-
 int __init omap_pm_clkdms_setup(struct clockdomain *clkdm, void *unused)
 {
 	/* XXX The usecount test is racy */
@@ -118,84 +81,6 @@ int __init omap_pm_clkdms_setup(struct clockdomain *clkdm, void *unused)
 	return 0;
 }
 
-/*
- * This API is to be called during init to set the various voltage
- * domains to the voltage as per the opp table. Typically we boot up
- * at the nominal voltage. So this function finds out the rate of
- * the clock associated with the voltage domain, finds out the correct
- * opp entry and sets the voltage domain to the voltage specified
- * in the opp entry
- */
-static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name,
-					 const char *oh_name)
-{
-	struct voltagedomain *voltdm;
-	struct clk *clk;
-	struct dev_pm_opp *opp;
-	unsigned long freq, bootup_volt;
-	struct device *dev;
-
-	if (!vdd_name || !clk_name || !oh_name) {
-		pr_err("%s: invalid parameters\n", __func__);
-		goto exit;
-	}
-
-	if (!strncmp(oh_name, "mpu", 3))
-		/* 
-		 * All current OMAPs share voltage rail and clock
-		 * source, so CPU0 is used to represent the MPU-SS.
-		 */
-		dev = get_cpu_device(0);
-	else
-		dev = omap_device_get_by_hwmod_name(oh_name);
-
-	if (IS_ERR(dev)) {
-		pr_err("%s: Unable to get dev pointer for hwmod %s\n",
-			__func__, oh_name);
-		goto exit;
-	}
-
-	voltdm = voltdm_lookup(vdd_name);
-	if (!voltdm) {
-		pr_err("%s: unable to get vdd pointer for vdd_%s\n",
-			__func__, vdd_name);
-		goto exit;
-	}
-
-	clk =  clk_get(NULL, clk_name);
-	if (IS_ERR(clk)) {
-		pr_err("%s: unable to get clk %s\n", __func__, clk_name);
-		goto exit;
-	}
-
-	freq = clk_get_rate(clk);
-	clk_put(clk);
-
-	rcu_read_lock();
-	opp = dev_pm_opp_find_freq_ceil(dev, &freq);
-	if (IS_ERR(opp)) {
-		rcu_read_unlock();
-		pr_err("%s: unable to find boot up OPP for vdd_%s\n",
-			__func__, vdd_name);
-		goto exit;
-	}
-
-	bootup_volt = dev_pm_opp_get_voltage(opp);
-	rcu_read_unlock();
-	if (!bootup_volt) {
-		pr_err("%s: unable to find voltage corresponding to the bootup OPP for vdd_%s\n",
-		       __func__, vdd_name);
-		goto exit;
-	}
-
-	voltdm_scale(voltdm, bootup_volt);
-	return 0;
-
-exit:
-	pr_err("%s: unable to set vdd_%s\n", __func__, vdd_name);
-	return -EINVAL;
-}
-
 #ifdef CONFIG_SUSPEND
 static int omap_pm_enter(suspend_state_t suspend_state)
 {
@@ -245,40 +130,17 @@ static const struct platform_suspend_ops omap_pm_ops = {
 
 #endif /* CONFIG_SUSPEND */
 
-static void __init omap3_init_voltages(void)
-{
-	if (!cpu_is_omap34xx())
-		return;
-
-	omap2_set_init_voltage("mpu_iva", "dpll1_ck", "mpu");
-	omap2_set_init_voltage("core", "l3_ick", "l3_main");
-}
-
-static void __init omap4_init_voltages(void)
-{
-	if (!cpu_is_omap44xx())
-		return;
-
-	omap2_set_init_voltage("mpu", "dpll_mpu_ck", "mpu");
-	omap2_set_init_voltage("core", "l3_div_ck", "l3_main_1");
-	omap2_set_init_voltage("iva", "dpll_iva_m5x2_ck", "iva");
-}
-
 static inline void omap_init_cpufreq(void)
 {
-	struct platform_device_info devinfo = { };
+	struct platform_device_info devinfo = {
+		.name = "cpufreq-cpu0",
+	};
 
-	if (!of_have_populated_dt())
-		devinfo.name = "omap-cpufreq";
-	else
-		devinfo.name = "cpufreq-cpu0";
 	platform_device_register_full(&devinfo);
 }
 
 static int __init omap2_common_pm_init(void)
 {
-	if (!of_have_populated_dt())
-		omap2_init_processor_devices();
 	omap_pm_if_init();
 
 	return 0;
@@ -287,26 +149,6 @@ omap_postcore_initcall(omap2_common_pm_init);
 
 int __init omap2_common_pm_late_init(void)
 {
-	/*
-	 * In the case of DT, the PMIC and SR initialization will be done using
-	 * a completely different mechanism.
-	 * Disable this part if a DT blob is available.
-	 */
-	if (!of_have_populated_dt()) {
-
-		/* Init the voltage layer */
-		omap_pmic_late_init();
-		omap_voltage_late_init();
-
-		/* Initialize the voltages */
-		omap3_init_voltages();
-		omap4_init_voltages();
-
-		/* Smartreflex device init */
-		omap_devinit_smartreflex();
-
-	}
-
 	/* cpufreq dummy device instantiation */
 	omap_init_cpufreq();
 

  reply	other threads:[~2013-11-26 23:33 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-26  0:14 [PATCH 00/12] Drop omap3 board files and make mach-omap2 boot in DT only mode Tony Lindgren
2013-11-26  0:14 ` Tony Lindgren
2013-11-26  0:14 ` [PATCH 02/12] ARM: OMAP2+: Remove legacy serial.c Tony Lindgren
2013-11-26  0:14   ` Tony Lindgren
2013-11-26  0:14 ` [PATCH 03/12] ARM: OMAP2+: Remove legacy hsmmc.c Tony Lindgren
2013-11-26  0:14   ` Tony Lindgren
2013-11-26  0:14 ` [PATCH 04/12] ARM: OMAP2+: Remove legacy i2c.c platform init code Tony Lindgren
2013-11-26  0:14   ` Tony Lindgren
2013-11-26  0:14 ` [PATCH 05/12] ARM: OMAP2+: Remove legacy PM init Tony Lindgren
2013-11-26  0:14   ` Tony Lindgren
2013-11-26 22:13   ` Nishanth Menon
2013-11-26 22:13     ` Nishanth Menon
2013-11-26 23:33     ` Tony Lindgren [this message]
2013-11-26 23:33       ` Tony Lindgren
2013-11-27  6:30       ` Nishanth Menon
2013-11-27  6:30         ` Nishanth Menon
2013-11-26  0:14 ` [PATCH 06/12] ARM: OMAP2+: Remove legacy twl4030 platform init code Tony Lindgren
2013-11-26  0:14   ` Tony Lindgren
2013-11-26  0:14 ` [PATCH 07/12] ARM: OMAP2+: Remove legacy usb-host.c " Tony Lindgren
2013-11-26  0:14   ` Tony Lindgren
2013-11-26  0:14 ` [PATCH 08/12] ARM: OMAP2+: Remove legacy muxing for usb-tusb6010.c Tony Lindgren
2013-11-26  0:14   ` Tony Lindgren
2013-11-26  0:14 ` [PATCH 09/12] ARM: OMAP2+: Remove legacy usb-musb.c platform init code Tony Lindgren
2013-11-26  0:14   ` Tony Lindgren
2013-11-26  0:14 ` [PATCH 10/12] ARM: OMAP2+: Remove legacy hwmod mux code Tony Lindgren
2013-11-26  0:14   ` Tony Lindgren
2013-11-26  0:14 ` [PATCH 12/12] ARM: OMAP2+: Remove legacy data from hwmod for omap3 Tony Lindgren
2013-11-26  0:14   ` Tony Lindgren
2013-11-26  1:09 ` [PATCH 00/12] Drop omap3 board files and make mach-omap2 boot in DT only mode Felipe Balbi
2013-11-26  1:09   ` Felipe Balbi
2013-11-26  1:28   ` Tony Lindgren
2013-11-26  1:28     ` Tony Lindgren
2013-11-26  1:17 ` [PATCH 01/12 diet] ARM: OMAP2+: Remove legacy omap3 board-*.c files and make mach-omap2 DT only for booting Tony Lindgren
2013-11-26  1:17   ` Tony Lindgren
2013-11-28 23:57   ` Grazvydas Ignotas
2013-11-28 23:57     ` Grazvydas Ignotas
2013-11-29  9:00     ` Javier Martinez Canillas
2013-11-29  9:00       ` Javier Martinez Canillas
2013-11-29 17:07       ` Tony Lindgren
2013-11-29 17:07         ` Tony Lindgren
2013-11-26  1:26 ` [PATCH 11/12 diet] ARM: OMAP2+: Remove legacy mux code Tony Lindgren
2013-11-26  1:26   ` Tony Lindgren
2013-11-26 23:40   ` Tony Lindgren
2013-11-26 23:40     ` Tony Lindgren
2013-11-26 12:44 ` [PATCH 00/12] Drop omap3 board files and make mach-omap2 boot in DT only mode Florian Vaussard
2013-11-26 12:44   ` Florian Vaussard
2013-11-26 14:25   ` Sebastian Reichel
2013-11-26 14:25     ` Sebastian Reichel
2013-11-26 16:25     ` Tony Lindgren
2013-11-26 16:25       ` Tony Lindgren
2013-11-29 19:12 ` Javier Martinez Canillas
2013-11-29 19:12   ` Javier Martinez Canillas
2013-11-30 17:29   ` Tony Lindgren
2013-11-30 17:29     ` Tony Lindgren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131126233335.GS26766@atomide.com \
    --to=tony@atomide.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=nm@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.