bcm27xx: update patches from RPi foundation
[openwrt/staging/luka.git] / target / linux / bcm27xx / patches-5.4 / 950-0527-clk-bcm-rpi-Add-clock-id-to-data.patch
diff --git a/target/linux/bcm27xx/patches-5.4/950-0527-clk-bcm-rpi-Add-clock-id-to-data.patch b/target/linux/bcm27xx/patches-5.4/950-0527-clk-bcm-rpi-Add-clock-id-to-data.patch
new file mode 100644 (file)
index 0000000..09f023e
--- /dev/null
@@ -0,0 +1,86 @@
+From 98d529ffea66937e8a9ba8b69172bb9c599cfa39 Mon Sep 17 00:00:00 2001
+From: Maxime Ripard <maxime@cerno.tech>
+Date: Fri, 7 Feb 2020 16:04:16 +0100
+Subject: [PATCH] clk: bcm: rpi: Add clock id to data
+
+The driver has really only supported one clock so far and has hardcoded the
+ID used in communications with the firmware in all the functions
+implementing the clock framework hooks. Let's store that in the clock data
+structure so that we can support more clocks later on.
+
+Cc: Michael Turquette <mturquette@baylibre.com>
+Cc: linux-clk@vger.kernel.org
+Acked-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
+Reviewed-by: Stephen Boyd <sboyd@kernel.org>
+Signed-off-by: Maxime Ripard <maxime@cerno.tech>
+---
+ drivers/clk/bcm/clk-raspberrypi.c | 16 +++++++---------
+ 1 file changed, 7 insertions(+), 9 deletions(-)
+
+--- a/drivers/clk/bcm/clk-raspberrypi.c
++++ b/drivers/clk/bcm/clk-raspberrypi.c
+@@ -39,6 +39,7 @@ struct raspberrypi_clk {
+ struct raspberrypi_clk_data {
+       struct clk_hw hw;
++      unsigned id;
+       unsigned long min_rate;
+       unsigned long max_rate;
+@@ -95,7 +96,7 @@ static int raspberrypi_fw_pll_is_on(stru
+       ret = raspberrypi_clock_property(rpi->firmware,
+                                        RPI_FIRMWARE_GET_CLOCK_STATE,
+-                                       RPI_FIRMWARE_ARM_CLK_ID, &val);
++                                       data->id, &val);
+       if (ret)
+               return 0;
+@@ -114,8 +115,7 @@ static unsigned long raspberrypi_fw_pll_
+       ret = raspberrypi_clock_property(rpi->firmware,
+                                        RPI_FIRMWARE_GET_CLOCK_RATE,
+-                                       RPI_FIRMWARE_ARM_CLK_ID,
+-                                       &val);
++                                       data->id, &val);
+       if (ret)
+               return ret;
+@@ -133,8 +133,7 @@ static int raspberrypi_fw_pll_set_rate(s
+       ret = raspberrypi_clock_property(rpi->firmware,
+                                        RPI_FIRMWARE_SET_CLOCK_RATE,
+-                                       RPI_FIRMWARE_ARM_CLK_ID,
+-                                       &new_rate);
++                                       data->id, &new_rate);
+       if (ret)
+               dev_err_ratelimited(rpi->dev, "Failed to change %s frequency: %d",
+                                   clk_hw_get_name(hw), ret);
+@@ -189,6 +188,7 @@ static int raspberrypi_register_pllb(str
+       if (!data)
+               return -ENOMEM;
+       data->rpi = rpi;
++      data->id = RPI_FIRMWARE_ARM_CLK_ID;
+       /* All of the PLLs derive from the external oscillator. */
+       init.parent_names = (const char *[]){ "osc" };
+@@ -200,8 +200,7 @@ static int raspberrypi_register_pllb(str
+       /* Get min & max rates set by the firmware */
+       ret = raspberrypi_clock_property(rpi->firmware,
+                                        RPI_FIRMWARE_GET_MIN_CLOCK_RATE,
+-                                       RPI_FIRMWARE_ARM_CLK_ID,
+-                                       &min_rate);
++                                       data->id, &min_rate);
+       if (ret) {
+               dev_err(rpi->dev, "Failed to get %s min freq: %d\n",
+                       init.name, ret);
+@@ -210,8 +209,7 @@ static int raspberrypi_register_pllb(str
+       ret = raspberrypi_clock_property(rpi->firmware,
+                                        RPI_FIRMWARE_GET_MAX_CLOCK_RATE,
+-                                       RPI_FIRMWARE_ARM_CLK_ID,
+-                                       &max_rate);
++                                       data->id, &max_rate);
+       if (ret) {
+               dev_err(rpi->dev, "Failed to get %s max freq: %d\n",
+                       init.name, ret);