summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorWolfram Sang <w.sang@pengutronix.de>2012-06-14 15:20:58 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-06-30 12:53:23 +0200
commit8a6877364ad7cb6a04e5d41580b68873215ef8fc (patch)
tree8fa8a401ada5a3a32fecaa5cace4e9eb9a8572e7 /arch
parentead6ec8b4f48e4780a18e06a23f8a378277d28f3 (diff)
downloadbarebox-8a6877364ad7cb6a04e5d41580b68873215ef8fc.tar.gz
barebox-8a6877364ad7cb6a04e5d41580b68873215ef8fc.tar.xz
arm: mxs: make get_hclk result useable for upcoming set_hclk
To avoid getting a different divider due to rounding errors when using set_hclk later, use DIV_ROUND_UP for the returned value. Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-mxs/speed-imx23.c5
-rw-r--r--arch/arm/mach-mxs/speed-imx28.c5
2 files changed, 6 insertions, 4 deletions
diff --git a/arch/arm/mach-mxs/speed-imx23.c b/arch/arm/mach-mxs/speed-imx23.c
index b10c78643c..c9ca7ac30b 100644
--- a/arch/arm/mach-mxs/speed-imx23.c
+++ b/arch/arm/mach-mxs/speed-imx23.c
@@ -184,9 +184,10 @@ unsigned imx_get_hclk(void)
if (readl(IMX_CCM_BASE + HW_CLKCTRL_HBUS) & 0x20) {
rate *= readl(IMX_CCM_BASE + HW_CLKCTRL_HBUS) & 0x1f;
- rate >>= 5U; /* / 32 */
+ rate = DIV_ROUND_UP(rate, 32);
} else
- rate /= readl(IMX_CCM_BASE + HW_CLKCTRL_HBUS) & 0x1f;
+ rate = DIV_ROUND_UP(rate,
+ readl(IMX_CCM_BASE + HW_CLKCTRL_HBUS) & 0x1f);
return rate * 1000;
}
diff --git a/arch/arm/mach-mxs/speed-imx28.c b/arch/arm/mach-mxs/speed-imx28.c
index 67cdbdf81d..4f4db1bbfb 100644
--- a/arch/arm/mach-mxs/speed-imx28.c
+++ b/arch/arm/mach-mxs/speed-imx28.c
@@ -251,9 +251,10 @@ unsigned imx_get_hclk(void)
if (readl(IMX_CCM_BASE + HW_CLKCTRL_HBUS) & 0x20) {
rate *= readl(IMX_CCM_BASE + HW_CLKCTRL_HBUS) & 0x1f;
- rate /= 32;
+ rate = DIV_ROUND_UP(rate, 32);
} else
- rate /= readl(IMX_CCM_BASE + HW_CLKCTRL_HBUS) & 0x1f;
+ rate = DIV_ROUND_UP(rate,
+ readl(IMX_CCM_BASE + HW_CLKCTRL_HBUS) & 0x1f);
return rate * 1000;
}