[PATCH 0/8] OMAP2+: hwmod/clockevent: allow late-init of individual hwmods

Cousson, Benoit b-cousson at ti.com
Fri Mar 4 09:51:07 EST 2011


Paul,

On 3/3/2011 12:10 PM, Cousson, Benoit wrote:
> On 3/2/2011 6:54 PM, Tony Lindgren wrote:
>>> On 2/28/2011 3:31 AM, Paul Walmsley wrote:
>>>> Tony, I guess the omap-for-linus branch will probably need to get rebuilt
>>>> to drop that patch, once this series is merged...
>>
>> Let's rather apply a fix or revert instead than start messing with
>> omap-for-linus. That branch is supposed to be a stable base for others
>> to base their branches on.
>
> Paul,
>
> It is probably better to add the fix in that series at the same time you
> setup the timer hwmod in the following commit 38698bef5454.
> It will avoid breaking bisect.

It looks like your branch is now merged without the revert or the fix 
proposed below, so the warning is still there :-(

Tony,
Do you plan to re-merge this branch or should I just send a revert on 
top of it?

Thanks,
Benoit

> Regards,
> Benoit
>
> ---
>   From 35e0aff709a7ea27c65e08c7bd5d904d3193ec75 Mon Sep 17 00:00:00 2001
> From: Paul Walmsley<paul at pwsan.com>
> Date: Wed, 23 Feb 2011 00:14:08 -0700
> Subject: [PATCH] OMAP2+: clockevent: set up GPTIMER clockevent hwmod
> right before timer init
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> Set up the GPTIMER hwmod used for the clockevent source immediately
> before it is used.  This avoids the need to set up all of the hwmods
> until the boot process is further along.  (In general, we want to defer
> as much as possible until late in the boot process.)
>
> This second version fixes a bug pointed out by Santosh Shilimkar
> <santosh.shilimkar at ti.com>, that would cause the kernel to use an
> incorrect timer hwmod name if the selected GPTIMER was not 1 or 12 -
> thanks Santosh.  Also, Tarun Kanti DebBarma<tarun.kanti at ti.com>
> pointed out that the original patch did not apply cleanly; this has
> now been fixed.
>
> Revert as well commit 3b03b58dab847883e6b9a431558c7d8e43fa94c6:
> "OMAP4: hwmod data: Prevent timer1 to be reset and idle during init",
> that is not longer needed since hwmod is setup before timer used it.
>
> Signed-off-by: Paul Walmsley<paul at pwsan.com>
> Cc: Benoît Cousson<b-cousson at ti.com>
> Cc: Tony Lindgren<tony at atomide.com>
> Cc: Kevin Hilman<khilman at ti.com>
> Cc: Santosh Shilimkar<santosh.shilimkar at ti.com>
> Acked-by: Santosh Shilimkar<santosh.shilimkar at ti.com>
> Cc: Tarun Kanti DebBarma<tarun.kanti at ti.com>
> ---
>    arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    1 -
>    arch/arm/mach-omap2/timer-gp.c             |    7 ++++++-
>    2 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
> b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
> index 2c58827..b4d3b3c 100644
> --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
> +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
> @@ -3989,7 +3989,6 @@ static struct omap_hwmod_ocp_if
> *omap44xx_timer1_slaves[] = {
>    static struct omap_hwmod omap44xx_timer1_hwmod = {
>    	.name		= "timer1",
>    	.class		=&omap44xx_timer_1ms_hwmod_class,
> -	.flags		= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
>    	.mpu_irqs	= omap44xx_timer1_irqs,
>    	.mpu_irqs_cnt	= ARRAY_SIZE(omap44xx_timer1_irqs),
>    	.main_clk	= "timer1_fck",
> diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
> index 7b7c268..fb8d656 100644
> --- a/arch/arm/mach-omap2/timer-gp.c
> +++ b/arch/arm/mach-omap2/timer-gp.c
> @@ -39,10 +39,11 @@
>    #include<asm/mach/time.h>
>    #include<plat/dmtimer.h>
>    #include<asm/localtimer.h>
> +#include<plat/common.h>
> +#include<plat/omap_hwmod.h>
>
>    #include "timer-gp.h"
>
> -#include<plat/common.h>
>
>    /* MAX_GPTIMER_ID: number of GPTIMERs on the chip */
>    #define MAX_GPTIMER_ID		12
> @@ -132,9 +133,13 @@ static void __init omap2_gp_clockevent_init(void)
>    {
>    	u32 tick_rate;
>    	int src;
> +	char clockevent_hwmod_name[8]; /* 8 = sizeof("timerXX0") */
>
>    	inited = 1;
>
> +	sprintf(clockevent_hwmod_name, "timer%d", gptimer_id);
> +	omap_hwmod_setup_one(clockevent_hwmod_name);
> +
>    	gptimer = omap_dm_timer_request_specific(gptimer_id);
>    	BUG_ON(gptimer == NULL);
>    	gptimer_wakeup = gptimer;




More information about the linux-arm-kernel mailing list