diff options
author | Álvaro Fernández Rojas <noltari@gmail.com> | 2016-12-02 11:50:26 +0100 |
---|---|---|
committer | Álvaro Fernández Rojas <noltari@gmail.com> | 2016-12-04 12:32:04 +0100 |
commit | 011f2c26f1b62e309f2eac6a3101bfe0a3c76c7e (patch) | |
tree | be53d4f11f7625508ee3aea9889e854ab5b5f263 /target/linux/brcm2708/patches-4.4/0434-clk-bcm2835-Do-appropriate-name-lookups-for-DSI1-s-p.patch | |
parent | 4257f6548b9480cdb436115b63d5c134c5e91303 (diff) | |
download | upstream-011f2c26f1b62e309f2eac6a3101bfe0a3c76c7e.tar.gz upstream-011f2c26f1b62e309f2eac6a3101bfe0a3c76c7e.tar.bz2 upstream-011f2c26f1b62e309f2eac6a3101bfe0a3c76c7e.zip |
brcm2708: update linux 4.4 patches to latest version
As usual these patches were extracted and rebased from the raspberry pi repo:
https://github.com/raspberrypi/linux/tree/rpi-4.4.y
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/brcm2708/patches-4.4/0434-clk-bcm2835-Do-appropriate-name-lookups-for-DSI1-s-p.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.4/0434-clk-bcm2835-Do-appropriate-name-lookups-for-DSI1-s-p.patch | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/target/linux/brcm2708/patches-4.4/0434-clk-bcm2835-Do-appropriate-name-lookups-for-DSI1-s-p.patch b/target/linux/brcm2708/patches-4.4/0434-clk-bcm2835-Do-appropriate-name-lookups-for-DSI1-s-p.patch deleted file mode 100644 index ab7eff3cd9..0000000000 --- a/target/linux/brcm2708/patches-4.4/0434-clk-bcm2835-Do-appropriate-name-lookups-for-DSI1-s-p.patch +++ /dev/null @@ -1,125 +0,0 @@ -From b0fde8ea889e47505e4112d89da4be9469a37775 Mon Sep 17 00:00:00 2001 -From: Eric Anholt <eric@anholt.net> -Date: Thu, 14 Apr 2016 15:13:53 -0700 -Subject: [PATCH] clk: bcm2835: Do appropriate name lookups for DSI1's parents - as well. - -Signed-off-by: Eric Anholt <eric@anholt.net> ---- - .../bindings/clock/brcm,bcm2835-cprman.txt | 12 ++++- - drivers/clk/bcm/clk-bcm2835.c | 54 +++++++++++++++++----- - 2 files changed, 54 insertions(+), 12 deletions(-) - ---- a/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt -+++ b/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt -@@ -16,7 +16,17 @@ Required properties: - - #clock-cells: Should be <1>. The permitted clock-specifier values can be - found in include/dt-bindings/clock/bcm2835.h - - reg: Specifies base physical address and size of the registers --- clocks: The external oscillator clock phandle -+- clocks: phandles to the parent clocks used as input to the module, in -+ the following order: -+ -+ - External oscillator -+ - DSI1 byte clock -+ - DSI1 DDR2 clock -+ - DSI1 DDR clock -+ -+ Only external oscillator is required. The DSI clocks may -+ not be present, in which case their children will be -+ unusable. - - Example: - ---- a/drivers/clk/bcm/clk-bcm2835.c -+++ b/drivers/clk/bcm/clk-bcm2835.c -@@ -297,11 +297,29 @@ - #define LOCK_TIMEOUT_NS 100000000 - #define BCM2835_MAX_FB_RATE 1750000000u - -+/* -+ * Names of clocks used within the driver that need to be replaced -+ * with an external parent's name. This array is in the order that -+ * the clocks node in the DT references external clocks. -+ */ -+static const char *cprman_parent_names[] = { -+ "xosc", -+ "dsi1_byte", -+ "dsi1_ddr2", -+ "dsi1_ddr", -+}; -+ - struct bcm2835_cprman { - struct device *dev; - void __iomem *regs; - spinlock_t regs_lock; /* spinlock for all clocks */ -- const char *osc_name; -+ -+ /* -+ * Real names of cprman clock parents looked up through -+ * of_clk_get_parent_name(), which will be used in the -+ * parent_names[] arrays for clock registration. -+ */ -+ const char *real_parent_names[ARRAY_SIZE(cprman_parent_names)]; - - struct clk_onecell_data onecell; - struct clk *clks[]; -@@ -1168,7 +1186,7 @@ static struct clk *bcm2835_register_pll( - memset(&init, 0, sizeof(init)); - - /* All of the PLLs derive from the external oscillator. */ -- init.parent_names = &cprman->osc_name; -+ init.parent_names = &cprman->real_parent_names[0]; - init.num_parents = 1; - init.name = data->name; - init.ops = &bcm2835_pll_clk_ops; -@@ -1251,17 +1269,21 @@ static struct clk *bcm2835_register_cloc - struct bcm2835_clock *clock; - struct clk_init_data init; - const char *parents[1 << CM_SRC_BITS]; -- size_t i; -+ size_t i, j; - - /* -- * Replace our "xosc" references with the oscillator's -- * actual name. -+ * Replace our strings referencing parent clocks with the -+ * actual clock-output-name of the parent. - */ - for (i = 0; i < data->num_mux_parents; i++) { -- if (strcmp(data->parents[i], "xosc") == 0) -- parents[i] = cprman->osc_name; -- else -- parents[i] = data->parents[i]; -+ parents[i] = data->parents[i]; -+ -+ for (j = 0; j < ARRAY_SIZE(cprman_parent_names); j++) { -+ if (strcmp(parents[i], cprman_parent_names[j]) == 0) { -+ parents[i] = cprman->real_parent_names[j]; -+ break; -+ } -+ } - } - - memset(&init, 0, sizeof(init)); -@@ -1883,8 +1905,18 @@ static int bcm2835_clk_probe(struct plat - if (IS_ERR(cprman->regs)) - return PTR_ERR(cprman->regs); - -- cprman->osc_name = of_clk_get_parent_name(dev->of_node, 0); -- if (!cprman->osc_name) -+ for (i = 0; i < ARRAY_SIZE(cprman_parent_names); i++) { -+ cprman->real_parent_names[i] = -+ of_clk_get_parent_name(dev->of_node, i); -+ } -+ /* -+ * Make sure the external oscillator has been registered. -+ * -+ * The other (DSI) clocks are not present on older device -+ * trees, which we still need to support for backwards -+ * compatibility. -+ */ -+ if (!cprman->real_parent_names[0]) - return -ENODEV; - - platform_set_drvdata(pdev, cprman); |