| From b6fd3eb9f93f7380f12f7aa31efb2dd492818ea4 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 17 Mar 2020 22:13:32 +0100 |
| Subject: clk: sunxi: Fix incorrect usage of round_down() |
| |
| From: Rikard Falkeborn <rikard.falkeborn@gmail.com> |
| |
| [ Upstream commit ee25d9742dabed3fd18158b518f846abeb70f319 ] |
| |
| round_down() can only round to powers of 2. If round_down() is asked |
| to round to something that is not a power of 2, incorrect results are |
| produced. The incorrect results can be both too large and too small. |
| |
| Instead, use rounddown() which can round to any number. |
| |
| Fixes: 6a721db180a2 ("clk: sunxi: Add A31 clocks support") |
| Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com> |
| Signed-off-by: Maxime Ripard <maxime@cerno.tech> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/clk/sunxi/clk-sunxi.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c |
| index aa4add580516d..0b5e091742f97 100644 |
| --- a/drivers/clk/sunxi/clk-sunxi.c |
| +++ b/drivers/clk/sunxi/clk-sunxi.c |
| @@ -98,7 +98,7 @@ static void sun6i_a31_get_pll1_factors(struct factors_request *req) |
| * Round down the frequency to the closest multiple of either |
| * 6 or 16 |
| */ |
| - u32 round_freq_6 = round_down(freq_mhz, 6); |
| + u32 round_freq_6 = rounddown(freq_mhz, 6); |
| u32 round_freq_16 = round_down(freq_mhz, 16); |
| |
| if (round_freq_6 > round_freq_16) |
| -- |
| 2.25.1 |
| |