clk-bcm2835: Mark used PLLs and dividers CRITICAL
authorPhil Elwell <phil@raspberrypi.org>
Mon, 13 Feb 2017 17:20:08 +0000 (17:20 +0000)
committerpopcornmix <popcornmix@gmail.com>
Wed, 1 Jul 2020 15:32:34 +0000 (16:32 +0100)
The VPU configures and relies on several PLLs and dividers. Mark all
enabled dividers and their PLLs as CRITICAL to prevent the kernel from
switching them off.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
drivers/clk/bcm/clk-bcm2835.c

index 6f612e6..91b3f04 100644 (file)
@@ -1363,6 +1363,11 @@ bcm2835_register_pll_divider(struct bcm2835_cprman *cprman,
        divider->div.hw.init = &init;
        divider->div.table = NULL;
 
+       if (!(cprman_read(cprman, data->cm_reg) & data->hold_mask)) {
+               init.flags |= CLK_IS_CRITICAL;
+               divider->div.flags |= CLK_IS_CRITICAL;
+       }
+
        divider->cprman = cprman;
        divider->data = data;