diff options
author | Tony Lindgren <tony@atomide.com> | 2006-09-25 05:41:20 -0400 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2006-09-25 05:41:20 -0400 |
commit | ae78dcf79aefa98a1ed245898467eb6d3bfc11e6 (patch) | |
tree | 9aa69ece663dd5c8ed4ec5ec1cb776be04ec25b6 /arch/arm/mach-omap2/clock.c | |
parent | 7c250413e5b7c3dfae89354725b70c76d7621395 (diff) |
ARM: OMAP: Avoid sleeping during arch_reset
If we call clk_get() from arch_reset we get ugly messages before
reboot.
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/clock.c')
-rw-r--r-- | arch/arm/mach-omap2/clock.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c index d1b648a4efbf..3d0792e0366b 100644 --- a/arch/arm/mach-omap2/clock.c +++ b/arch/arm/mach-omap2/clock.c | |||
@@ -36,6 +36,8 @@ | |||
36 | 36 | ||
37 | static struct prcm_config *curr_prcm_set; | 37 | static struct prcm_config *curr_prcm_set; |
38 | static u32 curr_perf_level = PRCM_FULL_SPEED; | 38 | static u32 curr_perf_level = PRCM_FULL_SPEED; |
39 | static struct clk *vclk; | ||
40 | static struct clk *sclk; | ||
39 | 41 | ||
40 | /*------------------------------------------------------------------------- | 42 | /*------------------------------------------------------------------------- |
41 | * Omap2 specific clock functions | 43 | * Omap2 specific clock functions |
@@ -984,6 +986,20 @@ static void __init omap2_get_crystal_rate(struct clk *osc, struct clk *sys) | |||
984 | sys->rate = sclk; | 986 | sys->rate = sclk; |
985 | } | 987 | } |
986 | 988 | ||
989 | /* | ||
990 | * Set clocks for bypass mode for reboot to work. | ||
991 | */ | ||
992 | void omap2_clk_prepare_for_reboot(void) | ||
993 | { | ||
994 | u32 rate; | ||
995 | |||
996 | if (vclk == NULL || sclk == NULL) | ||
997 | return; | ||
998 | |||
999 | rate = clk_get_rate(sclk); | ||
1000 | clk_set_rate(vclk, rate); | ||
1001 | } | ||
1002 | |||
987 | #ifdef CONFIG_OMAP_RESET_CLOCKS | 1003 | #ifdef CONFIG_OMAP_RESET_CLOCKS |
988 | static void __init omap2_disable_unused_clocks(void) | 1004 | static void __init omap2_disable_unused_clocks(void) |
989 | { | 1005 | { |
@@ -1080,5 +1096,9 @@ int __init omap2_clk_init(void) | |||
1080 | if (cpu_is_omap2430()) | 1096 | if (cpu_is_omap2430()) |
1081 | clk_enable(&sdrc_ick); | 1097 | clk_enable(&sdrc_ick); |
1082 | 1098 | ||
1099 | /* Avoid sleeping sleeping during omap2_clk_prepare_for_reboot() */ | ||
1100 | vclk = clk_get(NULL, "virt_prcm_set"); | ||
1101 | sclk = clk_get(NULL, "sys_ck"); | ||
1102 | |||
1083 | return 0; | 1103 | return 0; |
1084 | } | 1104 | } |