From 62b7f5931c54e96fca56dd8761b0e466d355c881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Thu, 18 Feb 2021 18:04:33 +0100 Subject: bcm27xx: import latest patches from the RPi foundation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 (cherry-picked from commit f07e572f64) --- ...-Make-the-PLLB-registration-function-retu.patch | 144 +++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 target/linux/bcm27xx/patches-5.4/950-0523-clk-bcm-rpi-Make-the-PLLB-registration-function-retu.patch (limited to 'target/linux/bcm27xx/patches-5.4/950-0523-clk-bcm-rpi-Make-the-PLLB-registration-function-retu.patch') diff --git a/target/linux/bcm27xx/patches-5.4/950-0523-clk-bcm-rpi-Make-the-PLLB-registration-function-retu.patch b/target/linux/bcm27xx/patches-5.4/950-0523-clk-bcm-rpi-Make-the-PLLB-registration-function-retu.patch new file mode 100644 index 0000000000..633cf18782 --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0523-clk-bcm-rpi-Make-the-PLLB-registration-function-retu.patch @@ -0,0 +1,144 @@ +From 5272bad5ff927362e5d12da82eb819a8d1444da6 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Fri, 7 Feb 2020 16:30:01 +0100 +Subject: [PATCH] clk: bcm: rpi: Make the PLLB registration function + return a clk_hw + +The raspberrypi_register_pllb has been returning an integer so far to +notify whether the functions has exited successfully or not. + +However, the OF provider functions in the clock framework require access to +the clk_hw structure so that we can expose those clocks to device tree +consumers. + +Since we'll want that for the future clocks, let's return a clk_hw pointer +instead of the return code. + +Cc: Michael Turquette +Cc: linux-clk@vger.kernel.org +Reviewed-by: Stephen Boyd +Signed-off-by: Maxime Ripard +--- + drivers/clk/bcm/clk-raspberrypi.c | 40 +++++++++++++++++-------------- + 1 file changed, 22 insertions(+), 18 deletions(-) + +--- a/drivers/clk/bcm/clk-raspberrypi.c ++++ b/drivers/clk/bcm/clk-raspberrypi.c +@@ -190,7 +190,7 @@ static const struct clk_ops raspberrypi_ + .determine_rate = raspberrypi_pll_determine_rate, + }; + +-static int raspberrypi_register_pllb(struct raspberrypi_clk *rpi) ++static struct clk_hw *raspberrypi_register_pllb(struct raspberrypi_clk *rpi) + { + struct raspberrypi_clk_data *data; + struct clk_init_data init = {}; +@@ -199,7 +199,7 @@ static int raspberrypi_register_pllb(str + + data = devm_kzalloc(rpi->dev, sizeof(*data), GFP_KERNEL); + if (!data) +- return -ENOMEM; ++ return ERR_PTR(-ENOMEM); + data->rpi = rpi; + data->id = RPI_FIRMWARE_ARM_CLK_ID; + +@@ -217,7 +217,7 @@ static int raspberrypi_register_pllb(str + if (ret) { + dev_err(rpi->dev, "Failed to get %s min freq: %d\n", + init.name, ret); +- return ret; ++ return ERR_PTR(ret); + } + + ret = raspberrypi_clock_property(rpi->firmware, data, +@@ -226,13 +226,13 @@ static int raspberrypi_register_pllb(str + if (ret) { + dev_err(rpi->dev, "Failed to get %s max freq: %d\n", + init.name, ret); +- return ret; ++ return ERR_PTR(ret); + } + + if (!min_rate || !max_rate) { + dev_err(rpi->dev, "Unexpected frequency range: min %u, max %u\n", + min_rate, max_rate); +- return -EINVAL; ++ return ERR_PTR(-EINVAL); + } + + dev_info(rpi->dev, "CPU frequency range: min %u, max %u\n", +@@ -243,7 +243,11 @@ static int raspberrypi_register_pllb(str + + data->hw.init = &init; + +- return devm_clk_hw_register(rpi->dev, &data->hw); ++ ret = devm_clk_hw_register(rpi->dev, &data->hw); ++ if (ret) ++ return ERR_PTR(ret); ++ ++ return &data->hw; + } + + static struct clk_fixed_factor raspberrypi_clk_pllb_arm = { +@@ -258,14 +262,14 @@ static struct clk_fixed_factor raspberry + }, + }; + +-static int raspberrypi_register_pllb_arm(struct raspberrypi_clk *rpi) ++static struct clk_hw *raspberrypi_register_pllb_arm(struct raspberrypi_clk *rpi) + { + int ret; + + ret = devm_clk_hw_register(rpi->dev, &raspberrypi_clk_pllb_arm.hw); + if (ret) { + dev_err(rpi->dev, "Failed to initialize pllb_arm\n"); +- return ret; ++ return ERR_PTR(ret); + } + + ret = devm_clk_hw_register_clkdev(rpi->dev, +@@ -273,10 +277,10 @@ static int raspberrypi_register_pllb_arm + NULL, "cpu0"); + if (ret) { + dev_err(rpi->dev, "Failed to initialize clkdev\n"); +- return ret; ++ return ERR_PTR(ret); + } + +- return 0; ++ return &raspberrypi_clk_pllb_arm.hw; + } + + static int raspberrypi_clk_probe(struct platform_device *pdev) +@@ -285,7 +289,7 @@ static int raspberrypi_clk_probe(struct + struct device *dev = &pdev->dev; + struct rpi_firmware *firmware; + struct raspberrypi_clk *rpi; +- int ret; ++ struct clk_hw *hw; + + firmware_node = of_parse_phandle(dev->of_node, "raspberrypi,firmware", 0); + if (!firmware_node) { +@@ -305,15 +309,15 @@ static int raspberrypi_clk_probe(struct + rpi->firmware = firmware; + platform_set_drvdata(pdev, rpi); + +- ret = raspberrypi_register_pllb(rpi); +- if (ret) { +- dev_err(dev, "Failed to initialize pllb, %d\n", ret); +- return ret; ++ hw = raspberrypi_register_pllb(rpi); ++ if (IS_ERR(hw)) { ++ dev_err(dev, "Failed to initialize pllb, %ld\n", PTR_ERR(hw)); ++ return PTR_ERR(hw); + } + +- ret = raspberrypi_register_pllb_arm(rpi); +- if (ret) +- return ret; ++ hw = raspberrypi_register_pllb_arm(rpi); ++ if (IS_ERR(hw)) ++ return PTR_ERR(hw); + + rpi->cpufreq = platform_device_register_data(dev, "raspberrypi-cpufreq", + -1, NULL, 0); -- cgit v1.2.3