diff options
Diffstat (limited to 'target/linux/brcm2708/patches-4.9/950-0186-clk-bcm2835-Add-claim-clocks-property.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.9/950-0186-clk-bcm2835-Add-claim-clocks-property.patch | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/target/linux/brcm2708/patches-4.9/950-0186-clk-bcm2835-Add-claim-clocks-property.patch b/target/linux/brcm2708/patches-4.9/950-0186-clk-bcm2835-Add-claim-clocks-property.patch deleted file mode 100644 index 021f7521bc..0000000000 --- a/target/linux/brcm2708/patches-4.9/950-0186-clk-bcm2835-Add-claim-clocks-property.patch +++ /dev/null @@ -1,133 +0,0 @@ -From 5c1128ebe6c7a4af3f1784a640df7f3698233e9d 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: Add claim-clocks property - -The claim-clocks property can be used to prevent PLLs and dividers -from being marked as critical. It contains a vector of clock IDs, -as defined by dt-bindings/clock/bcm2835.h. - -Use this mechanism to claim PLLD_DSI0, PLLD_DSI1, PLLH_AUX and -PLLH_PIX for the vc4_kms_v3d driver. - -Signed-off-by: Phil Elwell <phil@raspberrypi.org> ---- - arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts | 14 +++++++++ - drivers/clk/bcm/clk-bcm2835.c | 34 ++++++++++++++++++++-- - 2 files changed, 46 insertions(+), 2 deletions(-) - ---- a/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts -+++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts -@@ -5,6 +5,8 @@ - /dts-v1/; - /plugin/; - -+#include <dt-bindings/clock/bcm2835.h> -+ - / { - compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; - -@@ -155,6 +157,18 @@ - }; - }; - -+ fragment@19 { -+ target = <&clocks>; -+ __overlay__ { -+ claim-clocks = < -+ BCM2835_PLLD_DSI0 -+ BCM2835_PLLD_DSI1 -+ BCM2835_PLLH_AUX -+ BCM2835_PLLH_PIX -+ >; -+ }; -+ }; -+ - __overrides__ { - cma-256 = <0>,"+0-1-2-3-4"; - cma-192 = <0>,"-0+1-2-3-4"; ---- a/drivers/clk/bcm/clk-bcm2835.c -+++ b/drivers/clk/bcm/clk-bcm2835.c -@@ -1304,6 +1304,8 @@ static const struct clk_ops bcm2835_vpu_ - .debug_init = bcm2835_clock_debug_init, - }; - -+static bool bcm2835_clk_is_claimed(const char *name); -+ - static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman, - const struct bcm2835_pll_data *data) - { -@@ -1320,6 +1322,9 @@ static struct clk_hw *bcm2835_register_p - init.ops = &bcm2835_pll_clk_ops; - init.flags = CLK_IGNORE_UNUSED; - -+ if (!bcm2835_clk_is_claimed(data->name)) -+ init.flags |= CLK_IS_CRITICAL; -+ - pll = kzalloc(sizeof(*pll), GFP_KERNEL); - if (!pll) - return NULL; -@@ -1373,8 +1378,10 @@ bcm2835_register_pll_divider(struct bcm2 - 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; -+ if (!bcm2835_clk_is_claimed(data->source_pll)) -+ init.flags |= CLK_IS_CRITICAL; -+ if (!bcm2835_clk_is_claimed(data->name)) -+ divider->div.flags |= CLK_IS_CRITICAL; - } - - divider->cprman = cprman; -@@ -2110,6 +2117,8 @@ static const struct bcm2835_clk_desc clk - .ctl_reg = CM_PERIICTL), - }; - -+static bool bcm2835_clk_claimed[ARRAY_SIZE(clk_desc_array)]; -+ - /* - * Permanently take a reference on the parent of the SDRAM clock. - * -@@ -2129,6 +2138,19 @@ static int bcm2835_mark_sdc_parent_criti - return clk_prepare_enable(parent); - } - -+static bool bcm2835_clk_is_claimed(const char *name) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(clk_desc_array); i++) { -+ const char *clk_name = *(const char **)(clk_desc_array[i].data); -+ if (!strcmp(name, clk_name)) -+ return bcm2835_clk_claimed[i]; -+ } -+ -+ return false; -+} -+ - static int bcm2835_clk_probe(struct platform_device *pdev) - { - struct device *dev = &pdev->dev; -@@ -2138,6 +2160,7 @@ static int bcm2835_clk_probe(struct plat - const struct bcm2835_clk_desc *desc; - const size_t asize = ARRAY_SIZE(clk_desc_array); - size_t i; -+ u32 clk_id; - int ret; - - cprman = devm_kzalloc(dev, sizeof(*cprman) + -@@ -2153,6 +2176,13 @@ static int bcm2835_clk_probe(struct plat - if (IS_ERR(cprman->regs)) - return PTR_ERR(cprman->regs); - -+ memset(bcm2835_clk_claimed, 0, sizeof(bcm2835_clk_claimed)); -+ for (i = 0; -+ !of_property_read_u32_index(pdev->dev.of_node, "claim-clocks", -+ i, &clk_id); -+ i++) -+ bcm2835_clk_claimed[clk_id]= true; -+ - memcpy(cprman->real_parent_names, cprman_parent_names, - sizeof(cprman_parent_names)); - of_clk_parent_fill(dev->of_node, cprman->real_parent_names, |