devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] ARM: ux500: decomission the non-DT MTU init sequence
@ 2013-11-19 21:27 Linus Walleij
       [not found] ` <1384896471-9384-1-git-send-email-linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
  0 siblings, 1 reply; 5+ messages in thread
From: Linus Walleij @ 2013-11-19 21:27 UTC (permalink / raw)
  To: linux-arm-kernel, Lee Jones
  Cc: devicetree, Thomas Gleixner, Daniel Lezcano, Linus Walleij

The MTU is now only initialized using the native clocksource
device tree matching.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 arch/arm/mach-ux500/timer.c | 28 ++--------------------------
 1 file changed, 2 insertions(+), 26 deletions(-)

diff --git a/arch/arm/mach-ux500/timer.c b/arch/arm/mach-ux500/timer.c
index ca60bbd9361b..1a9051b6f932 100644
--- a/arch/arm/mach-ux500/timer.c
+++ b/arch/arm/mach-ux500/timer.c
@@ -10,7 +10,6 @@
 #include <linux/clocksource.h>
 #include <linux/of.h>
 #include <linux/of_address.h>
-#include <linux/platform_data/clocksource-nomadik-mtu.h>
 
 #include <asm/smp_twd.h>
 
@@ -44,17 +43,14 @@ const static struct of_device_id prcmu_timer_of_match[] __initconst = {
 
 void __init ux500_timer_init(void)
 {
-	void __iomem *mtu_timer_base;
 	void __iomem *prcmu_timer_base;
 	void __iomem *tmp_base;
 	struct device_node *np;
 
-	if (cpu_is_u8500_family() || cpu_is_ux540_family()) {
-		mtu_timer_base = __io_address(U8500_MTU0_BASE);
+	if (cpu_is_u8500_family() || cpu_is_ux540_family())
 		prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
-	} else {
+	else
 		ux500_unknown_soc();
-	}
 
 	np = of_find_matching_node(NULL, prcmu_timer_of_match);
 	if (!np)
@@ -67,26 +63,6 @@ void __init ux500_timer_init(void)
 	prcmu_timer_base = tmp_base;
 
 dt_fail:
-	/* Doing it the old fashioned way. */
-
-	/*
-	 * Here we register the timerblocks active in the system.
-	 * Localtimers (twd) is started when both cpu is up and running.
-	 * MTU register a clocksource, clockevent and sched_clock.
-	 * Since the MTU is located in the VAPE power domain
-	 * it will be cleared in sleep which makes it unsuitable.
-	 * We however need it as a timer tick (clockevent)
-	 * during boot to calibrate delay until twd is started.
-	 * RTC-RTT have problems as timer tick during boot since it is
-	 * depending on delay which is not yet calibrated. RTC-RTT is in the
-	 * always-on powerdomain and is used as clockevent instead of twd when
-	 * sleeping.
-	 * The PRCMU timer 4 register a clocksource and
-	 * sched_clock with higher rating then MTU since is always-on.
-	 *
-	 */
-	if (!of_have_populated_dt())
-		nmdk_timer_init(mtu_timer_base, IRQ_MTU0);
 	clksrc_dbx500_prcmu_init(prcmu_timer_base);
 	ux500_twd_init();
 }
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] ARM: ux500: decomission the non-DT MTU init sequence
       [not found] ` <1384896471-9384-1-git-send-email-linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
