Skip to content
Snippets Groups Projects
Commit fac7c817 authored by Benoît Thébaudeau's avatar Benoît Thébaudeau Committed by Tom Rini
Browse files

mx25: Clean up clock calculations


Avoid possible overflow in clock calculations, and do not waste calls to lldiv()
to divide simple ulongs.

Signed-off-by: default avatarBenoît Thébaudeau <benoit.thebaudeau@advansee.com>
Cc: Stefano Babic <sbabic@denx.de>
parent 3c76add2
No related branches found
No related tags found
No related merge requests found
...@@ -80,12 +80,12 @@ ulong imx_get_armclk(void) ...@@ -80,12 +80,12 @@ ulong imx_get_armclk(void)
ulong div; ulong div;
if (cctl & CCM_CCTL_ARM_SRC) if (cctl & CCM_CCTL_ARM_SRC)
fref = lldiv((fref * 3), 4); fref = lldiv((u64) fref * 3, 4);
div = ((cctl >> CCM_CCTL_ARM_DIV_SHIFT) div = ((cctl >> CCM_CCTL_ARM_DIV_SHIFT)
& CCM_CCTL_ARM_DIV_MASK) + 1; & CCM_CCTL_ARM_DIV_MASK) + 1;
return lldiv(fref, div); return fref / div;
} }
ulong imx_get_ahbclk(void) ulong imx_get_ahbclk(void)
...@@ -98,7 +98,7 @@ ulong imx_get_ahbclk(void) ...@@ -98,7 +98,7 @@ ulong imx_get_ahbclk(void)
div = ((cctl >> CCM_CCTL_AHB_DIV_SHIFT) div = ((cctl >> CCM_CCTL_AHB_DIV_SHIFT)
& CCM_CCTL_AHB_DIV_MASK) + 1; & CCM_CCTL_AHB_DIV_MASK) + 1;
return lldiv(fref, div); return fref / div;
} }
ulong imx_get_perclk(int clk) ulong imx_get_perclk(int clk)
...@@ -110,7 +110,7 @@ ulong imx_get_perclk(int clk) ...@@ -110,7 +110,7 @@ ulong imx_get_perclk(int clk)
div = readl(&ccm->pcdr[CCM_PERCLK_REG(clk)]); div = readl(&ccm->pcdr[CCM_PERCLK_REG(clk)]);
div = ((div >> CCM_PERCLK_SHIFT(clk)) & CCM_PERCLK_MASK) + 1; div = ((div >> CCM_PERCLK_SHIFT(clk)) & CCM_PERCLK_MASK) + 1;
return lldiv(fref, div); return fref / div;
} }
unsigned int mxc_get_clock(enum mxc_clock clk) unsigned int mxc_get_clock(enum mxc_clock clk)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment