diff options
author | Wolfram Sang <w.sang@pengutronix.de> | 2012-06-14 15:20:58 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-06-30 12:53:23 +0200 |
commit | 8a6877364ad7cb6a04e5d41580b68873215ef8fc (patch) | |
tree | 8fa8a401ada5a3a32fecaa5cace4e9eb9a8572e7 /arch | |
parent | ead6ec8b4f48e4780a18e06a23f8a378277d28f3 (diff) | |
download | barebox-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.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-mxs/speed-imx28.c | 5 |
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; } |