From: Nishanth Menon <nm@ti.com>
To: Tony Lindgren <tony@atomide.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: Wed, 27 Nov 2013 00:30:08 -0600 [thread overview]
Message-ID: <52959170.9040207@ti.com> (raw)
In-Reply-To: <20131126233335.GS26766@atomide.com>
On 11/26/2013 05:33 PM, Tony Lindgren wrote:
> * 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.
This looks good to me, with this, I think we can drop
drivers/cpufreq/omap-cpufreq.c - bunch of pm code as well could be
slated to be dropped as well.
>
> 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();
>
> --
--
Regards,
Nishanth Menon
WARNING: multiple messages have this Message-ID (diff)
From: nm@ti.com (Nishanth Menon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 05/12] ARM: OMAP2+: Remove legacy PM init
Date: Wed, 27 Nov 2013 00:30:08 -0600 [thread overview]
Message-ID: <52959170.9040207@ti.com> (raw)
In-Reply-To: <20131126233335.GS26766@atomide.com>
On 11/26/2013 05:33 PM, Tony Lindgren wrote:
> * 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.
This looks good to me, with this, I think we can drop
drivers/cpufreq/omap-cpufreq.c - bunch of pm code as well could be
slated to be dropped as well.
>
> 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();
>
> --
--
Regards,
Nishanth Menon
next prev parent reply other threads:[~2013-11-27 6:30 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
2013-11-26 23:33 ` Tony Lindgren
2013-11-27 6:30 ` Nishanth Menon [this message]
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=52959170.9040207@ti.com \
--to=nm@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=tony@atomide.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.