@ 2013-11-19 22:40   ` Daniel Lezcano
       [not found]     ` <528BE8F2.3030507-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
  2013-11-20  8:55   ` Lee Jones
  1 sibling, 1 reply; 5+ messages in thread
From: Daniel Lezcano @ 2013-11-19 22:40 UTC (permalink / raw)
  To: Linus Walleij, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Lee Jones
  Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Thomas Gleixner

On 11/19/2013 10:27 PM, Linus Walleij wrote:
> The MTU is now only initialized using the native clocksource
> device tree matching.
>
> Signed-off-by: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> ---
>   arch/arm/mach-ux500/timer.c | 28 ++--------------------------
>   1 file changed, 2 insertions(+), 26 deletions(-)
>
> diff --git a/arch/arm/mach-ux500/timer.c b/arch/arm/mach-ux500/timer.c
> index ca60bbd9361b..1a9051b6f932 100644
> --- a/arch/arm/mach-ux500/timer.c
> +++ b/arch/arm/mach-ux500/timer.c
> @@ -10,7 +10,6 @@
>   #include <linux/clocksource.h>
>   #include <linux/of.h>
>   #include <linux/of_address.h>
> -#include <linux/platform_data/clocksource-nomadik-mtu.h>
>
>   #include <asm/smp_twd.h>
>
> @@ -44,17 +43,14 @@ const static struct of_device_id prcmu_timer_of_match[] __initconst = {
>
>   void __init ux500_timer_init(void)
>   {
> -	void __iomem *mtu_timer_base;
>   	void __iomem *prcmu_timer_base;
>   	void __iomem *tmp_base;
>   	struct device_node *np;
>
> -	if (cpu_is_u8500_family() || cpu_is_ux540_family()) {
> -		mtu_timer_base = __io_address(U8500_MTU0_BASE);
> +	if (cpu_is_u8500_family() || cpu_is_ux540_family())
>   		prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
> -	} else {
> +	else
>   		ux500_unknown_soc();
> -	}
>
>   	np = of_find_matching_node(NULL, prcmu_timer_of_match);
>   	if (!np)
> @@ -67,26 +63,6 @@ void __init ux500_timer_init(void)
>   	prcmu_timer_base = tmp_base;
>
>   dt_fail:
> -	/* Doing it the old fashioned way. */
> -
> -	/*
> -	 * Here we register the timerblocks active in the system.
> -	 * Localtimers (twd) is started when both cpu is up and running.
> -	 * MTU register a clocksource, clockevent and sched_clock.
> -	 * Since the MTU is located in the VAPE power domain
> -	 * it will be cleared in sleep which makes it unsuitable.
> -	 * We however need it as a timer tick (clockevent)
> -	 * during boot to calibrate delay until twd is started.
> -	 * RTC-RTT have problems as timer tick during boot since it is
> -	 * depending on delay which is not yet calibrated. RTC-RTT is in the
> -	 * always-on powerdomain and is used as clockevent instead of twd when
> -	 * sleeping.
> -	 * The PRCMU timer 4 register a clocksource and
> -	 * sched_clock with higher rating then MTU since is always-on.
> -	 *
> -	 */
> -	if (!of_have_populated_dt())
> -		nmdk_timer_init(mtu_timer_base, IRQ_MTU0);

If no timer have been defined in the dt [or wrongly defined], is there a 
message to tell the user what is wrong ?

>   	clksrc_dbx500_prcmu_init(prcmu_timer_base);
>   	ux500_twd_init();
>   }
>


-- 
  <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] ARM: ux500: decomission the non-DT MTU init sequence
       [not found]     ` <528BE8F2.3030507-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
@ 2013-11-19 22:55       ` Linus Walleij
       [not found]         ` <CACRpkdab=1xJtcAg-_oUBr_jC5DgDre-f9jxuzDnZmXGFShvLw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 5+ messages in thread
From: Linus Walleij @ 2013-11-19 22:55 UTC (permalink / raw)
  To: Daniel Lezcano
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	Lee Jones, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Thomas Gleixner,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

On Tue, Nov 19, 2013 at 11:40 PM, Daniel Lezcano
<daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
> On 11/19/2013 10:27 PM, Linus Walleij wrote:

>> -       if (!of_have_populated_dt())
>> -               nmdk_timer_init(mtu_timer_base, IRQ_MTU0);
>
> If no timer have been defined in the dt [or wrongly defined], is there a
> message to tell the user what is wrong ?

Isn't that a question to be asked about a whole lot of such
clocksource drivers and ARM platforms?

Most DT-only ARM platforms rely on
arch/arm/kernel/time.c to call clocksource_of_init() if the
machine_desc->init_time() hook is not set and has zero
code to handle any such situation.

So I guess what you're asking is whether we should patch
clocksource_of_init() to warn if it cannot find any
matching clock sources, like this:

>From e55cf038b238d96b28d9fb01b5b6cdf345990d53 Mon Sep 17 00:00:00 2001
From: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Date: Tue, 19 Nov 2013 23:52:56 +0100
Subject: [PATCH] clksrc-of: warn if no clock sources are found

Many platforms rely on clocksource_of_init() being implicitly
called for registering clock sources and will get zero warnings
if no working clock source is available. Let's print a critical
error message if no clock source is found.

Signed-off-by: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
---
 drivers/clocksource/clksrc-of.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/clocksource/clksrc-of.c b/drivers/clocksource/clksrc-of.c
index 35639cf4e5a2..a30b42c3ac3b 100644
--- a/drivers/clocksource/clksrc-of.c
+++ b/drivers/clocksource/clksrc-of.c
@@ -28,6 +28,7 @@ void __init clocksource_of_init(void)
     struct device_node *np;
     const struct of_device_id *match;
     clocksource_of_init_fn init_func;
+    unsigned clocksources = 0;

     for_each_matching_node_and_match(np, __clksrc_of_table, &match) {
         if (!of_device_is_available(np))
@@ -36,5 +37,8 @@ void __init clocksource_of_init(void)
         init_func = match->data;
         init_func(np);
         of_node_put(np);
+        clocksources++;
     }
