brcm2708: update to latest patches from RPi Foundation
[openwrt/staging/chunkeey.git] / target / linux / brcm2708 / patches-4.19 / 950-0022-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0022-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch b/target/linux/brcm2708/patches-4.19/950-0022-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch
new file mode 100644 (file)
index 0000000..e4a1d7f
--- /dev/null
@@ -0,0 +1,28 @@
+From f1f199b682e258674137105f49d033cb81612ab7 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Mon, 13 Feb 2017 17:20:08 +0000
+Subject: [PATCH] clk-bcm2835: Mark used PLLs and dividers CRITICAL
+
+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 | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/clk/bcm/clk-bcm2835.c
++++ b/drivers/clk/bcm/clk-bcm2835.c
+@@ -1362,6 +1362,11 @@ bcm2835_register_pll_divider(struct bcm2
+       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;