diff options
Diffstat (limited to 'drivers/clocksource/nomadik-mtu.c')
-rw-r--r-- | drivers/clocksource/nomadik-mtu.c | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/drivers/clocksource/nomadik-mtu.c b/drivers/clocksource/nomadik-mtu.c index 8914c3c1c88b..025afc6dd324 100644 --- a/drivers/clocksource/nomadik-mtu.c +++ b/drivers/clocksource/nomadik-mtu.c | |||
@@ -134,12 +134,32 @@ static void nmdk_clkevt_mode(enum clock_event_mode mode, | |||
134 | } | 134 | } |
135 | } | 135 | } |
136 | 136 | ||
137 | void nmdk_clksrc_reset(void) | ||
138 | { | ||
139 | /* Disable */ | ||
140 | writel(0, mtu_base + MTU_CR(0)); | ||
141 | |||
142 | /* ClockSource: configure load and background-load, and fire it up */ | ||
143 | writel(nmdk_cycle, mtu_base + MTU_LR(0)); | ||
144 | writel(nmdk_cycle, mtu_base + MTU_BGLR(0)); | ||
145 | |||
146 | writel(clk_prescale | MTU_CRn_32BITS | MTU_CRn_ENA, | ||
147 | mtu_base + MTU_CR(0)); | ||
148 | } | ||
149 | |||
150 | static void nmdk_clkevt_resume(struct clock_event_device *cedev) | ||
151 | { | ||
152 | nmdk_clkevt_reset(); | ||
153 | nmdk_clksrc_reset(); | ||
154 | } | ||
155 | |||
137 | static struct clock_event_device nmdk_clkevt = { | 156 | static struct clock_event_device nmdk_clkevt = { |
138 | .name = "mtu_1", | 157 | .name = "mtu_1", |
139 | .features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC, | 158 | .features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC, |
140 | .rating = 200, | 159 | .rating = 200, |
141 | .set_mode = nmdk_clkevt_mode, | 160 | .set_mode = nmdk_clkevt_mode, |
142 | .set_next_event = nmdk_clkevt_next, | 161 | .set_next_event = nmdk_clkevt_next, |
162 | .resume = nmdk_clkevt_resume, | ||
143 | }; | 163 | }; |
144 | 164 | ||
145 | /* | 165 | /* |
@@ -161,19 +181,6 @@ static struct irqaction nmdk_timer_irq = { | |||
161 | .dev_id = &nmdk_clkevt, | 181 | .dev_id = &nmdk_clkevt, |
162 | }; | 182 | }; |
163 | 183 | ||
164 | void nmdk_clksrc_reset(void) | ||
165 | { | ||
166 | /* Disable */ | ||
167 | writel(0, mtu_base + MTU_CR(0)); | ||
168 | |||
169 | /* ClockSource: configure load and background-load, and fire it up */ | ||
170 | writel(nmdk_cycle, mtu_base + MTU_LR(0)); | ||
171 | writel(nmdk_cycle, mtu_base + MTU_BGLR(0)); | ||
172 | |||
173 | writel(clk_prescale | MTU_CRn_32BITS | MTU_CRn_ENA, | ||
174 | mtu_base + MTU_CR(0)); | ||
175 | } | ||
176 | |||
177 | void __init nmdk_timer_init(void __iomem *base, int irq) | 184 | void __init nmdk_timer_init(void __iomem *base, int irq) |
178 | { | 185 | { |
179 | unsigned long rate; | 186 | unsigned long rate; |