openwrt/target/linux/bcm27xx/patches-6.6/950-0928-DT-rp1-add-general-purpose-clock-source-definitions.patch
Álvaro Fernández Rojas 8c405cdccc bcm27xx: add 6.6 kernel patches
The patches were generated from the RPi repo with the following command:
git format-patch v6.6.34..rpi-6.1.y

Some patches needed rebasing and, as usual, the applied and reverted, wireless
drivers, Github workflows, READMEs and defconfigs patches were removed.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-06-18 18:52:49 +02:00

123 lines
3.2 KiB
Diff

From ff527efdd7a2d32b591f22178e9c4e221301efa2 Mon Sep 17 00:00:00 2001
From: Jonathan Bell <jonathan@raspberrypi.com>
Date: Tue, 5 Mar 2024 14:32:46 +0000
Subject: [PATCH 0928/1085] DT: rp1: add general-purpose clock source
definitions
GPCLKs have two parts - a clock divider and a clock input, routed out to
and in from a GPIO pad respectively. It follows that the clksrc_gpN
inputs can't be used unless the pad is also configured as a GPCLK, so
leave them disabled.
Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
---
arch/arm/boot/dts/broadcom/rp1.dtsi | 90 +++++++++++++++++++++++++++++
1 file changed, 90 insertions(+)
--- a/arch/arm/boot/dts/broadcom/rp1.dtsi
+++ b/arch/arm/boot/dts/broadcom/rp1.dtsi
@@ -858,6 +858,36 @@
bias-disable;
};
+ rp1_gpclksrc0_gpio4: rp1_gpclksrc0_gpio4 {
+ function = "gpclk0";
+ pins = "gpio4";
+ bias-disable;
+ };
+
+ rp1_gpclksrc0_gpio20: rp1_gpclksrc0_gpio20 {
+ function = "gpclk0";
+ pins = "gpio20";
+ bias-disable;
+ };
+
+ rp1_gpclksrc1_gpio5: rp1_gpclksrc1_gpio5 {
+ function = "gpclk1";
+ pins = "gpio5";
+ bias-disable;
+ };
+
+ rp1_gpclksrc1_gpio18: rp1_gpclksrc1_gpio18 {
+ function = "gpclk1";
+ pins = "gpio18";
+ bias-disable;
+ };
+
+ rp1_gpclksrc1_gpio21: rp1_gpclksrc1_gpio21 {
+ function = "gpclk1";
+ pins = "gpio21";
+ bias-disable;
+ };
+
rp1_pwm1_gpio45: rp1_pwm1_gpio45 {
function = "pwm1";
pins = "gpio45";
@@ -1203,6 +1233,66 @@
clock-output-names = "clksrc_mipi1_dsi_byteclk";
clock-frequency = <72000000>;
};
+ /* GPIO derived clock sources. Each GPIO with a GPCLK function
+ * can drive its output from the respective GPCLK
+ * generator, and provide a clock source to other internal
+ * dividers. Add dummy sources here so that they can be overridden
+ * with overlays.
+ */
+ clksrc_gp0: clksrc_gp0 {
+ status = "disabled";
+ compatible = "fixed-factor-clock";
+ #clock-cells = <0>;
+ clock-div = <1>;
+ clock-mult = <1>;
+ clocks = <&rp1_clocks RP1_CLK_GP0>;
+ clock-output-names = "clksrc_gp0";
+ };
+ clksrc_gp1: clksrc_gp1 {
+ status = "disabled";
+ compatible = "fixed-factor-clock";
+ #clock-cells = <0>;
+ clock-div = <1>;
+ clock-mult = <1>;
+ clocks = <&rp1_clocks RP1_CLK_GP1>;
+ clock-output-names = "clksrc_gp1";
+ };
+ clksrc_gp2: clksrc_gp2 {
+ status = "disabled";
+ compatible = "fixed-factor-clock";
+ clock-div = <1>;
+ clock-mult = <1>;
+ #clock-cells = <0>;
+ clocks = <&rp1_clocks RP1_CLK_GP2>;
+ clock-output-names = "clksrc_gp2";
+ };
+ clksrc_gp3: clksrc_gp3 {
+ status = "disabled";
+ compatible = "fixed-factor-clock";
+ clock-div = <1>;
+ clock-mult = <1>;
+ #clock-cells = <0>;
+ clocks = <&rp1_clocks RP1_CLK_GP3>;
+ clock-output-names = "clksrc_gp3";
+ };
+ clksrc_gp4: clksrc_gp4 {
+ status = "disabled";
+ compatible = "fixed-factor-clock";
+ #clock-cells = <0>;
+ clock-div = <1>;
+ clock-mult = <1>;
+ clocks = <&rp1_clocks RP1_CLK_GP4>;
+ clock-output-names = "clksrc_gp4";
+ };
+ clksrc_gp5: clksrc_gp5 {
+ status = "disabled";
+ compatible = "fixed-factor-clock";
+ #clock-cells = <0>;
+ clock-div = <1>;
+ clock-mult = <1>;
+ clocks = <&rp1_clocks RP1_CLK_GP5>;
+ clock-output-names = "clksrc_gp5";
+ };
};
/ {