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, 20 Feb 2017 20:31:56 +0000 (20:31 +0000)
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 136e5d28f9eaeaa10d45382a0f31da9f4adb91ef..4192863778c8009aacfc9a49ee38ad1ca62a01e4 100644 (file)
@@ -1366,6 +1366,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;