clk: bcm2835: Mark PLLD_PER as CRITICAL
authorStefan Wahren <wahrenst@gmx.net>
Sun, 18 Aug 2019 16:23:44 +0000 (18:23 +0200)
committerStephen Boyd <sboyd@kernel.org>
Tue, 17 Sep 2019 16:55:31 +0000 (09:55 -0700)
The VPU firmware assume that the PLLD_PER isn't modified by the ARM core.
Otherwise this could cause firmware lookups. So mark the clock as critical
to avoid this.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
Reviewed-by: Eric Anholt <eric@anholt.net>
drivers/clk/bcm/clk-bcm2835.c

index fdf672a..802e488 100644 (file)
@@ -1776,6 +1776,11 @@ static const struct bcm2835_clk_desc clk_desc_array[] = {
                .hold_mask = CM_PLLD_HOLDCORE,
                .fixed_divider = 1,
                .flags = CLK_SET_RATE_PARENT),
+       /*
+        * VPU firmware assumes that PLLD_PER isn't disabled by the ARM core.
+        * Otherwise this could cause firmware lookups. That's why we mark
+        * it as critical.
+        */
        [BCM2835_PLLD_PER]      = REGISTER_PLL_DIV(
                SOC_ALL,
                .name = "plld_per",
@@ -1785,7 +1790,7 @@ static const struct bcm2835_clk_desc clk_desc_array[] = {
                .load_mask = CM_PLLD_LOADPER,
                .hold_mask = CM_PLLD_HOLDPER,
                .fixed_divider = 1,
-               .flags = CLK_SET_RATE_PARENT),
+               .flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT),
        [BCM2835_PLLD_DSI0]     = REGISTER_PLL_DIV(
                SOC_ALL,
                .name = "plld_dsi0",