+    if (!clocksources)
+        pr_crit("%s: no matching clocksources found\n", __func__);
 }
-- 
1.8.3.1

You can apply this by itself to get the desired warning.
Tell me if you want me to send the patch separately.

Yours,
Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] ARM: ux500: decomission the non-DT MTU init sequence
       [not found]         ` <CACRpkdab=1xJtcAg-_oUBr_jC5DgDre-f9jxuzDnZmXGFShvLw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2013-11-19 23:33           ` Daniel Lezcano
  0 siblings, 0 replies; 5+ messages in thread
From: Daniel Lezcano @ 2013-11-19 23:33 UTC (permalink / raw)
  To: Linus Walleij
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	Lee Jones, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Thomas Gleixner,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

On 11/19/2013 11:55 PM, Linus Walleij wrote:
> On Tue, Nov 19, 2013 at 11:40 PM, Daniel Lezcano
> <daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
>> On 11/19/2013 10:27 PM, Linus Walleij wrote:
>
>>> -       if (!of_have_populated_dt())
>>> -               nmdk_timer_init(mtu_timer_base, IRQ_MTU0);
>>
>> If no timer have been defined in the dt [or wrongly defined], is there a
>> message to tell the user what is wrong ?
>
> Isn't that a question to be asked about a whole lot of such
> clocksource drivers and ARM platforms?

Yes, I did the comment based on your patch but I agree it must be 
addressed in a global manner.

> Most DT-only ARM platforms rely on
> arch/arm/kernel/time.c to call clocksource_of_init() if the
> machine_desc->init_time() hook is not set and has zero
> code to handle any such situation.
>
> So I guess what you're asking is whether we should patch
> clocksource_of_init() to warn if it cannot find any
> matching clock sources, like this:
>
>  From e55cf038b238d96b28d9fb01b5b6cdf345990d53 Mon Sep 17 00:00:00 2001
> From: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> Date: Tue, 19 Nov 2013 23:52:56 +0100
> Subject: [PATCH] clksrc-of: warn if no clock sources are found
>
> Many platforms rely on clocksource_of_init() being implicitly
> called for registering clock sources and will get zero warnings
> if no working clock source is available. Let's print a critical
> error message if no clock source is found.
>
> Signed-off-by: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>

Yes, it sounds right to do this.

Thanks !

   -- Daniel

> ---
>   drivers/clocksource/clksrc-of.c | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/drivers/clocksource/clksrc-of.c b/drivers/clocksource/clksrc-of.c
> index 35639cf4e5a2..a30b42c3ac3b 100644
> --- a/drivers/clocksource/clksrc-of.c
> +++ b/drivers/clocksource/clksrc-of.c
> @@ -28,6 +28,7 @@ void __init clocksource_of_init(void)
>       struct device_node *np;
>       const struct of_device_id *match;
>       clocksource_of_init_fn init_func;
> +    unsigned clocksources = 0;
>
>       for_each_matching_node_and_match(np, __clksrc_of_table, &match) {
>           if (!of_device_is_available(np))
> @@ -36,5 +37,8 @@ void __init clocksource_of_init(void)
>           init_func = match->data;
>           init_func(np);
>           of_node_put(np);
> +        clocksources++;
>       }
> +    if (!clocksources)
> +        pr_crit("%s: no matching clocksources found\n", __func__);
>   }
>


-- 
  <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] ARM: ux500: decomission the non-DT MTU init sequence
       [not found] ` <1384896471-9384-1-git-send-email-linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
  2013-11-19 22:40   ` Daniel Lezcano
@ 2013-11-20  8:55   ` Lee Jones
  1 sibling, 0 replies; 5+ messages in thread
From: Lee Jones @ 2013-11-20  8:55 UTC (permalink / raw)
  To: Linus Walleij
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Thomas Gleixner,
	Daniel Lezcano

On Tue, 19 Nov 2013, Linus Walleij wrote:

> The MTU is now only initialized using the native clocksource
> device tree matching.
> 
> Signed-off-by: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> ---
>  arch/arm/mach-ux500/timer.c | 28 ++--------------------------
>  1 file changed, 2 insertions(+), 26 deletions(-)

Acked-by: Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-11-20  8:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-19 21:27 [PATCH 1/2] ARM: ux500: decomission the non-DT MTU init sequence Linus Walleij
     [not found] ` <1384896471-9384-1-git-send-email-linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2013-11-19 22:40   ` Daniel Lezcano
     [not found]     ` <528BE8F2.3030507-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2013-11-19 22:55       ` Linus Walleij
     [not found]         ` <CACRpkdab=1xJtcAg-_oUBr_jC5DgDre-f9jxuzDnZmXGFShvLw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-11-19 23:33           ` Daniel Lezcano
2013-11-20  8:55   ` Lee Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).