aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/cpu/armv7/omap4/clocks.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/cpu/armv7/omap4/clocks.c')
-rw-r--r--arch/arm/cpu/armv7/omap4/clocks.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv7/omap4/clocks.c b/arch/arm/cpu/armv7/omap4/clocks.c
index 4f0e0cd88..008bfd8b5 100644
--- a/arch/arm/cpu/armv7/omap4/clocks.c
+++ b/arch/arm/cpu/armv7/omap4/clocks.c
@@ -248,6 +248,15 @@ static inline void wait_for_lock(u32 *const base)
}
}
+static void force_on(u32 *const reg, u32 val)
+{
+ u32 temp;
+
+ temp = readl(reg);
+ temp |= val;
+ writel(temp, reg);
+}
+
static void do_setup_dpll(u32 *const base, const struct dpll_params *params,
u8 lock)
{
@@ -441,6 +450,10 @@ static void setup_non_essential_dplls(void)
/* Now setup the dpll with the regular function */
do_setup_dpll(&prcm->cm_clkmode_dpll_usb, params, DPLL_LOCK);
+ /* Force on these two clocks */
+ force_on(&prcm->cm_div_m2_dpll_usb, 1 << 8);
+ force_on(&prcm->cm_clkdcoldo_dpll_usb, 1 << 8);
+
#ifdef CONFIG_SYS_OMAP4_ABE_SYSCK
params = &abe_dpll_params_sysclk_196608khz[sysclk_ind];
abe_ref_clk = CM_ABE_PLL_REF_CLKSEL_CLKSEL_SYSCLK;