| From 6a4a4595804548e173f0763a0e7274a3521c59a9 Mon Sep 17 00:00:00 2001 |
| From: Richard Genoud <richard.genoud@gmail.com> |
| Date: Tue, 13 Mar 2018 16:27:02 +0100 |
| Subject: clk: mvebu: armada-38x: add support for missing clocks |
| |
| From: Richard Genoud <richard.genoud@gmail.com> |
| |
| commit 6a4a4595804548e173f0763a0e7274a3521c59a9 upstream. |
| |
| Clearfog boards can come with a CPU clocked at 1600MHz (commercial) |
| or 1333MHz (industrial). |
| |
| They have also some dip-switches to select a different clock (666, 800, |
| 1066, 1200). |
| |
| The funny thing is that the recovery button is on the MPP34 fq selector. |
| So, when booting an industrial board with this button down, the frequency |
| 666MHz is selected (and the kernel didn't boot). |
| |
| This patch add all the missing clocks. |
| |
| The only mode I didn't test is 2GHz (uboot found 4294MHz instead :/ ). |
| |
| Fixes: 0e85aeced4d6 ("clk: mvebu: add clock support for Armada 380/385") |
| Cc: <stable@vger.kernel.org> # 3.16.x: 9593f4f56cf5: clk: mvebu: armada-38x: add support for 1866MHz variants |
| Cc: <stable@vger.kernel.org> # 3.16.x |
| |
| Signed-off-by: Richard Genoud <richard.genoud@gmail.com> |
| Acked-by: Gregory CLEMENT <gregory.clement@bootlin.com> |
| Signed-off-by: Stephen Boyd <sboyd@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/clk/mvebu/armada-38x.c | 14 +++++++------- |
| 1 file changed, 7 insertions(+), 7 deletions(-) |
| |
| --- a/drivers/clk/mvebu/armada-38x.c |
| +++ b/drivers/clk/mvebu/armada-38x.c |
| @@ -46,11 +46,11 @@ static u32 __init armada_38x_get_tclk_fr |
| } |
| |
| static const u32 armada_38x_cpu_frequencies[] __initconst = { |
| - 0, 0, 0, 0, |
| - 1066 * 1000 * 1000, 0, 0, 0, |
| + 666 * 1000 * 1000, 0, 800 * 1000 * 1000, 0, |
| + 1066 * 1000 * 1000, 0, 1200 * 1000 * 1000, 0, |
| 1332 * 1000 * 1000, 0, 0, 0, |
| 1600 * 1000 * 1000, 0, 0, 0, |
| - 1866 * 1000 * 1000, |
| + 1866 * 1000 * 1000, 0, 0, 2000 * 1000 * 1000, |
| }; |
| |
| static u32 __init armada_38x_get_cpu_freq(void __iomem *sar) |
| @@ -76,11 +76,11 @@ static const struct coreclk_ratio armada |
| }; |
| |
| static const int armada_38x_cpu_l2_ratios[32][2] __initconst = { |
| - {0, 1}, {0, 1}, {0, 1}, {0, 1}, |
| - {1, 2}, {0, 1}, {0, 1}, {0, 1}, |
| - {1, 2}, {0, 1}, {0, 1}, {0, 1}, |
| + {1, 2}, {0, 1}, {1, 2}, {0, 1}, |
| + {1, 2}, {0, 1}, {1, 2}, {0, 1}, |
| {1, 2}, {0, 1}, {0, 1}, {0, 1}, |
| {1, 2}, {0, 1}, {0, 1}, {0, 1}, |
| + {1, 2}, {0, 1}, {0, 1}, {1, 2}, |
| {0, 1}, {0, 1}, {0, 1}, {0, 1}, |
| {0, 1}, {0, 1}, {0, 1}, {0, 1}, |
| {0, 1}, {0, 1}, {0, 1}, {0, 1}, |
| @@ -91,7 +91,7 @@ static const int armada_38x_cpu_ddr_rati |
| {1, 2}, {0, 1}, {0, 1}, {0, 1}, |
| {1, 2}, {0, 1}, {0, 1}, {0, 1}, |
| {1, 2}, {0, 1}, {0, 1}, {0, 1}, |
| - {1, 2}, {0, 1}, {0, 1}, {0, 1}, |
| + {1, 2}, {0, 1}, {0, 1}, {7, 15}, |
| {0, 1}, {0, 1}, {0, 1}, {0, 1}, |
| {0, 1}, {0, 1}, {0, 1}, {0, 1}, |
| {0, 1}, {0, 1}, {0, 1}, {0, 1}, |