diff options
| -rw-r--r-- | arch/arm/mach-omap2/common.h | 3 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/io.c | 18 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/timer.c | 4 |
3 files changed, 19 insertions, 6 deletions
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h index 40f4a03d728f..d6ba13e1c540 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h | |||
| @@ -293,5 +293,8 @@ extern void omap_reserve(void); | |||
| 293 | struct omap_hwmod; | 293 | struct omap_hwmod; |
| 294 | extern int omap_dss_reset(struct omap_hwmod *); | 294 | extern int omap_dss_reset(struct omap_hwmod *); |
| 295 | 295 | ||
| 296 | /* SoC specific clock initializer */ | ||
| 297 | extern int (*omap_clk_init)(void); | ||
| 298 | |||
| 296 | #endif /* __ASSEMBLER__ */ | 299 | #endif /* __ASSEMBLER__ */ |
| 297 | #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ | 300 | #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ |
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index 2c3fdd65387b..5c445ca1e271 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
| @@ -55,6 +55,12 @@ | |||
| 55 | #include "prm44xx.h" | 55 | #include "prm44xx.h" |
| 56 | 56 | ||
| 57 | /* | 57 | /* |
| 58 | * omap_clk_init: points to a function that does the SoC-specific | ||
| 59 | * clock initializations | ||
| 60 | */ | ||
| 61 | int (*omap_clk_init)(void); | ||
| 62 | |||
| 63 | /* | ||
| 58 | * The machine specific code may provide the extra mapping besides the | 64 | * The machine specific code may provide the extra mapping besides the |
| 59 | * default mapping provided here. | 65 | * default mapping provided here. |
| 60 | */ | 66 | */ |
| @@ -397,7 +403,7 @@ void __init omap2420_init_early(void) | |||
| 397 | omap242x_clockdomains_init(); | 403 | omap242x_clockdomains_init(); |
| 398 | omap2420_hwmod_init(); | 404 | omap2420_hwmod_init(); |
| 399 | omap_hwmod_init_postsetup(); | 405 | omap_hwmod_init_postsetup(); |
| 400 | omap2420_clk_init(); | 406 | omap_clk_init = omap2420_clk_init; |
| 401 | } | 407 | } |
| 402 | 408 | ||
| 403 | void __init omap2420_init_late(void) | 409 | void __init omap2420_init_late(void) |
| @@ -427,7 +433,7 @@ void __init omap2430_init_early(void) | |||
| 427 | omap243x_clockdomains_init(); | 433 | omap243x_clockdomains_init(); |
| 428 | omap2430_hwmod_init(); | 434 | omap2430_hwmod_init(); |
| 429 | omap_hwmod_init_postsetup(); | 435 | omap_hwmod_init_postsetup(); |
| 430 | omap2430_clk_init(); | 436 | omap_clk_init = omap2430_clk_init; |
| 431 | } | 437 | } |
| 432 | 438 | ||
| 433 | void __init omap2430_init_late(void) | 439 | void __init omap2430_init_late(void) |
| @@ -462,7 +468,7 @@ void __init omap3_init_early(void) | |||
| 462 | omap3xxx_clockdomains_init(); | 468 | omap3xxx_clockdomains_init(); |
| 463 | omap3xxx_hwmod_init(); | 469 | omap3xxx_hwmod_init(); |
| 464 | omap_hwmod_init_postsetup(); | 470 | omap_hwmod_init_postsetup(); |
| 465 | omap3xxx_clk_init(); | 471 | omap_clk_init = omap3xxx_clk_init; |
| 466 | } | 472 | } |
| 467 | 473 | ||
| 468 | void __init omap3430_init_early(void) | 474 | void __init omap3430_init_early(void) |
| @@ -500,7 +506,7 @@ void __init ti81xx_init_early(void) | |||
| 500 | omap3xxx_clockdomains_init(); | 506 | omap3xxx_clockdomains_init(); |
| 501 | omap3xxx_hwmod_init(); | 507 | omap3xxx_hwmod_init(); |
| 502 | omap_hwmod_init_postsetup(); | 508 | omap_hwmod_init_postsetup(); |
| 503 | omap3xxx_clk_init(); | 509 | omap_clk_init = omap3xxx_clk_init; |
| 504 | } | 510 | } |
| 505 | 511 | ||
| 506 | void __init omap3_init_late(void) | 512 | void __init omap3_init_late(void) |
| @@ -568,7 +574,7 @@ void __init am33xx_init_early(void) | |||
| 568 | am33xx_clockdomains_init(); | 574 | am33xx_clockdomains_init(); |
| 569 | am33xx_hwmod_init(); | 575 | am33xx_hwmod_init(); |
| 570 | omap_hwmod_init_postsetup(); | 576 | omap_hwmod_init_postsetup(); |
| 571 | am33xx_clk_init(); | 577 | omap_clk_init = am33xx_clk_init; |
| 572 | } | 578 | } |
| 573 | #endif | 579 | #endif |
| 574 | 580 | ||
| @@ -593,7 +599,7 @@ void __init omap4430_init_early(void) | |||
| 593 | omap44xx_clockdomains_init(); | 599 | omap44xx_clockdomains_init(); |
| 594 | omap44xx_hwmod_init(); | 600 | omap44xx_hwmod_init(); |
| 595 | omap_hwmod_init_postsetup(); | 601 | omap_hwmod_init_postsetup(); |
| 596 | omap4xxx_clk_init(); | 602 | omap_clk_init = omap4xxx_clk_init; |
| 597 | } | 603 | } |
| 598 | 604 | ||
| 599 | void __init omap4430_init_late(void) | 605 | void __init omap4430_init_late(void) |
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 2bdd4cf17a8f..f62b509ed08d 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c | |||
| @@ -547,6 +547,8 @@ static inline void __init realtime_counter_init(void) | |||
| 547 | clksrc_nr, clksrc_src) \ | 547 | clksrc_nr, clksrc_src) \ |
| 548 | void __init omap##name##_gptimer_timer_init(void) \ | 548 | void __init omap##name##_gptimer_timer_init(void) \ |
| 549 | { \ | 549 | { \ |
| 550 | if (omap_clk_init) \ | ||
| 551 | omap_clk_init(); \ | ||
| 550 | omap_dmtimer_init(); \ | 552 | omap_dmtimer_init(); \ |
| 551 | omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \ | 553 | omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \ |
| 552 | omap2_gptimer_clocksource_init((clksrc_nr), clksrc_src); \ | 554 | omap2_gptimer_clocksource_init((clksrc_nr), clksrc_src); \ |
| @@ -556,6 +558,8 @@ void __init omap##name##_gptimer_timer_init(void) \ | |||
| 556 | clksrc_nr, clksrc_src) \ | 558 | clksrc_nr, clksrc_src) \ |
| 557 | void __init omap##name##_sync32k_timer_init(void) \ | 559 | void __init omap##name##_sync32k_timer_init(void) \ |
| 558 | { \ | 560 | { \ |
| 561 | if (omap_clk_init) \ | ||
| 562 | omap_clk_init(); \ | ||
| 559 | omap_dmtimer_init(); \ | 563 | omap_dmtimer_init(); \ |
| 560 | omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \ | 564 | omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \ |
| 561 | /* Enable the use of clocksource="gp_timer" kernel parameter */ \ | 565 | /* Enable the use of clocksource="gp_timer" kernel parameter */ \ |
