diff options
author | Olof Johansson <olof@lixom.net> | 2013-01-28 16:36:23 -0500 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2013-01-28 16:36:23 -0500 |
commit | 7bcdd8d5e31db4f49ae52580e86723c376ee0999 (patch) | |
tree | bd252895046e9e17d3ab74b6a4d592b74976ca99 /drivers/clocksource/nomadik-mtu.c | |
parent | 96e61b8e34ea4982ce57319c19ab73e9e5d74165 (diff) | |
parent | f8060f5446b1f2782f0a8ca9be2d870ea4198aee (diff) |
Merge branch 'depends/cleanup' into next/drivers
* depends/cleanup: (375 commits)
ARM: at91: fix board-rm9200-dt after sys_timer conversion
clocksource: use clockevents_config_and_register() where possible
ARM: use clockevents_config_and_register() where possible
clockevents: export clockevents_config_and_register for module use
timer: vt8500: Move timer code to drivers/clocksource
irqchip: Move ARM vic.h to include/linux/irqchip/arm-vic.h
ARM: picoxcell: use common irqchip_init function
ARM: spear: use common irqchip_init function
irqchip: Move ARM VIC to drivers/irqchip
ARM: samsung: remove unused tick.h
ARM: remove unneeded vic.h includes
ARM: remove mach .handle_irq for VIC users
ARM: VIC: set handle_arch_irq in VIC initialization
ARM: VIC: shrink down vic.h
irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h
ARM: use common irqchip_init for GIC init
irqchip: Move ARM GIC to drivers/irqchip
ARM: remove mach .handle_irq for GIC users
ARM: GIC: set handle_arch_irq in GIC initialization
ARM: GIC: remove direct use of gic_raise_softirq
...
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 5f3c8dbf360f..435e54d55bbd 100644 --- a/drivers/clocksource/nomadik-mtu.c +++ b/drivers/clocksource/nomadik-mtu.c | |||
@@ -141,12 +141,32 @@ static void nmdk_clkevt_mode(enum clock_event_mode mode, | |||
141 | } | 141 | } |
142 | } | 142 | } |
143 | 143 | ||
144 | void nmdk_clksrc_reset(void) | ||
145 | { | ||
146 | /* Disable */ | ||
147 | writel(0, mtu_base + MTU_CR(0)); | ||
148 | |||
149 | /* ClockSource: configure load and background-load, and fire it up */ | ||
150 | writel(nmdk_cycle, mtu_base + MTU_LR(0)); | ||
151 | writel(nmdk_cycle, mtu_base + MTU_BGLR(0)); | ||
152 | |||
153 | writel(clk_prescale | MTU_CRn_32BITS | MTU_CRn_ENA, | ||
154 | mtu_base + MTU_CR(0)); | ||
155 | } | ||
156 | |||
157 | static void nmdk_clkevt_resume(struct clock_event_device *cedev) | ||
158 | { | ||
159 | nmdk_clkevt_reset(); | ||
160 | nmdk_clksrc_reset(); | ||
161 | } | ||
162 | |||
144 | static struct clock_event_device nmdk_clkevt = { | 163 | static struct clock_event_device nmdk_clkevt = { |
145 | .name = "mtu_1", | 164 | .name = "mtu_1", |
146 | .features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC, | 165 | .features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC, |
147 | .rating = 200, | 166 | .rating = 200, |
148 | .set_mode = nmdk_clkevt_mode, | 167 | .set_mode = nmdk_clkevt_mode, |
149 | .set_next_event = nmdk_clkevt_next, | 168 | .set_next_event = nmdk_clkevt_next, |
169 | .resume = nmdk_clkevt_resume, | ||
150 | }; | 170 | }; |
151 | 171 | ||
152 | /* | 172 | /* |
@@ -168,19 +188,6 @@ static struct irqaction nmdk_timer_irq = { | |||
168 | .dev_id = &nmdk_clkevt, | 188 | .dev_id = &nmdk_clkevt, |
169 | }; | 189 | }; |
170 | 190 | ||
171 | void nmdk_clksrc_reset(void) | ||
172 | { | ||
173 | /* Disable */ | ||
174 | writel(0, mtu_base + MTU_CR(0)); | ||
175 | |||
176 | /* ClockSource: configure load and background-load, and fire it up */ | ||
177 | writel(nmdk_cycle, mtu_base + MTU_LR(0)); | ||
178 | writel(nmdk_cycle, mtu_base + MTU_BGLR(0)); | ||
179 | |||
180 | writel(clk_prescale | MTU_CRn_32BITS | MTU_CRn_ENA, | ||
181 | mtu_base + MTU_CR(0)); | ||
182 | } | ||
183 | |||
184 | void __init nmdk_timer_init(void __iomem *base, int irq) | 191 | void __init nmdk_timer_init(void __iomem *base, int irq) |
185 | { | 192 | { |
186 | unsigned long rate; | 193 | unsigned long rate; |