clk: meson: meson8b: mark the CPU clock as CLK_IS_CRITICAL
authorMartin Blumenstingl <martin.blumenstingl@googlemail.com>
Thu, 15 Nov 2018 22:40:45 +0000 (23:40 +0100)
committerNeil Armstrong <narmstrong@baylibre.com>
Fri, 23 Nov 2018 14:11:57 +0000 (15:11 +0100)
We don't want the common clock framework to disable the "cpu_clk" if
it's not used by any device. The cpufreq-dt driver does not enable the
CPU clocks. However, even if it would we would still want the CPU clock
to be enabled at all times because the CPU clock is also required even
if we disable CPU frequency scaling on a specific board.

The reason why we want the CPU clock to be enabled is a clock further up
in the tree:
Since commit 6f888e7bc7bd58 ("clk: meson: clk-pll: add enable bit") the
sys_pll can be disabled. However, since the CPU clock is derived from
sys_pll we don't want sys_pll to get disabled. The common clock
framework takes care of that for us by enabling all parent clocks of our
CPU clock when we mark the CPU clock with CLK_IS_CRITICAL.

Until now this is not a problem yet because all clocks in the CPU
clock's tree (including sys_pll) are read-only. However, once we allow
modifications to the clocks in that tree we will need this.

Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Acked-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Link: https://lkml.kernel.org/r/20181115224048.13511-4-martin.blumenstingl@googlemail.com
drivers/clk/meson/meson8b.c

index a96bfee58a6164e96cc34298497c12d7797a8ac0..41a5025364f9b49ddbf1fa09ad6676e43e593d6b 100644 (file)
@@ -646,7 +646,8 @@ static struct clk_regmap meson8b_cpu_clk = {
                                                  "cpu_scale_out_sel" },
                .num_parents = 2,
                .flags = (CLK_SET_RATE_PARENT |
-                         CLK_SET_RATE_NO_REPARENT),
+                         CLK_SET_RATE_NO_REPARENT |
+                         CLK_IS_CRITICAL),
        },
 };