From mboxrd@z Thu Jan 1 00:00:00 1970 From: nicolas.ferre@atmel.com (Nicolas Ferre) Date: Wed, 15 May 2013 12:36:02 +0200 Subject: [PATCH 1/1] ARM: at91: rm9200 fix time support In-Reply-To: <1368612753-32565-1-git-send-email-plagnioj@jcrosoft.com> References: <1368612753-32565-1-git-send-email-plagnioj@jcrosoft.com> Message-ID: <51936512.9020400@atmel.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 15/05/2013 12:12, Jean-Christophe PLAGNIOL-VILLARD : > since commit 838a2ae80a6ab52139fb1bf0a93ea8c5eff94488 > Author: Shawn Guo > Date: Sat Jan 12 11:50:05 2013 +0000 > > ARM: use clockevents_config_and_register() where possible > > The timer is wrongly configured and result in a nice crash > so revert it on rm9200 timer > > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD > Cc: stable # 3.8+ > Cc: Shawn Guo > Cc: Nicolas Ferre Ok, even if I said that it would have been better to understand the root cause of this, it is also true that we have to move forward in the meantime... So, yes, I take it for at91-3.10-fixes: Acked-by: Nicolas Ferre Thanks, > --- > arch/arm/mach-at91/at91rm9200_time.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c > index 2acdff4..180b302 100644 > --- a/arch/arm/mach-at91/at91rm9200_time.c > +++ b/arch/arm/mach-at91/at91rm9200_time.c > @@ -174,6 +174,7 @@ clkevt32k_next_event(unsigned long delta, struct clock_event_device *dev) > static struct clock_event_device clkevt = { > .name = "at91_tick", > .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, > + .shift = 32, > .rating = 150, > .set_next_event = clkevt32k_next_event, > .set_mode = clkevt32k_mode, > @@ -264,9 +265,11 @@ void __init at91rm9200_timer_init(void) > at91_st_write(AT91_ST_RTMR, 1); > > /* Setup timer clockevent, with minimum of two ticks (important!!) */ > + clkevt.mult = div_sc(AT91_SLOW_CLOCK, NSEC_PER_SEC, clkevt.shift); > + clkevt.max_delta_ns = clockevent_delta2ns(AT91_ST_ALMV, &clkevt); > + clkevt.min_delta_ns = clockevent_delta2ns(2, &clkevt) + 1; > clkevt.cpumask = cpumask_of(0); > - clockevents_config_and_register(&clkevt, AT91_SLOW_CLOCK, > - 2, AT91_ST_ALMV); > + clockevents_register_device(&clkevt); > > /* register clocksource */ > clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK); > -- Nicolas Ferre