diff options
Diffstat (limited to 'arch/arm/cpu/armv7/omap3/clock.c')
| -rw-r--r-- | arch/arm/cpu/armv7/omap3/clock.c | 20 | 
1 files changed, 19 insertions, 1 deletions
| diff --git a/arch/arm/cpu/armv7/omap3/clock.c b/arch/arm/cpu/armv7/omap3/clock.c index 3acbc9c86..e903ed9ac 100644 --- a/arch/arm/cpu/armv7/omap3/clock.c +++ b/arch/arm/cpu/armv7/omap3/clock.c @@ -478,6 +478,24 @@ static void dpll4_init_36xx(u32 sil_index, u32 clk_index)  	wait_on_value(ST_PERIPH_CLK, 2, &prcm_base->idlest_ckgen, LDELAY);  } +static void dpll5_init_36xx(u32 sil_index, u32 clk_index) +{ +	struct prcm *prcm_base = (struct prcm *)PRCM_BASE; +	dpll_param *ptr = (dpll_param *) get_36x_per2_dpll_param(); + +	/* Moving it to the right sysclk base */ +	ptr = ptr + clk_index; + +	/* PER2 DPLL (DPLL5) */ +	sr32(&prcm_base->clken2_pll, 0, 3, PLL_STOP); +	wait_on_value(1, 0, &prcm_base->idlest2_ckgen, LDELAY); +	sr32(&prcm_base->clksel5_pll, 0, 5, ptr->m2); /* set M2 (usbtll_fck) */ +	sr32(&prcm_base->clksel4_pll, 8, 11, ptr->m); /* set m (11-bit multiplier) */ +	sr32(&prcm_base->clksel4_pll, 0, 7, ptr->n); /* set n (7-bit divider)*/ +	sr32(&prcm_base->clken2_pll, 0, 3, PLL_LOCK);   /* lock mode */ +	wait_on_value(1, 1, &prcm_base->idlest2_ckgen, LDELAY); +} +  static void mpu_init_36xx(u32 sil_index, u32 clk_index)  {  	struct prcm *prcm_base = (struct prcm *)PRCM_BASE; @@ -582,7 +600,7 @@ void prcm_init(void)  		dpll3_init_36xx(0, clk_index);  		dpll4_init_36xx(0, clk_index); -		dpll5_init_34xx(0, clk_index); +		dpll5_init_36xx(0, clk_index);  		iva_init_36xx(0, clk_index);  		mpu_init_36xx(0, clk_index); |