Re: [PATCH V2 4/4] ARM: OMAP2+: AM43x: Use gptimer as clocksource
* Lokesh Vutla [140224 05:08]: > Hi Tony, > On Friday 14 February 2014 02:16 PM, Rajendra Nayak wrote: > > On Friday 14 February 2014 04:49 AM, Tony Lindgren wrote: > >> * Lokesh Vutla [140207 02:24]: > >>> From: Rajendra Nayak > >>> > >>> The SyncTimer in AM43x is clocked using the following two sources: > >>> 1) An inaccuarte 32k clock (CLK_32KHZ) derived from PER DPLL, causing > >>> system > >>>time to go slowly (~10% deviation). > >>> 2) external 32KHz RTC clock, which may not always be available on board > >>> like > >>>in the case of ePOS EVM > >>> > >>> Use gptimer as clocksource instead, as is done in the case of AM335x > >>> (which does not have a SyncTimer). With this, system time keeping works > >>> accurately. > >> > >> Hmm doesn't this also mean that PM for any deeper idle states won't > >> work properly? > > > > Thats true. This would mean we cannot put the peripheral/core domain down > > in idle. Suspend however can still work if suspend/resume callbacks are > > added > > to the clockevent and clocksource code to shut the non-wakeup domain timer. > This is a platform level limitation that only MPU domain can be put down in > idle, just like AM335x. OK applying all four into omap-for-v3.15/soc thanks. Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V2 4/4] ARM: OMAP2+: AM43x: Use gptimer as clocksource
Hi Tony, On Friday 14 February 2014 02:16 PM, Rajendra Nayak wrote: > On Friday 14 February 2014 04:49 AM, Tony Lindgren wrote: >> * Lokesh Vutla [140207 02:24]: >>> From: Rajendra Nayak >>> >>> The SyncTimer in AM43x is clocked using the following two sources: >>> 1) An inaccuarte 32k clock (CLK_32KHZ) derived from PER DPLL, causing system >>>time to go slowly (~10% deviation). >>> 2) external 32KHz RTC clock, which may not always be available on board like >>>in the case of ePOS EVM >>> >>> Use gptimer as clocksource instead, as is done in the case of AM335x >>> (which does not have a SyncTimer). With this, system time keeping works >>> accurately. >> >> Hmm doesn't this also mean that PM for any deeper idle states won't >> work properly? > > Thats true. This would mean we cannot put the peripheral/core domain down > in idle. Suspend however can still work if suspend/resume callbacks are added > to the clockevent and clocksource code to shut the non-wakeup domain timer. This is a platform level limitation that only MPU domain can be put down in idle, just like AM335x. Thanks and regards, Lokesh > > regards, > Rajendra > >> >> Regards, >> >> Tony >> >>> Signed-off-by: Rajendra Nayak >>> Signed-off-by: Lokesh Vutla >>> --- >>> arch/arm/mach-omap2/board-generic.c |2 +- >>> arch/arm/mach-omap2/timer.c |3 ++- >>> 2 files changed, 3 insertions(+), 2 deletions(-) >>> >>> diff --git a/arch/arm/mach-omap2/board-generic.c >>> b/arch/arm/mach-omap2/board-generic.c >>> index 8e3daa1..5679464a 100644 >>> --- a/arch/arm/mach-omap2/board-generic.c >>> +++ b/arch/arm/mach-omap2/board-generic.c >>> @@ -229,7 +229,7 @@ DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened >>> Device Tree)") >>> .init_late = am43xx_init_late, >>> .init_irq = omap_gic_of_init, >>> .init_machine = omap_generic_init, >>> - .init_time = omap3_sync32k_timer_init, >>> + .init_time = omap3_gptimer_timer_init, >>> .dt_compat = am43_boards_compat, >>> MACHINE_END >>> #endif >>> diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c >>> index 74044aa..b62de9f 100644 >>> --- a/arch/arm/mach-omap2/timer.c >>> +++ b/arch/arm/mach-omap2/timer.c >>> @@ -604,7 +604,8 @@ OMAP_SYS_32K_TIMER_INIT(3_secure, 12, "secure_32k_fck", >>> "ti,timer-secure", >>> 2, "timer_sys_ck", NULL); >>> #endif /* CONFIG_ARCH_OMAP3 */ >>> >>> -#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) >>> +#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) || \ >>> + defined(CONFIG_SOC_AM43XX) >>> OMAP_SYS_GP_TIMER_INIT(3, 2, "timer_sys_ck", NULL, >>>1, "timer_sys_ck", "ti,timer-alwon"); >>> #endif >>> -- >>> 1.7.9.5 >>> > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V2 4/4] ARM: OMAP2+: AM43x: Use gptimer as clocksource
On Friday 14 February 2014 04:49 AM, Tony Lindgren wrote: > * Lokesh Vutla [140207 02:24]: >> From: Rajendra Nayak >> >> The SyncTimer in AM43x is clocked using the following two sources: >> 1) An inaccuarte 32k clock (CLK_32KHZ) derived from PER DPLL, causing system >>time to go slowly (~10% deviation). >> 2) external 32KHz RTC clock, which may not always be available on board like >>in the case of ePOS EVM >> >> Use gptimer as clocksource instead, as is done in the case of AM335x >> (which does not have a SyncTimer). With this, system time keeping works >> accurately. > > Hmm doesn't this also mean that PM for any deeper idle states won't > work properly? Thats true. This would mean we cannot put the peripheral/core domain down in idle. Suspend however can still work if suspend/resume callbacks are added to the clockevent and clocksource code to shut the non-wakeup domain timer. regards, Rajendra > > Regards, > > Tony > >> Signed-off-by: Rajendra Nayak >> Signed-off-by: Lokesh Vutla >> --- >> arch/arm/mach-omap2/board-generic.c |2 +- >> arch/arm/mach-omap2/timer.c |3 ++- >> 2 files changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/arch/arm/mach-omap2/board-generic.c >> b/arch/arm/mach-omap2/board-generic.c >> index 8e3daa1..5679464a 100644 >> --- a/arch/arm/mach-omap2/board-generic.c >> +++ b/arch/arm/mach-omap2/board-generic.c >> @@ -229,7 +229,7 @@ DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened >> Device Tree)") >> .init_late = am43xx_init_late, >> .init_irq = omap_gic_of_init, >> .init_machine = omap_generic_init, >> -.init_time = omap3_sync32k_timer_init, >> +.init_time = omap3_gptimer_timer_init, >> .dt_compat = am43_boards_compat, >> MACHINE_END >> #endif >> diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c >> index 74044aa..b62de9f 100644 >> --- a/arch/arm/mach-omap2/timer.c >> +++ b/arch/arm/mach-omap2/timer.c >> @@ -604,7 +604,8 @@ OMAP_SYS_32K_TIMER_INIT(3_secure, 12, "secure_32k_fck", >> "ti,timer-secure", >> 2, "timer_sys_ck", NULL); >> #endif /* CONFIG_ARCH_OMAP3 */ >> >> -#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) >> +#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) || \ >> +defined(CONFIG_SOC_AM43XX) >> OMAP_SYS_GP_TIMER_INIT(3, 2, "timer_sys_ck", NULL, >> 1, "timer_sys_ck", "ti,timer-alwon"); >> #endif >> -- >> 1.7.9.5 >> -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V2 4/4] ARM: OMAP2+: AM43x: Use gptimer as clocksource
* Lokesh Vutla [140207 02:24]: > From: Rajendra Nayak > > The SyncTimer in AM43x is clocked using the following two sources: > 1) An inaccuarte 32k clock (CLK_32KHZ) derived from PER DPLL, causing system >time to go slowly (~10% deviation). > 2) external 32KHz RTC clock, which may not always be available on board like >in the case of ePOS EVM > > Use gptimer as clocksource instead, as is done in the case of AM335x > (which does not have a SyncTimer). With this, system time keeping works > accurately. Hmm doesn't this also mean that PM for any deeper idle states won't work properly? Regards, Tony > Signed-off-by: Rajendra Nayak > Signed-off-by: Lokesh Vutla > --- > arch/arm/mach-omap2/board-generic.c |2 +- > arch/arm/mach-omap2/timer.c |3 ++- > 2 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/mach-omap2/board-generic.c > b/arch/arm/mach-omap2/board-generic.c > index 8e3daa1..5679464a 100644 > --- a/arch/arm/mach-omap2/board-generic.c > +++ b/arch/arm/mach-omap2/board-generic.c > @@ -229,7 +229,7 @@ DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device > Tree)") > .init_late = am43xx_init_late, > .init_irq = omap_gic_of_init, > .init_machine = omap_generic_init, > - .init_time = omap3_sync32k_timer_init, > + .init_time = omap3_gptimer_timer_init, > .dt_compat = am43_boards_compat, > MACHINE_END > #endif > diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c > index 74044aa..b62de9f 100644 > --- a/arch/arm/mach-omap2/timer.c > +++ b/arch/arm/mach-omap2/timer.c > @@ -604,7 +604,8 @@ OMAP_SYS_32K_TIMER_INIT(3_secure, 12, "secure_32k_fck", > "ti,timer-secure", > 2, "timer_sys_ck", NULL); > #endif /* CONFIG_ARCH_OMAP3 */ > > -#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) > +#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) || \ > + defined(CONFIG_SOC_AM43XX) > OMAP_SYS_GP_TIMER_INIT(3, 2, "timer_sys_ck", NULL, > 1, "timer_sys_ck", "ti,timer-alwon"); > #endif > -- > 1.7.9.5 > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH V2 4/4] ARM: OMAP2+: AM43x: Use gptimer as clocksource
From: Rajendra Nayak The SyncTimer in AM43x is clocked using the following two sources: 1) An inaccuarte 32k clock (CLK_32KHZ) derived from PER DPLL, causing system time to go slowly (~10% deviation). 2) external 32KHz RTC clock, which may not always be available on board like in the case of ePOS EVM Use gptimer as clocksource instead, as is done in the case of AM335x (which does not have a SyncTimer). With this, system time keeping works accurately. Signed-off-by: Rajendra Nayak Signed-off-by: Lokesh Vutla --- arch/arm/mach-omap2/board-generic.c |2 +- arch/arm/mach-omap2/timer.c |3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 8e3daa1..5679464a 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c @@ -229,7 +229,7 @@ DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)") .init_late = am43xx_init_late, .init_irq = omap_gic_of_init, .init_machine = omap_generic_init, - .init_time = omap3_sync32k_timer_init, + .init_time = omap3_gptimer_timer_init, .dt_compat = am43_boards_compat, MACHINE_END #endif diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 74044aa..b62de9f 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c @@ -604,7 +604,8 @@ OMAP_SYS_32K_TIMER_INIT(3_secure, 12, "secure_32k_fck", "ti,timer-secure", 2, "timer_sys_ck", NULL); #endif /* CONFIG_ARCH_OMAP3 */ -#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) +#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) || \ + defined(CONFIG_SOC_AM43XX) OMAP_SYS_GP_TIMER_INIT(3, 2, "timer_sys_ck", NULL, 1, "timer_sys_ck", "ti,timer-alwon"); #endif -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html