diff options
| author | Fabio Estevam <fabio.estevam@freescale.com> | 2013-04-10 09:32:57 +0000 | 
|---|---|---|
| committer | Stefano Babic <sbabic@denx.de> | 2013-04-22 09:57:44 +0200 | 
| commit | 25b4aa146a3056aa3b42fa9e1682e027b9596eca (patch) | |
| tree | c3c8cb39653a481db417b053cef3b2678edef4a4 /arch/arm/cpu/armv7/mx6/clock.c | |
| parent | dc88403e6c29ddf21b9abce4d7b11ec822021f5b (diff) | |
| download | olio-uboot-2014.01-25b4aa146a3056aa3b42fa9e1682e027b9596eca.tar.xz olio-uboot-2014.01-25b4aa146a3056aa3b42fa9e1682e027b9596eca.zip | |
mx6: Add solo-lite variant support
mx6 solo-lite is another member of the mx6 series.
For more information about mx6 solo-lite, please visit:
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6SL&nodeId=018rH3ZrDRB24A
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Diffstat (limited to 'arch/arm/cpu/armv7/mx6/clock.c')
| -rw-r--r-- | arch/arm/cpu/armv7/mx6/clock.c | 38 | 
1 files changed, 36 insertions, 2 deletions
| diff --git a/arch/arm/cpu/armv7/mx6/clock.c b/arch/arm/cpu/armv7/mx6/clock.c index a50db70b1..8cba4fd78 100644 --- a/arch/arm/cpu/armv7/mx6/clock.c +++ b/arch/arm/cpu/armv7/mx6/clock.c @@ -186,12 +186,16 @@ static u32 get_ipg_per_clk(void)  static u32 get_uart_clk(void)  {  	u32 reg, uart_podf; - +	u32 freq = PLL3_80M;  	reg = __raw_readl(&imx_ccm->cscdr1); +#ifdef CONFIG_MX6SL +	if (reg & MXC_CCM_CSCDR1_UART_CLK_SEL) +		freq = MXC_HCLK; +#endif  	reg &= MXC_CCM_CSCDR1_UART_CLK_PODF_MASK;  	uart_podf = reg >> MXC_CCM_CSCDR1_UART_CLK_PODF_OFFSET; -	return PLL3_80M / (uart_podf + 1); +	return freq / (uart_podf + 1);  }  static u32 get_cspi_clk(void) @@ -252,6 +256,35 @@ static u32 get_emi_slow_clk(void)  	return root_freq / (emi_slow_pof + 1);  } +#ifdef CONFIG_MX6SL +static u32 get_mmdc_ch0_clk(void) +{ +	u32 cbcmr = __raw_readl(&imx_ccm->cbcmr); +	u32 cbcdr = __raw_readl(&imx_ccm->cbcdr); +	u32 freq, podf; + +	podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH1_PODF_MASK) \ +			>> MXC_CCM_CBCDR_MMDC_CH1_PODF_OFFSET; + +	switch ((cbcmr & MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK) >> +		MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET) { +	case 0: +		freq = decode_pll(PLL_BUS, MXC_HCLK); +		break; +	case 1: +		freq = PLL2_PFD2_FREQ; +		break; +	case 2: +		freq = PLL2_PFD0_FREQ; +		break; +	case 3: +		freq = PLL2_PFD2_DIV_FREQ; +	} + +	return freq / (podf + 1); + +} +#else  static u32 get_mmdc_ch0_clk(void)  {  	u32 cbcdr = __raw_readl(&imx_ccm->cbcdr); @@ -260,6 +293,7 @@ static u32 get_mmdc_ch0_clk(void)  	return get_periph_clk() / (mmdc_ch0_podf + 1);  } +#endif  static u32 get_usdhc_clk(u32 port)  { |