diff options
| author | Gregory CLEMENT <gregory.clement@free-electrons.com> | 2012-11-17 09:22:25 -0500 |
|---|---|---|
| committer | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2012-11-20 08:46:49 -0500 |
| commit | 307c2bf467e3682c6df1b8186365224fd2d581d3 (patch) | |
| tree | e746efe036e9e5bf44599239f3edf5f1106d5b18 /drivers/clocksource | |
| parent | 9d2027830c6306b079d5e888d40ec1f2efebd6ad (diff) | |
clocksource: convert time-armada-370-xp to clk framework
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Tested-by Gregory CLEMENT <gregory.clement@free-electrons.com>
Diffstat (limited to 'drivers/clocksource')
| -rw-r--r-- | drivers/clocksource/time-armada-370-xp.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/clocksource/time-armada-370-xp.c b/drivers/clocksource/time-armada-370-xp.c index 4674f94957cd..a4605fd7e303 100644 --- a/drivers/clocksource/time-armada-370-xp.c +++ b/drivers/clocksource/time-armada-370-xp.c | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
| 19 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
| 20 | #include <linux/kernel.h> | 20 | #include <linux/kernel.h> |
| 21 | #include <linux/clk.h> | ||
| 21 | #include <linux/timer.h> | 22 | #include <linux/timer.h> |
| 22 | #include <linux/clockchips.h> | 23 | #include <linux/clockchips.h> |
| 23 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
| @@ -167,7 +168,6 @@ void __init armada_370_xp_timer_init(void) | |||
| 167 | u32 u; | 168 | u32 u; |
| 168 | struct device_node *np; | 169 | struct device_node *np; |
| 169 | unsigned int timer_clk; | 170 | unsigned int timer_clk; |
| 170 | int ret; | ||
| 171 | np = of_find_compatible_node(NULL, NULL, "marvell,armada-370-xp-timer"); | 171 | np = of_find_compatible_node(NULL, NULL, "marvell,armada-370-xp-timer"); |
| 172 | timer_base = of_iomap(np, 0); | 172 | timer_base = of_iomap(np, 0); |
| 173 | WARN_ON(!timer_base); | 173 | WARN_ON(!timer_base); |
| @@ -179,13 +179,14 @@ void __init armada_370_xp_timer_init(void) | |||
| 179 | timer_base + TIMER_CTRL_OFF); | 179 | timer_base + TIMER_CTRL_OFF); |
| 180 | timer_clk = 25000000; | 180 | timer_clk = 25000000; |
| 181 | } else { | 181 | } else { |
| 182 | u32 clk = 0; | 182 | unsigned long rate = 0; |
| 183 | ret = of_property_read_u32(np, "clock-frequency", &clk); | 183 | struct clk *clk = of_clk_get(np, 0); |
| 184 | WARN_ON(!clk || ret < 0); | 184 | WARN_ON(IS_ERR(clk)); |
| 185 | rate = clk_get_rate(clk); | ||
| 185 | u = readl(timer_base + TIMER_CTRL_OFF); | 186 | u = readl(timer_base + TIMER_CTRL_OFF); |
| 186 | writel(u & ~(TIMER0_25MHZ | TIMER1_25MHZ), | 187 | writel(u & ~(TIMER0_25MHZ | TIMER1_25MHZ), |
| 187 | timer_base + TIMER_CTRL_OFF); | 188 | timer_base + TIMER_CTRL_OFF); |
| 188 | timer_clk = clk / TIMER_DIVIDER; | 189 | timer_clk = rate / TIMER_DIVIDER; |
| 189 | } | 190 | } |
| 190 | 191 | ||
| 191 | /* We use timer 0 as clocksource, and timer 1 for | 192 | /* We use timer 0 as clocksource, and timer 1 for |
