aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.4/950-0778-clk-bcm-rpi-Add-an-enum-for-the-firmware-clocks.patch
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas <noltari@gmail.com>2021-02-18 18:04:33 +0100
committerÁlvaro Fernández Rojas <noltari@gmail.com>2021-02-18 23:42:32 +0100
commitf07e572f6447465d8938679533d604e402b0f066 (patch)
treecb333bd2a67e59e7c07659514850a0fd55fc825e /target/linux/bcm27xx/patches-5.4/950-0778-clk-bcm-rpi-Add-an-enum-for-the-firmware-clocks.patch
parent5d3a6fd970619dfc55f8259035c3027d7613a2a6 (diff)
downloadupstream-f07e572f6447465d8938679533d604e402b0f066.tar.gz
upstream-f07e572f6447465d8938679533d604e402b0f066.tar.bz2
upstream-f07e572f6447465d8938679533d604e402b0f066.zip
bcm27xx: import latest patches from the RPi foundation
bcm2708: boot tested on RPi B+ v1.2 bcm2709: boot tested on RPi 3B v1.2 and RPi 4B v1.1 4G bcm2710: boot tested on RPi 3B v1.2 bcm2711: boot tested on RPi 4B v1.1 4G Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0778-clk-bcm-rpi-Add-an-enum-for-the-firmware-clocks.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.4/950-0778-clk-bcm-rpi-Add-an-enum-for-the-firmware-clocks.patch80
1 files changed, 80 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0778-clk-bcm-rpi-Add-an-enum-for-the-firmware-clocks.patch b/target/linux/bcm27xx/patches-5.4/950-0778-clk-bcm-rpi-Add-an-enum-for-the-firmware-clocks.patch
new file mode 100644
index 0000000000..c69b5685d4
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.4/950-0778-clk-bcm-rpi-Add-an-enum-for-the-firmware-clocks.patch
@@ -0,0 +1,80 @@
+From d9b492679a107e535cfd39ee00bd2ce6f12089e0 Mon Sep 17 00:00:00 2001
+From: Maxime Ripard <maxime@cerno.tech>
+Date: Tue, 26 May 2020 14:23:04 +0200
+Subject: [PATCH] clk: bcm: rpi: Add an enum for the firmware clocks
+
+While the firmware allows us to discover the available clocks, we need to
+discriminate those clocks to only register the ones meaningful to Linux.
+The firmware also doesn't provide a clock name, so having a list of the ID
+will help us to give clocks a proper name later on.
+
+Acked-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
+Signed-off-by: Maxime Ripard <maxime@cerno.tech>
+---
+ drivers/clk/bcm/clk-raspberrypi.c | 30 ++++++++++++++++++++++++------
+ 1 file changed, 24 insertions(+), 6 deletions(-)
+
+--- a/drivers/clk/bcm/clk-raspberrypi.c
++++ b/drivers/clk/bcm/clk-raspberrypi.c
+@@ -18,7 +18,23 @@
+
+ #include <soc/bcm2835/raspberrypi-firmware.h>
+
+-#define RPI_FIRMWARE_ARM_CLK_ID 0x00000003
++enum rpi_firmware_clk_id {
++ RPI_FIRMWARE_EMMC_CLK_ID = 1,
++ RPI_FIRMWARE_UART_CLK_ID,
++ RPI_FIRMWARE_ARM_CLK_ID,
++ RPI_FIRMWARE_CORE_CLK_ID,
++ RPI_FIRMWARE_V3D_CLK_ID,
++ RPI_FIRMWARE_H264_CLK_ID,
++ RPI_FIRMWARE_ISP_CLK_ID,
++ RPI_FIRMWARE_SDRAM_CLK_ID,
++ RPI_FIRMWARE_PIXEL_CLK_ID,
++ RPI_FIRMWARE_PWM_CLK_ID,
++ RPI_FIRMWARE_HEVC_CLK_ID,
++ RPI_FIRMWARE_EMMC2_CLK_ID,
++ RPI_FIRMWARE_M2MC_CLK_ID,
++ RPI_FIRMWARE_PIXEL_BVB_CLK_ID,
++ RPI_FIRMWARE_NUM_CLK_ID,
++};
+
+ #define RPI_FIRMWARE_STATE_ENABLE_BIT BIT(0)
+ #define RPI_FIRMWARE_STATE_WAIT_BIT BIT(1)
+@@ -31,8 +47,6 @@
+
+ #define A2W_PLL_FRAC_BITS 20
+
+-#define NUM_FW_CLKS 16
+-
+ struct raspberrypi_clk {
+ struct device *dev;
+ struct rpi_firmware *firmware;
+@@ -350,12 +364,15 @@ static int raspberrypi_discover_clocks(s
+ struct rpi_firmware_get_clocks_response *clks;
+ int ret;
+
+- clks = devm_kcalloc(rpi->dev, sizeof(*clks), NUM_FW_CLKS, GFP_KERNEL);
++ clks = devm_kcalloc(rpi->dev,
++ sizeof(*clks), RPI_FIRMWARE_NUM_CLK_ID,
++ GFP_KERNEL);
+ if (!clks)
+ return -ENOMEM;
+
+ ret = rpi_firmware_property(rpi->firmware, RPI_FIRMWARE_GET_CLOCKS,
+- clks, sizeof(*clks) * NUM_FW_CLKS);
++ clks,
++ sizeof(*clks) * RPI_FIRMWARE_NUM_CLK_ID);
+ if (ret)
+ return ret;
+
+@@ -411,7 +428,8 @@ static int raspberrypi_clk_probe(struct
+ rpi->firmware = firmware;
+ platform_set_drvdata(pdev, rpi);
+
+- clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, NUM_FW_CLKS),
++ clk_data = devm_kzalloc(dev, struct_size(clk_data, hws,
++ RPI_FIRMWARE_NUM_CLK_ID),
+ GFP_KERNEL);
+ if (!clk_data)
+ return -ENOMEM;