RE: [PATCHv3 17/17] dmtimer: remove OCP config code from plat-omap

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Benoit,
> -----Original Message-----
> From: linux-omap-owner@xxxxxxxxxxxxxxx [mailto:linux-omap-
> owner@xxxxxxxxxxxxxxx] On Behalf Of DebBarma, Tarun Kanti
> Sent: Monday, October 11, 2010 2:58 PM
> To: Cousson, Benoit
> Cc: linux-omap@xxxxxxxxxxxxxxx; Basak, Partha; Paul Walmsley; Kevin
> Hilman; Tony Lindgren
> Subject: RE: [PATCHv3 17/17] dmtimer: remove OCP config code from plat-
> omap
> 
> Benoit,
> 
> > -----Original Message-----
> > From: Cousson, Benoit
> > Sent: Monday, October 04, 2010 7:57 PM
> > To: DebBarma, Tarun Kanti
> > Cc: linux-omap@xxxxxxxxxxxxxxx; Basak, Partha; Paul Walmsley; Kevin
> > Hilman; Tony Lindgren
> > Subject: Re: [PATCHv3 17/17] dmtimer: remove OCP config code from plat-
> > omap
> >
> > On 9/21/2010 10:56 AM, DebBarma, Tarun Kanti wrote:
> > > This patch removes the ocp config code from omap-plat
> > > because they are supposed to be taken care of by the
> > > hwmod framework. Specifically, following changes are
> > > incorporated:
> > > (1) setting of smart-idle and wakeup-enable is already
> > > taken care in existing code and so they are simply removed
> > > from plat-omap
> > > (2) clockactivity configuration is not present in the present
> > > hwmod database. Therefore this filed is initialized to '1' in
> >
> > Typo.
> Will take care!
> 
> >
> > > respective database.
> >
> > Could you explain why, the default setting is not working for the
> timers?
> Ok, I just moved the existing implementation from plat-omap to hwmod
> database. I have not tested without this change.
> 
> >
> > >
> > > Signed-off-by: Tarun Kanti DebBarma<tarun.kanti@xxxxxx>
> > > Signed-off-by: Partha Basak<p-basak2@xxxxxx>
> > > Cc: Cousson, Benoit<b-cousson@xxxxxx>
> > > Cc: Paul Walmsley<paul@xxxxxxxxx>
> > > Cc: Kevin Hilman<khilman@xxxxxxxxxxxxxxxxxxx>
> > > Cc: Tony Lindgren<tony@xxxxxxxxxxx>
> > > ---
> > >   arch/arm/mach-omap2/omap_hwmod_2420_data.c |    1 +
> > >   arch/arm/mach-omap2/omap_hwmod_2430_data.c |    1 +
> > >   arch/arm/mach-omap2/omap_hwmod_3xxx_data.c |    1 +
> > >   arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    1 +
> > >   arch/arm/plat-omap/dmtimer.c               |   11 -----------
> > >   5 files changed, 4 insertions(+), 11 deletions(-)
> > >
> > > diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c
> b/arch/arm/mach-
> > omap2/omap_hwmod_2420_data.c
> > > index fc761a5..25111bf 100644
> > > --- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c
> > > +++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
> > > @@ -168,6 +168,7 @@ static struct omap_hwmod_class_sysconfig
> > omap2420_timer_sysc = {
> > >   			   SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
> > >   			   SYSC_HAS_AUTOIDLE),
> > >   	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
> > > +	.clockact       = 1, /* preserve fclk on idle */
> >
> > In theory, this field is useless unless you add a flag:
> > SYSC_HAS_CLOCKACTIVITY.
> >
> > So how is it working in your case?
> I guess my testing with power was not done properly. I will check and
> verify.
> >
> >
> > >   	.sysc_fields    =&omap_hwmod_sysc_type1,
> > >   };
> > >
> > > diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c
> b/arch/arm/mach-
> > omap2/omap_hwmod_2430_data.c
> > > index 2ac463f..93d5c3d 100644
> > > --- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c
> > > +++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
> > > @@ -174,6 +174,7 @@ static struct omap_hwmod_class_sysconfig
> > omap2430_timer_sysc = {
> > >   			   SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
> > >   			   SYSC_HAS_AUTOIDLE),
> > >   	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
> > > +	.clockact       = 1, /* preserve fclk on idle */
> > >   	.sysc_fields    =&omap_hwmod_sysc_type1,
> > >   };
> > >
> > > diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
> b/arch/arm/mach-
> > omap2/omap_hwmod_3xxx_data.c
> > > index 1ce40e0..c64c95b 100644
> > > --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
> > > +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
> > > @@ -147,6 +147,7 @@ static struct omap_hwmod_class_sysconfig
> > omap3xxx_timer_1ms_sysc = {
> > >   				SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
> > >   				SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE),
> > >   	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
> > > +	.clockact       = 1, /* preserve fclk on idle */
> > >   	.sysc_fields	=&omap_hwmod_sysc_type1,
> > >   };
> > >
> > > diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
> b/arch/arm/mach-
> > omap2/omap_hwmod_44xx_data.c
> > > index 9edc518..a816d30 100644
> > > --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
> > > +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
> > > @@ -538,6 +538,7 @@ static struct omap_hwmod_class_sysconfig
> > omap44xx_timer_1ms_sysc = {
> > >   			   SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE |
> > >   			   SYSS_MISSING),
> > >   	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
> > > +	.clockact	= 1, /* preserve fclk on idle */
> > >   	.sysc_fields	=&omap_hwmod_sysc_type1,
> > >   };
> > >
> > > diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-
> omap/dmtimer.c
> > > index 7d57605..6211501 100644
> > > --- a/arch/arm/plat-omap/dmtimer.c
> > > +++ b/arch/arm/plat-omap/dmtimer.c
> > > @@ -157,17 +157,6 @@ static void omap_dm_timer_reset(struct
> > omap_dm_timer *timer)
> > >   	}
> > >   	omap_dm_timer_set_source(timer, OMAP_TIMER_SRC_32_KHZ);
> > >
> > > -	l = omap_dm_timer_read_reg(timer, OMAP_TIMER_OCP_CFG_REG);
> > > -	l |= 0x02<<  3;  /* Set to smart-idle mode */
> > > -	l |= 0x2<<  8;   /* Set clock activity to perserve f-clock on
> idle */
> >
> > It used to be 0x2 and now you put 1:
> > 	.clockact       = 1, /* preserve fclk on idle */
> Oops... it's a mistake.
> 
> >
> > I do not understand how that patch can work???
> As I said, I am sure I did mess-up during power test.
> 
> In summary, I will make following updates:
> .clockact = 0x2
> SYSC_HAS_CLOCKACTIVITY flag should be included.
After going through the code I realized that this flag is already there. 
I am not sure where you observed this flag missing?

-tarun
> 
> >
> > > -
> > > -	/*
> > > -	 * Enable wake-up on OMAP2 CPUs.
> > > -	 */
> > > -	if (cpu_class_is_omap2())
> > > -		l |= 1<<  2;
> > > -	omap_dm_timer_write_reg(timer, OMAP_TIMER_OCP_CFG_REG, l);
> > > -
> > >   	/* Match hardware reset default of posted mode */
> > >   	omap_dm_timer_write_reg(timer, OMAP_TIMER_IF_CTRL_REG,
> > >   			OMAP_TIMER_CTRL_POSTED);
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux