[U-Boot] [PATCH v2 09/14] mx5 clocks: Fix get_ipg_per_clk()

Benoît Thébaudeau benoit.thebaudeau at advansee.com
Thu Sep 27 22:23:08 CEST 2012


This fixes the "IPG PERCLK" frequency printed by the clocks command. The issue
was that get_ipg_per_clk() used periph_clk instead of lp_apm in the case
CCM.CBCMR.perclk_lp_apm_sel is set.

It also fixes I²C support.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau at advansee.com>
Cc: Stefano Babic <sbabic at denx.de>
---
This patch supersedes http://patchwork.ozlabs.org/patch/177407/ .
Changes for v2:
 - Consequences from the previous cleanup patches.
 - Improve detailed description.

 .../arch/arm/cpu/armv7/mx5/clock.c                 |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git u-boot-imx-e1eb75b.orig/arch/arm/cpu/armv7/mx5/clock.c u-boot-imx-e1eb75b/arch/arm/cpu/armv7/mx5/clock.c
index b155214..c7a3c36 100644
--- u-boot-imx-e1eb75b.orig/arch/arm/cpu/armv7/mx5/clock.c
+++ u-boot-imx-e1eb75b/arch/arm/cpu/armv7/mx5/clock.c
@@ -310,16 +310,20 @@ static u32 get_ipg_clk(void)
  */
 static u32 get_ipg_per_clk(void)
 {
-	u32 pred1, pred2, podf;
+	u32 freq, pred1, pred2, podf;
 
 	if (readl(&mxc_ccm->cbcmr) & MXC_CCM_CBCMR_PERCLK_IPG_CLK_SEL)
 		return get_ipg_clk();
-	/* Fixme: not handle what about lpm*/
+
+	if (readl(&mxc_ccm->cbcmr) & MXC_CCM_CBCMR_PERCLK_LP_APM_CLK_SEL)
+		freq = get_lp_apm();
+	else
+		freq = get_periph_clk();
 	podf = readl(&mxc_ccm->cbcdr);
 	pred1 = MXC_CCM_CBCDR_PERCLK_PRED1_RD(podf);
 	pred2 = MXC_CCM_CBCDR_PERCLK_PRED2_RD(podf);
 	podf = MXC_CCM_CBCDR_PERCLK_PODF_RD(podf);
-	return get_periph_clk() / ((pred1 + 1) * (pred2 + 1) * (podf + 1));
+	return freq / ((pred1 + 1) * (pred2 + 1) * (podf + 1));
 }
 
 /*


More information about the U-Boot mailing list