mx5 clocks: Fix get_ipg_per_clk()
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@advansee.com> Cc: Stefano Babic <sbabic@denx.de>
This commit is contained in:
parent
55c8df0cb1
commit
f124e718f4
|
@ -315,16 +315,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));
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue