diff options
author | Benoît Thébaudeau <benoit.thebaudeau@advansee.com> | 2012-09-27 10:22:51 +0000 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2012-10-15 11:54:11 -0700 |
commit | 55c8df0cb14843d4e19af18e0431f3d9b293c22a (patch) | |
tree | fffb32ae31d38173bff42f0abb4d5d457d131e48 /arch | |
parent | b94792982f8f5d584f4c032117ecbc8abcec977f (diff) | |
download | u-boot-imx-55c8df0cb14843d4e19af18e0431f3d9b293c22a.zip u-boot-imx-55c8df0cb14843d4e19af18e0431f3d9b293c22a.tar.gz u-boot-imx-55c8df0cb14843d4e19af18e0431f3d9b293c22a.tar.bz2 |
mx5 clocks: Fix get_periph_clk()
In the case periph_clk comes from periph_apm_clk, the latter is selected by the
CCM.CBCMR.periph_apm_sel mux, which can source the lp_apm clock from its
input ♯2. get_periph_clk() returned 0 instead of the lp_apm clock frequency in
this case.
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Cc: Stefano Babic <sbabic@denx.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/cpu/armv7/mx5/clock.c | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/arch/arm/cpu/armv7/mx5/clock.c b/arch/arm/cpu/armv7/mx5/clock.c index 8c71a51..e6eae7e 100644 --- a/arch/arm/cpu/armv7/mx5/clock.c +++ b/arch/arm/cpu/armv7/mx5/clock.c @@ -240,6 +240,26 @@ static u32 get_fpm(void) #endif /* + * This function returns the low power audio clock. + */ +static u32 get_lp_apm(void) +{ + u32 ret_val = 0; + u32 ccsr = readl(&mxc_ccm->ccsr); + + if (ccsr & MXC_CCM_CCSR_LP_APM) +#if defined(CONFIG_MX51) + ret_val = get_fpm(); +#elif defined(CONFIG_MX53) + ret_val = decode_pll(mxc_plls[PLL4_CLOCK], MXC_HCLK); +#endif + else + ret_val = MXC_HCLK; + + return ret_val; +} + +/* * Get mcu main rate */ u32 get_mcu_main_clk(void) @@ -267,6 +287,8 @@ u32 get_periph_clk(void) return decode_pll(mxc_plls[PLL1_CLOCK], MXC_HCLK); case 1: return decode_pll(mxc_plls[PLL3_CLOCK], MXC_HCLK); + case 2: + return get_lp_apm(); default: return 0; } @@ -336,26 +358,6 @@ static u32 get_uart_clk(void) } /* - * This function returns the low power audio clock. - */ -static u32 get_lp_apm(void) -{ - u32 ret_val = 0; - u32 ccsr = readl(&mxc_ccm->ccsr); - - if (ccsr & MXC_CCM_CCSR_LP_APM) -#if defined(CONFIG_MX51) - ret_val = get_fpm(); -#elif defined(CONFIG_MX53) - ret_val = decode_pll(mxc_plls[PLL4_CLOCK], MXC_HCLK); -#endif - else - ret_val = MXC_HCLK; - - return ret_val; -} - -/* * get cspi clock rate. */ static u32 imx_get_cspiclk(void) |