diff options
Diffstat (limited to 'drivers/clocksource/timer-sun5i.c')
-rw-r--r-- | drivers/clocksource/timer-sun5i.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/drivers/clocksource/timer-sun5i.c b/drivers/clocksource/timer-sun5i.c index bca9573e036a..24c83f9efd87 100644 --- a/drivers/clocksource/timer-sun5i.c +++ b/drivers/clocksource/timer-sun5i.c | |||
@@ -152,13 +152,6 @@ static irqreturn_t sun5i_timer_interrupt(int irq, void *dev_id) | |||
152 | return IRQ_HANDLED; | 152 | return IRQ_HANDLED; |
153 | } | 153 | } |
154 | 154 | ||
155 | static cycle_t sun5i_clksrc_read(struct clocksource *clksrc) | ||
156 | { | ||
157 | struct sun5i_timer_clksrc *cs = to_sun5i_timer_clksrc(clksrc); | ||
158 | |||
159 | return ~readl(cs->timer.base + TIMER_CNTVAL_LO_REG(1)); | ||
160 | } | ||
161 | |||
162 | static int sun5i_rate_cb_clksrc(struct notifier_block *nb, | 155 | static int sun5i_rate_cb_clksrc(struct notifier_block *nb, |
163 | unsigned long event, void *data) | 156 | unsigned long event, void *data) |
164 | { | 157 | { |
@@ -217,13 +210,8 @@ static int __init sun5i_setup_clocksource(struct device_node *node, | |||
217 | writel(TIMER_CTL_ENABLE | TIMER_CTL_RELOAD, | 210 | writel(TIMER_CTL_ENABLE | TIMER_CTL_RELOAD, |
218 | base + TIMER_CTL_REG(1)); | 211 | base + TIMER_CTL_REG(1)); |
219 | 212 | ||
220 | cs->clksrc.name = node->name; | 213 | ret = clocksource_mmio_init(base + TIMER_CNTVAL_LO_REG(1), node->name, |
221 | cs->clksrc.rating = 340; | 214 | rate, 340, 32, clocksource_mmio_readl_down); |
222 | cs->clksrc.read = sun5i_clksrc_read; | ||
223 | cs->clksrc.mask = CLOCKSOURCE_MASK(32); | ||
224 | cs->clksrc.flags = CLOCK_SOURCE_IS_CONTINUOUS; | ||
225 | |||
226 | ret = clocksource_register_hz(&cs->clksrc, rate); | ||
227 | if (ret) { | 215 | if (ret) { |
228 | pr_err("Couldn't register clock source.\n"); | 216 | pr_err("Couldn't register clock source.\n"); |
229 | goto err_remove_notifier; | 217 | goto err_remove_notifier; |