X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=include%2Fasm-arm%2Farch-omap%2Fsystem.h;fp=include%2Fasm-arm%2Farch-omap%2Fsystem.h;h=6724a81bd10bbecd841851e47ac9d5d899d4aa84;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=ac2bfa433f06e9c160ccd404f98849f272e648d8;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/include/asm-arm/arch-omap/system.h b/include/asm-arm/arch-omap/system.h index ac2bfa433..6724a81bd 100644 --- a/include/asm-arm/arch-omap/system.h +++ b/include/asm-arm/arch-omap/system.h @@ -4,17 +4,17 @@ */ #ifndef __ASM_ARCH_SYSTEM_H #define __ASM_ARCH_SYSTEM_H +#include #include #include #include +#include #ifndef CONFIG_MACH_VOICEBLUE #define voiceblue_reset() do {} while (0) #endif -extern void omap_prcm_arch_reset(char mode); - static inline void arch_idle(void) { cpu_do_idle(); @@ -38,12 +38,24 @@ static inline void omap1_arch_reset(char mode) omap_writew(1, ARM_RSTCT1); } +static inline void omap2_arch_reset(char mode) +{ + u32 rate; + struct clk *vclk, *sclk; + + vclk = clk_get(NULL, "virt_prcm_set"); + sclk = clk_get(NULL, "sys_ck"); + rate = clk_get_rate(sclk); + clk_set_rate(vclk, rate); /* go to bypass for OMAP limitation */ + RM_RSTCTRL_WKUP |= 2; +} + static inline void arch_reset(char mode) { if (!cpu_is_omap24xx()) omap1_arch_reset(mode); else - omap_prcm_arch_reset(mode); + omap2_arch_reset(mode); } #endif