1
0
Fork 0

clocksource/drivers/moxart: Refactor enable/disable

This patch abstracts the enable and disable register writes into their
own functions in preparation for future changes to use SoC specific
values for the writes.

Signed-off-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
hifive-unleashed-5.1
Joel Stanley 2016-07-21 23:13:51 +09:30 committed by Daniel Lezcano
parent 950d8381d9
commit 7016474278
1 changed files with 16 additions and 6 deletions

View File

@ -58,15 +58,25 @@
static void __iomem *base;
static unsigned int clock_count_per_tick;
static int moxart_shutdown(struct clock_event_device *evt)
static inline void moxart_disable(struct clock_event_device *evt)
{
writel(TIMER1_DISABLE, base + TIMER_CR);
}
static inline void moxart_enable(struct clock_event_device *evt)
{
writel(TIMER1_ENABLE, base + TIMER_CR);
}
static int moxart_shutdown(struct clock_event_device *evt)
{
moxart_disable(evt);
return 0;
}
static int moxart_set_oneshot(struct clock_event_device *evt)
{
writel(TIMER1_DISABLE, base + TIMER_CR);
moxart_disable(evt);
writel(~0, base + TIMER1_BASE + REG_LOAD);
return 0;
}
@ -74,21 +84,21 @@ static int moxart_set_oneshot(struct clock_event_device *evt)
static int moxart_set_periodic(struct clock_event_device *evt)
{
writel(clock_count_per_tick, base + TIMER1_BASE + REG_LOAD);
writel(TIMER1_ENABLE, base + TIMER_CR);
moxart_enable(evt);
return 0;
}
static int moxart_clkevt_next_event(unsigned long cycles,
struct clock_event_device *unused)
struct clock_event_device *evt)
{
u32 u;
writel(TIMER1_DISABLE, base + TIMER_CR);
moxart_disable(evt);
u = readl(base + TIMER1_BASE + REG_COUNT) - cycles;
writel(u, base + TIMER1_BASE + REG_MATCH1);
writel(TIMER1_ENABLE, base + TIMER_CR);
moxart_enable(evt);
return 0;
}