All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@deeprootsystems.com>
To: linux-omap@vger.kernel.org
Cc: Paul Walmsley <paul@pwsan.com>, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] ARM: OMAP3: Beagle: fix OPP customization and initcall ordering
Date: Mon, 22 Oct 2012 16:41:15 -0700	[thread overview]
Message-ID: <87hapmdqhw.fsf@deeprootsystems.com> (raw)
In-Reply-To: <1350946719-9583-1-git-send-email-khilman@deeprootsystems.com> (Kevin Hilman's message of "Mon, 22 Oct 2012 15:58:39 -0700")

Kevin Hilman <khilman@deeprootsystems.com> writes:

> From: Kevin Hilman <khilman@ti.com>
>
> After commit 24d7b40a60cf19008334bcbcbd98da374d4d9c64 (ARM: OMAP2+:
> PM: MPU DVFS: use generic CPU device for MPU-SS), OPPs are registered
> using an existing CPU device, not the omap_device for MPU-SS.
>
> First, fix the board file to use get_cpu_device() as required by the
> above commit, otherwise custom OPPs will be added to the wrong device.
>
> Second, the board files OPP init is called from the its init_machine
> method, and the generic CPU devices are not yet created when
> init_machine is run.  Therefore OPP initialization will fail.  To fix,
> use a device_initcall() for the board file's OPP customization, and
> make the device_initcall board-specific by using a machine_is check.
>
> Reported-by: Paul Walmsley <paul@pwsan.com>
> Signed-off-by: Kevin Hilman <khilman@ti.com>
> ---
> v2: add machine_is* check to the device_initcall.
>
>  arch/arm/mach-omap2/board-omap3beagle.c | 20 ++++++++++++--------
>  1 file changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
> index 388c431..60729bf 100644
> --- a/arch/arm/mach-omap2/board-omap3beagle.c
> +++ b/arch/arm/mach-omap2/board-omap3beagle.c
> @@ -24,6 +24,7 @@
>  #include <linux/input.h>
>  #include <linux/gpio_keys.h>
>  #include <linux/opp.h>
> +#include <linux/cpu.h>
>  
>  #include <linux/mtd/mtd.h>
>  #include <linux/mtd/partitions.h>
> @@ -444,12 +445,16 @@ static struct omap_board_mux board_mux[] __initdata = {
>  };
>  #endif
>  
> -static void __init beagle_opp_init(void)
> +static int __init beagle_opp_init(void)
>  {
>  	int r = 0;
>  
> -	/* Initialize the omap3 opp table */
> -	if (omap3_opp_init()) {
> +	if (!machine_is_omap3_beagle())
> +		return 0;
> +
> +	/* Initialize the omap3 opp table if not already created. */
> +	r = omap3_opp_init();
> +	if (IS_ERR_VALUE(r) && (r != -EEXIST)) {
>  		pr_err("%s: opp default init failed\n", __func__);
>  		return;

oops, sent wrong version.  The one queued locally has 'return r' here.

Kevin

>  	}
> @@ -458,13 +463,13 @@ static void __init beagle_opp_init(void)
>  	if (cpu_is_omap3630()) {
>  		struct device *mpu_dev, *iva_dev;
>  
> -		mpu_dev = omap_device_get_by_hwmod_name("mpu");
> +		mpu_dev = get_cpu_device(0);
>  		iva_dev = omap_device_get_by_hwmod_name("iva");
>  
>  		if (IS_ERR(mpu_dev) || IS_ERR(iva_dev)) {
>  			pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n",
>  				__func__, mpu_dev, iva_dev);
> -			return;
> +			return -ENODEV;
>  		}
>  		/* Enable MPU 1GHz and lower opps */
>  		r = opp_enable(mpu_dev, 800000000);
> @@ -484,8 +489,9 @@ static void __init beagle_opp_init(void)
>  			opp_disable(iva_dev, 660000000);
>  		}
>  	}
> -	return;
> +	return 0;
>  }
> +device_initcall(beagle_opp_init);
>  
>  static void __init omap3_beagle_init(void)
>  {
> @@ -522,8 +528,6 @@ static void __init omap3_beagle_init(void)
>  	/* Ensure SDRC pins are mux'd for self-refresh */
>  	omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
>  	omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
> -
> -	beagle_opp_init();
>  }
>  
>  MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")

