diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-4.19/950-0023-clk-bcm2835-Add-claim-clocks-property.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-4.19/950-0023-clk-bcm2835-Add-claim-clocks-property.patch | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/target/linux/bcm27xx/patches-4.19/950-0023-clk-bcm2835-Add-claim-clocks-property.patch b/target/linux/bcm27xx/patches-4.19/950-0023-clk-bcm2835-Add-claim-clocks-property.patch deleted file mode 100644 index 63f1f9f74a..0000000000 --- a/target/linux/bcm27xx/patches-4.19/950-0023-clk-bcm2835-Add-claim-clocks-property.patch +++ /dev/null @@ -1,102 +0,0 @@ -From 787234827719aa1d44b079969419d91b665a491d 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> ---- - drivers/clk/bcm/clk-bcm2835.c | 34 ++++++++++++++++++++++++++++++++-- - 1 file changed, 32 insertions(+), 2 deletions(-) - ---- a/drivers/clk/bcm/clk-bcm2835.c -+++ b/drivers/clk/bcm/clk-bcm2835.c -@@ -1294,6 +1294,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) - { -@@ -1310,6 +1312,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; -@@ -1363,8 +1368,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; -@@ -2116,6 +2123,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. - * -@@ -2135,6 +2144,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; -@@ -2144,6 +2166,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, -@@ -2159,6 +2182,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, |