diff options
Diffstat (limited to 'drivers/clocksource/time-armada-370-xp.c')
| -rw-r--r-- | drivers/clocksource/time-armada-370-xp.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/clocksource/time-armada-370-xp.c b/drivers/clocksource/time-armada-370-xp.c index 0451e62fac7a..3a0704b0d739 100644 --- a/drivers/clocksource/time-armada-370-xp.c +++ b/drivers/clocksource/time-armada-370-xp.c | |||
| @@ -293,6 +293,7 @@ static void __init armada_xp_timer_init(struct device_node *np) | |||
| 293 | 293 | ||
| 294 | /* The 25Mhz fixed clock is mandatory, and must always be available */ | 294 | /* The 25Mhz fixed clock is mandatory, and must always be available */ |
| 295 | BUG_ON(IS_ERR(clk)); | 295 | BUG_ON(IS_ERR(clk)); |
| 296 | clk_prepare_enable(clk); | ||
| 296 | timer_clk = clk_get_rate(clk); | 297 | timer_clk = clk_get_rate(clk); |
| 297 | 298 | ||
| 298 | armada_370_xp_timer_common_init(np); | 299 | armada_370_xp_timer_common_init(np); |
| @@ -300,11 +301,40 @@ static void __init armada_xp_timer_init(struct device_node *np) | |||
| 300 | CLOCKSOURCE_OF_DECLARE(armada_xp, "marvell,armada-xp-timer", | 301 | CLOCKSOURCE_OF_DECLARE(armada_xp, "marvell,armada-xp-timer", |
| 301 | armada_xp_timer_init); | 302 | armada_xp_timer_init); |
| 302 | 303 | ||
| 304 | static void __init armada_375_timer_init(struct device_node *np) | ||
| 305 | { | ||
| 306 | struct clk *clk; | ||
| 307 | |||
| 308 | clk = of_clk_get_by_name(np, "fixed"); | ||
| 309 | if (!IS_ERR(clk)) { | ||
| 310 | clk_prepare_enable(clk); | ||
| 311 | timer_clk = clk_get_rate(clk); | ||
| 312 | } else { | ||
| 313 | |||
| 314 | /* | ||
| 315 | * This fallback is required in order to retain proper | ||
| 316 | * devicetree backwards compatibility. | ||
| 317 | */ | ||
| 318 | clk = of_clk_get(np, 0); | ||
| 319 | |||
| 320 | /* Must have at least a clock */ | ||
| 321 | BUG_ON(IS_ERR(clk)); | ||
| 322 | clk_prepare_enable(clk); | ||
| 323 | timer_clk = clk_get_rate(clk) / TIMER_DIVIDER; | ||
| 324 | timer25Mhz = false; | ||
| 325 | } | ||
| 326 | |||
| 327 | armada_370_xp_timer_common_init(np); | ||
| 328 | } | ||
| 329 | CLOCKSOURCE_OF_DECLARE(armada_375, "marvell,armada-375-timer", | ||
| 330 | armada_375_timer_init); | ||
| 331 | |||
| 303 | static void __init armada_370_timer_init(struct device_node *np) | 332 | static void __init armada_370_timer_init(struct device_node *np) |
| 304 | { | 333 | { |
| 305 | struct clk *clk = of_clk_get(np, 0); | 334 | struct clk *clk = of_clk_get(np, 0); |
| 306 | 335 | ||
| 307 | BUG_ON(IS_ERR(clk)); | 336 | BUG_ON(IS_ERR(clk)); |
| 337 | clk_prepare_enable(clk); | ||
| 308 | timer_clk = clk_get_rate(clk) / TIMER_DIVIDER; | 338 | timer_clk = clk_get_rate(clk) / TIMER_DIVIDER; |
| 309 | timer25Mhz = false; | 339 | timer25Mhz = false; |
| 310 | 340 | ||
