public inbox for linux-arm-kernel@lists.infradead.org 
 help / color / mirror / Atom feed
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

  reply	other threads:[~2013-11-27  6:30 UTC|newest]

Thread overview: 27+ 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 ` [PATCH 02/12] ARM: OMAP2+: Remove legacy serial.c Tony Lindgren
2013-11-26  0:14 ` [PATCH 03/12] ARM: OMAP2+: Remove legacy hsmmc.c 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 ` [PATCH 05/12] ARM: OMAP2+: Remove legacy PM init Tony Lindgren
2013-11-26 22:13   ` Nishanth Menon
2013-11-26 23:33     ` Tony Lindgren
2013-11-27  6:30       ` Nishanth Menon [this message]
2013-11-26  0:14 ` [PATCH 06/12] ARM: OMAP2+: Remove legacy twl4030 platform init code Tony Lindgren
2013-11-26  0:14 ` [PATCH 07/12] ARM: OMAP2+: Remove legacy usb-host.c " 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 ` [PATCH 09/12] ARM: OMAP2+: Remove legacy usb-musb.c platform init code Tony Lindgren
2013-11-26  0:14 ` [PATCH 10/12] ARM: OMAP2+: Remove legacy hwmod mux code Tony Lindgren
2013-11-26  0:14 ` [PATCH 12/12] ARM: OMAP2+: Remove legacy data from hwmod for omap3 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: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-28 23:57   ` Grazvydas Ignotas
2013-11-29  9:00     ` Javier Martinez Canillas
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 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 14:25   ` Sebastian Reichel
2013-11-26 16:25     ` Tony Lindgren
2013-11-29 19:12 ` Javier Martinez Canillas
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$(echo .)com \
    --cc=linux-arm-kernel@lists$(echo .)infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox