summaryrefslogtreecommitdiffstats
path: root/configs/platform-v7a/patches/barebox-2022.04.0/0002-clk-add-BCM2835-auxiliary-peripheral-clock-driver.patch
diff options
context:
space:
mode:
Diffstat (limited to 'configs/platform-v7a/patches/barebox-2022.04.0/0002-clk-add-BCM2835-auxiliary-peripheral-clock-driver.patch')
-rw-r--r--configs/platform-v7a/patches/barebox-2022.04.0/0002-clk-add-BCM2835-auxiliary-peripheral-clock-driver.patch119
1 files changed, 0 insertions, 119 deletions
diff --git a/configs/platform-v7a/patches/barebox-2022.04.0/0002-clk-add-BCM2835-auxiliary-peripheral-clock-driver.patch b/configs/platform-v7a/patches/barebox-2022.04.0/0002-clk-add-BCM2835-auxiliary-peripheral-clock-driver.patch
deleted file mode 100644
index 3f6be20..0000000
--- a/configs/platform-v7a/patches/barebox-2022.04.0/0002-clk-add-BCM2835-auxiliary-peripheral-clock-driver.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 36f37ded70ed0256f56fb095e7a5854394c30b9e Mon Sep 17 00:00:00 2001
-From: Ahmad Fatoum <a.fatoum@pengutronix.de>
-Date: Fri, 22 Apr 2022 15:56:19 +0200
-Subject: [PATCH 2/5] clk: add BCM2835 auxiliary peripheral clock driver
-
-Commit f6ce1103fdc4 ("ARM: rpi: move clk support to a separate driver")
-replaced board code setting up clocks with clkdev_add_physbase() with a
-proper cprman driver that registers fixed clocks and can be referenced
-from device tree.
-
-It was not fully equivalent though, because the mini UART's clock was no
-longer registered as that is provided by a different clock controller.
-
-Import the Linux v5.17 bcm2835-aux-clk driver to fix console usage on
-Raspberry Pi 3b.
-
-Fixes: f6ce1103fdc4 ("ARM: rpi: move clk support to a separate driver")
-Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
----
- drivers/clk/Makefile | 1 +
- drivers/clk/bcm/Makefile | 2 +
- drivers/clk/bcm/clk-bcm2835-aux.c | 66 +++++++++++++++++++++++++++++++
- 3 files changed, 69 insertions(+)
- create mode 100644 drivers/clk/bcm/Makefile
- create mode 100644 drivers/clk/bcm/clk-bcm2835-aux.c
-
-diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
-index ee503c1edb5f..baf452de9873 100644
---- a/drivers/clk/Makefile
-+++ b/drivers/clk/Makefile
-@@ -26,4 +26,5 @@ obj-$(CONFIG_CLK_SIFIVE) += sifive/
- obj-$(CONFIG_SOC_STARFIVE) += starfive/
- obj-$(CONFIG_COMMON_CLK_STM32F) += clk-stm32f4.o
- obj-$(CONFIG_MACH_RPI_COMMON) += clk-rpi.o
-+obj-y += bcm/
- obj-$(CONFIG_COMMON_CLK_SCMI) += clk-scmi.o
-diff --git a/drivers/clk/bcm/Makefile b/drivers/clk/bcm/Makefile
-new file mode 100644
-index 000000000000..1539e9f592a8
---- /dev/null
-+++ b/drivers/clk/bcm/Makefile
-@@ -0,0 +1,2 @@
-+# SPDX-License-Identifier: GPL-2.0-only
-+obj-$(CONFIG_ARCH_BCM283X) += clk-bcm2835-aux.o
-diff --git a/drivers/clk/bcm/clk-bcm2835-aux.c b/drivers/clk/bcm/clk-bcm2835-aux.c
-new file mode 100644
-index 000000000000..385cfd5d3f06
---- /dev/null
-+++ b/drivers/clk/bcm/clk-bcm2835-aux.c
-@@ -0,0 +1,66 @@
-+// SPDX-License-Identifier: GPL-2.0+
-+/*
-+ * Copyright (C) 2015 Broadcom
-+ */
-+
-+#include <linux/clk.h>
-+#include <io.h>
-+#include <of_address.h>
-+#include <driver.h>
-+#include <init.h>
-+#include <dt-bindings/clock/bcm2835-aux.h>
-+
-+#define BCM2835_AUXIRQ 0x00
-+#define BCM2835_AUXENB 0x04
-+
-+static int bcm2835_aux_clk_probe(struct device_d *dev)
-+{
-+ struct clk_hw_onecell_data *onecell;
-+ const char *parent;
-+ struct clk *parent_clk;
-+ void __iomem *reg, *gate;
-+
-+ parent_clk = clk_get(dev, NULL);
-+ if (IS_ERR(parent_clk))
-+ return PTR_ERR(parent_clk);
-+ parent = __clk_get_name(parent_clk);
-+
-+ reg = of_iomap(dev->device_node, 0);
-+ if (!reg)
-+ return -ENOMEM;
-+
-+ onecell = kmalloc(struct_size(onecell, hws, BCM2835_AUX_CLOCK_COUNT),
-+ GFP_KERNEL);
-+ if (!onecell)
-+ return -ENOMEM;
-+ onecell->num = BCM2835_AUX_CLOCK_COUNT;
-+
-+ gate = reg + BCM2835_AUXENB;
-+ onecell->hws[BCM2835_AUX_CLOCK_UART] =
-+ clk_hw_register_gate(dev, "aux_uart", parent, 0, gate, 0, 0, NULL);
-+
-+ onecell->hws[BCM2835_AUX_CLOCK_SPI1] =
-+ clk_hw_register_gate(dev, "aux_spi1", parent, 0, gate, 1, 0, NULL);
-+
-+ onecell->hws[BCM2835_AUX_CLOCK_SPI2] =
-+ clk_hw_register_gate(dev, "aux_spi2", parent, 0, gate, 2, 0, NULL);
-+
-+ return of_clk_add_hw_provider(dev->device_node, of_clk_hw_onecell_get,
-+ onecell);
-+}
-+
-+static const struct of_device_id bcm2835_aux_clk_of_match[] = {
-+ { .compatible = "brcm,bcm2835-aux", },
-+ {},
-+};
-+
-+static struct driver_d bcm2835_aux_clk_driver = {
-+ .name = "bcm2835-aux-clk",
-+ .of_compatible = bcm2835_aux_clk_of_match,
-+ .probe = bcm2835_aux_clk_probe,
-+};
-+core_platform_driver(bcm2835_aux_clk_driver);
-+
-+MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
-+MODULE_DESCRIPTION("BCM2835 auxiliary peripheral clock driver");
-+MODULE_LICENSE("GPL");
---
-2.30.2
-