Commit 70164742 authored by Joel Stanley's avatar Joel Stanley Committed by Daniel Lezcano
Browse files

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: default avatarJoel Stanley <joel@jms.id.au>
Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
parent 950d8381
Loading
Loading
Loading
Loading
+16 −6
Original line number Diff line number Diff line
@@ -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;
}