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>
Mon, 13 May 2019 23:07:52 +0000 (00:07 +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 6c2eac8..841e252 100644 (file)
@@ -1362,6 +1362,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;