WARNING: multiple messages have this Message-ID (diff)
From: khilman@deeprootsystems.com (Kevin Hilman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: OMAP3: Beagle: fix OPP customization and initcall ordering
Date: Mon, 22 Oct 2012 16:41:15 -0700	[thread overview]
Message-ID: <87hapmdqhw.fsf@deeprootsystems.com> (raw)
In-Reply-To: <1350946719-9583-1-git-send-email-khilman@deeprootsystems.com> (Kevin Hilman's message of "Mon, 22 Oct 2012 15:58:39 -0700")

Kevin Hilman <khilman@deeprootsystems.com> writes:

> From: Kevin Hilman <khilman@ti.com>
>
> After commit 24d7b40a60cf19008334bcbcbd98da374d4d9c64 (ARM: OMAP2+:
> PM: MPU DVFS: use generic CPU device for MPU-SS), OPPs are registered
> using an existing CPU device, not the omap_device for MPU-SS.
>
> First, fix the board file to use get_cpu_device() as required by the
> above commit, otherwise custom OPPs will be added to the wrong device.
>
> Second, the board files OPP init is called from the its init_machine
> method, and the generic CPU devices are not yet created when
> init_machine is run.  Therefore OPP initialization will fail.  To fix,
> use a device_initcall() for the board file's OPP customization, and
> make the device_initcall board-specific by using a machine_is check.
>
> Reported-by: Paul Walmsley <paul@pwsan.com>
> Signed-off-by: Kevin Hilman <khilman@ti.com>
> ---
> v2: add machine_is* check to the device_initcall.
>
>  arch/arm/mach-omap2/board-omap3beagle.c | 20 ++++++++++++--------
>  1 file changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
> index 388c431..60729bf 100644
> --- a/arch/arm/mach-omap2/board-omap3beagle.c
> +++ b/arch/arm/mach-omap2/board-omap3beagle.c
> @@ -24,6 +24,7 @@
>  #include <linux/input.h>
>  #include <linux/gpio_keys.h>
>  #include <linux/opp.h>
> +#include <linux/cpu.h>
>  
>  #include <linux/mtd/mtd.h>
>  #include <linux/mtd/partitions.h>
> @@ -444,12 +445,16 @@ static struct omap_board_mux board_mux[] __initdata = {
>  };
>  #endif
>  
> -static void __init beagle_opp_init(void)
> +static int __init beagle_opp_init(void)
>  {
>  	int r = 0;
>  
> -	/* Initialize the omap3 opp table */
> -	if (omap3_opp_init()) {
> +	if (!machine_is_omap3_beagle())
> +		return 0;
> +
> +	/* Initialize the omap3 opp table if not already created. */
> +	r = omap3_opp_init();
> +	if (IS_ERR_VALUE(r) && (r != -EEXIST)) {
>  		pr_err("%s: opp default init failed\n", __func__);
>  		return;

oops, sent wrong version.  The one queued locally has 'return r' here.

Kevin

>  	}
> @@ -458,13 +463,13 @@ static void __init beagle_opp_init(void)
>  	if (cpu_is_omap3630()) {
>  		struct device *mpu_dev, *iva_dev;
>  
> -		mpu_dev = omap_device_get_by_hwmod_name("mpu");
> +		mpu_dev = get_cpu_device(0);
>  		iva_dev = omap_device_get_by_hwmod_name("iva");
>  
>  		if (IS_ERR(mpu_dev) || IS_ERR(iva_dev)) {
>  			pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n",
>  				__func__, mpu_dev, iva_dev);
> -			return;
> +			return -ENODEV;
>  		}
>  		/* Enable MPU 1GHz and lower opps */
>  		r = opp_enable(mpu_dev, 800000000);
> @@ -484,8 +489,9 @@ static void __init beagle_opp_init(void)
>  			opp_disable(iva_dev, 660000000);
>  		}
>  	}
> -	return;
> +	return 0;
>  }
> +device_initcall(beagle_opp_init);
>  
>  static void __init omap3_beagle_init(void)
>  {
> @@ -522,8 +528,6 @@ static void __init omap3_beagle_init(void)
>  	/* Ensure SDRC pins are mux'd for self-refresh */
>  	omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
>  	omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
> -
> -	beagle_opp_init();
>  }
>  
>  MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")

  reply	other threads:[~2012-10-22 23:40 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-22 22:58 [PATCH] ARM: OMAP3: Beagle: fix OPP customization and initcall ordering Kevin Hilman
2012-10-22 22:58 ` Kevin Hilman
2012-10-22 23:41 ` Kevin Hilman [this message]
2012-10-22 23:41   ` Kevin Hilman
  -- strict thread matches above, loose matches on Subject: below --
2012-10-22 20:33 Kevin Hilman
2012-10-22 20:33 ` Kevin Hilman
2012-10-22 21:26 ` Tony Lindgren
2012-10-22 21:26   ` 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=87hapmdqhw.fsf@deeprootsystems.com \
    --to=khilman@deeprootsystems.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=paul@pwsan.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.