diff options
-rw-r--r-- | arch/arm/mach-omap2/smartreflex.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c index c2d85c14b5e..b8374d40e77 100644 --- a/arch/arm/mach-omap2/smartreflex.c +++ b/arch/arm/mach-omap2/smartreflex.c @@ -27,6 +27,10 @@ #include <plat/common.h> +#ifdef CONFIG_OMAP4_DPLL_CASCADING +#include <mach/omap4-common.h> +#endif + #include "pm.h" #include "dvfs.h" #include "smartreflex.h" @@ -256,10 +260,20 @@ static void sr_set_clk_length(struct omap_sr *sr) __func__); return; } - sys_clk_speed = clk_get_rate(sys_ck); +#ifdef CONFIG_OMAP4_DPLL_CASCADING + if (omap4_is_in_dpll_cascading()) + sys_clk_speed = 12288000; + else +#endif + sys_clk_speed = clk_get_rate(sys_ck); clk_put(sys_ck); switch (sys_clk_speed) { +#ifdef CONFIG_OMAP4_DPLL_CASCADING + case 12288000: + sr->clk_length = 0x3d; + break; +#endif case 12000000: sr->clk_length = SRCLKLENGTH_12MHZ_SYSCLK; break; @@ -558,7 +572,9 @@ int sr_configure_errgen(struct voltagedomain *voltdm) return -EINVAL; } +#ifndef CONFIG_OMAP4_DPLL_CASCADING if (!sr->clk_length) +#endif sr_set_clk_length(sr); senp_en = sr->senp_mod; @@ -671,7 +687,9 @@ int sr_configure_minmax(struct voltagedomain *voltdm) return -EINVAL; } +#ifndef CONFIG_OMAP4_DPLL_CASCADING if (!sr->clk_length) +#endif sr_set_clk_length(sr); senp_en = sr->senp_mod; |