From: Kevin Hilman <khilman@ti.com>
To: Vaibhav Hiremath <hvaibhav@ti.com>
Cc: linux-omap@vger.kernel.org, tony@atomide.com, paul@pwsan.com,
santosh.shilimkar@ti.com, b-cousson@ti.com,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH-V6 1/3] ARM: OMAP1: FIX: check possible error condition in timer_init
Date: Wed, 02 May 2012 13:08:09 -0700 [thread overview]
Message-ID: <87y5pafis6.fsf@ti.com> (raw)
In-Reply-To: <1335967014-11937-2-git-send-email-hvaibhav@ti.com> (Vaibhav Hiremath's message of "Wed, 2 May 2012 19:26:52 +0530")
Vaibhav Hiremath <hvaibhav@ti.com> writes:
> OMAP1, omap_32k_timer_init() function always returns "true",
> irrespective of whether error occurred while initializing 32k sync
> counter as a kernel clocksource or not and execution will never
> fallback to mpu_timer clocksource init code.
>
> This patch adds check for return value from function
> omap_init_clocksource_32k(), and fallback to omap_mpu_timer_init()
> in case of failure/error from omap_init_clocksource_32k().
>
> Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
> Cc: Tony Lindgren <tony@atomide.com>
> Cc: Kevin Hilman <khilman@ti.com>
> Cc: Paul Walmsley <paul@pwsan.com>
> Cc: Benoit Cousson <b-cousson@ti.com>
> ---
> This is new patch addition compared to original series (<=V5).
>
> Also, note that, this patch is only compile tested, since
> I do not have omap1 board with me to validate it.
> Kevin, can you help me to validate it.
I boot tested on OMAP1 (5912/OSK) with 32k timer and MPU timer
Kconfigs. Works fine, but needs small change below for compile warnings.
Otherwise, looks good.
Acked-by: Kevin Hilman <khilman@ti.com>
> arch/arm/mach-omap1/common.h | 10 +++++++++-
> arch/arm/mach-omap1/time.c | 16 +---------------
> arch/arm/mach-omap1/timer32k.c | 13 +++++++++----
> 3 files changed, 19 insertions(+), 20 deletions(-)
>
> diff --git a/arch/arm/mach-omap1/common.h b/arch/arm/mach-omap1/common.h
> index 8cc616e..e8c9ad3 100644
> --- a/arch/arm/mach-omap1/common.h
> +++ b/arch/arm/mach-omap1/common.h
> @@ -63,7 +63,15 @@ extern void omap1_nand_cmd_ctl(struct mtd_info *mtd, int cmd,
> unsigned int ctrl);
>
> extern struct sys_timer omap1_timer;
> -extern bool omap_32k_timer_init(void);
> +
> +#ifdef CONFIG_OMAP_32K_TIMER
> +extern int omap_32k_timer_init(void);
> +#else
> +static int __init omap_32k_timer_init(void)
This needs to be inline. Compile test on OMAP1 with
CONFIG_OMAP_32K_TIMER=n to see why.
> +{
> + return -ENODEV;
> +}
> +#endif
>
> extern u32 omap_irq_flags;
>
> diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c
> index 4d8dd9a..4062480 100644
> --- a/arch/arm/mach-omap1/time.c
> +++ b/arch/arm/mach-omap1/time.c
> @@ -232,20 +232,6 @@ static inline void omap_mpu_timer_init(void)
> }
> #endif /* CONFIG_OMAP_MPU_TIMER */
>
> -static inline int omap_32k_timer_usable(void)
> -{
> - int res = false;
> -
> - if (cpu_is_omap730() || cpu_is_omap15xx())
> - return res;
> -
> -#ifdef CONFIG_OMAP_32K_TIMER
> - res = omap_32k_timer_init();
> -#endif
> -
> - return res;
> -}
> -
> /*
> * ---------------------------------------------------------------------------
> * Timer initialization
> @@ -253,7 +239,7 @@ static inline int omap_32k_timer_usable(void)
> */
> static void __init omap1_timer_init(void)
> {
> - if (!omap_32k_timer_usable())
> + if (omap_32k_timer_init() != 0)
> omap_mpu_timer_init();
> }
>
> diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c
> index 325b9a0..e3613a8 100644
> --- a/arch/arm/mach-omap1/timer32k.c
> +++ b/arch/arm/mach-omap1/timer32k.c
> @@ -182,10 +182,15 @@ static __init void omap_init_32k_timer(void)
> * Timer initialization
> * ---------------------------------------------------------------------------
> */
> -bool __init omap_32k_timer_init(void)
> +int __init omap_32k_timer_init(void)
> {
> - omap_init_clocksource_32k();
> - omap_init_32k_timer();
> + int ret = -ENODEV;
>
> - return true;
> + if (cpu_is_omap16xx())
> + ret = omap_init_clocksource_32k();
> +
> + if (!ret)
> + omap_init_32k_timer();
> +
> + return ret;
> }
> --
> 1.7.0.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: khilman@ti.com (Kevin Hilman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH-V6 1/3] ARM: OMAP1: FIX: check possible error condition in timer_init
Date: Wed, 02 May 2012 13:08:09 -0700 [thread overview]
Message-ID: <87y5pafis6.fsf@ti.com> (raw)
In-Reply-To: <1335967014-11937-2-git-send-email-hvaibhav@ti.com> (Vaibhav Hiremath's message of "Wed, 2 May 2012 19:26:52 +0530")
Vaibhav Hiremath <hvaibhav@ti.com> writes:
> OMAP1, omap_32k_timer_init() function always returns "true",
> irrespective of whether error occurred while initializing 32k sync
> counter as a kernel clocksource or not and execution will never
> fallback to mpu_timer clocksource init code.
>
> This patch adds check for return value from function
> omap_init_clocksource_32k(), and fallback to omap_mpu_timer_init()
> in case of failure/error from omap_init_clocksource_32k().
>
> Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
> Cc: Tony Lindgren <tony@atomide.com>
> Cc: Kevin Hilman <khilman@ti.com>
> Cc: Paul Walmsley <paul@pwsan.com>
> Cc: Benoit Cousson <b-cousson@ti.com>
> ---
> This is new patch addition compared to original series (<=V5).
>
> Also, note that, this patch is only compile tested, since
> I do not have omap1 board with me to validate it.
> Kevin, can you help me to validate it.
I boot tested on OMAP1 (5912/OSK) with 32k timer and MPU timer
Kconfigs. Works fine, but needs small change below for compile warnings.
Otherwise, looks good.
Acked-by: Kevin Hilman <khilman@ti.com>
> arch/arm/mach-omap1/common.h | 10 +++++++++-
> arch/arm/mach-omap1/time.c | 16 +---------------
> arch/arm/mach-omap1/timer32k.c | 13 +++++++++----
> 3 files changed, 19 insertions(+), 20 deletions(-)
>
> diff --git a/arch/arm/mach-omap1/common.h b/arch/arm/mach-omap1/common.h
> index 8cc616e..e8c9ad3 100644
> --- a/arch/arm/mach-omap1/common.h
> +++ b/arch/arm/mach-omap1/common.h
> @@ -63,7 +63,15 @@ extern void omap1_nand_cmd_ctl(struct mtd_info *mtd, int cmd,
> unsigned int ctrl);
>
> extern struct sys_timer omap1_timer;
> -extern bool omap_32k_timer_init(void);
> +
> +#ifdef CONFIG_OMAP_32K_TIMER
> +extern int omap_32k_timer_init(void);
> +#else
> +static int __init omap_32k_timer_init(void)
This needs to be inline. Compile test on OMAP1 with
CONFIG_OMAP_32K_TIMER=n to see why.
> +{
> + return -ENODEV;
> +}
> +#endif
>
> extern u32 omap_irq_flags;
>
> diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c
> index 4d8dd9a..4062480 100644
> --- a/arch/arm/mach-omap1/time.c
> +++ b/arch/arm/mach-omap1/time.c
> @@ -232,20 +232,6 @@ static inline void omap_mpu_timer_init(void)
> }
> #endif /* CONFIG_OMAP_MPU_TIMER */
>
> -static inline int omap_32k_timer_usable(void)
> -{
> - int res = false;
> -
> - if (cpu_is_omap730() || cpu_is_omap15xx())
> - return res;
> -
> -#ifdef CONFIG_OMAP_32K_TIMER
> - res = omap_32k_timer_init();
> -#endif
> -
> - return res;
> -}
> -
> /*
> * ---------------------------------------------------------------------------
> * Timer initialization
> @@ -253,7 +239,7 @@ static inline int omap_32k_timer_usable(void)
> */
> static void __init omap1_timer_init(void)
> {
> - if (!omap_32k_timer_usable())
> + if (omap_32k_timer_init() != 0)
> omap_mpu_timer_init();
> }
>
> diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c
> index 325b9a0..e3613a8 100644
> --- a/arch/arm/mach-omap1/timer32k.c
> +++ b/arch/arm/mach-omap1/timer32k.c
> @@ -182,10 +182,15 @@ static __init void omap_init_32k_timer(void)
> * Timer initialization
> * ---------------------------------------------------------------------------
> */
> -bool __init omap_32k_timer_init(void)
> +int __init omap_32k_timer_init(void)
> {
> - omap_init_clocksource_32k();
> - omap_init_32k_timer();
> + int ret = -ENODEV;
>
> - return true;
> + if (cpu_is_omap16xx())
> + ret = omap_init_clocksource_32k();
> +
> + if (!ret)
> + omap_init_32k_timer();
> +
> + return ret;
> }
> --
> 1.7.0.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2012-05-02 20:08 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-02 13:56 [PATCH-V6 0/3] ARM: OMAP: Make OMAP clocksource source selection runtime Vaibhav Hiremath
2012-05-02 13:56 ` Vaibhav Hiremath
2012-05-02 13:56 ` [PATCH-V6 1/3] ARM: OMAP1: FIX: check possible error condition in timer_init Vaibhav Hiremath
2012-05-02 13:56 ` Vaibhav Hiremath
2012-05-02 20:08 ` Kevin Hilman [this message]
2012-05-02 20:08 ` Kevin Hilman
2012-05-04 17:43 ` Tony Lindgren
2012-05-04 17:43 ` Tony Lindgren
2012-05-04 19:45 ` Janusz Krzysztofik
2012-05-04 19:45 ` Janusz Krzysztofik
2012-05-02 13:56 ` [PATCH-V6 2/3] ARM: OMAP2+: Replace space=>underscore in the name field of system timers Vaibhav Hiremath
2012-05-02 13:56 ` Vaibhav Hiremath
2012-05-02 20:09 ` Kevin Hilman
2012-05-02 20:09 ` Kevin Hilman
2012-05-02 13:56 ` [PATCH-V6 3/3] ARM: OMAP: Make OMAP clocksource source selection using kernel param Vaibhav Hiremath
2012-05-02 13:56 ` Vaibhav Hiremath
2012-05-02 20:39 ` Kevin Hilman
2012-05-02 20:39 ` Kevin Hilman
2012-05-03 8:06 ` Hiremath, Vaibhav
2012-05-03 8:06 ` Hiremath, Vaibhav
2012-05-02 19:56 ` [PATCH-V6 0/3] ARM: OMAP: Make OMAP clocksource source selection runtime Jon Hunter
2012-05-02 19:56 ` Jon Hunter
2012-05-03 5:07 ` Hiremath, Vaibhav
2012-05-03 5:07 ` Hiremath, Vaibhav
2012-05-03 18:19 ` Jon Hunter
2012-05-03 18:19 ` Jon Hunter
2012-05-07 12:39 ` Cousson, Benoit
2012-05-07 12:39 ` Cousson, Benoit
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=87y5pafis6.fsf@ti.com \
--to=khilman@ti.com \
--cc=b-cousson@ti.com \
--cc=hvaibhav@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=paul@pwsan.com \
--cc=santosh.shilimkar@ti.com \
--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.