mx25: Clean up clock calculations
authorBenoît Thébaudeau <benoit.thebaudeau@advansee.com>
Thu, 27 Sep 2012 10:27:14 +0000 (10:27 +0000)
committerTom Rini <trini@ti.com>
Mon, 15 Oct 2012 18:54:12 +0000 (11:54 -0700)
Avoid possible overflow in clock calculations, and do not waste calls to lldiv()
to divide simple ulongs.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Cc: Stefano Babic <sbabic@denx.de>
arch/arm/cpu/arm926ejs/mx25/generic.c

index d34e84cf9abbe55800e6009c17f9bae009f3003c..e25a695e9ec4325cde246574b69ba6f595d4cdf4 100644 (file)
@@ -80,12 +80,12 @@ ulong imx_get_armclk(void)
        ulong div;
 
        if (cctl & CCM_CCTL_ARM_SRC)
-               fref = lldiv((fref * 3), 4);
+               fref = lldiv((u64) fref * 3, 4);
 
        div = ((cctl >> CCM_CCTL_ARM_DIV_SHIFT)
               & CCM_CCTL_ARM_DIV_MASK) + 1;
 
-       return lldiv(fref, div);
+       return fref / div;
 }
 
 ulong imx_get_ahbclk(void)
@@ -98,7 +98,7 @@ ulong imx_get_ahbclk(void)
        div = ((cctl >> CCM_CCTL_AHB_DIV_SHIFT)
               & CCM_CCTL_AHB_DIV_MASK) + 1;
 
-       return lldiv(fref, div);
+       return fref / div;
 }
 
 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 = ((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)