[openwrt/openwrt] realtek: rtl838x: Instantiate auxiliary MDIO bus

LEDE Commits lede-commits at lists.infradead.org
Tue Jan 7 05:38:43 PST 2025


svanheule pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/92ae8cb16c46823d5a00489b4d3a9cc724ba67a4

commit 92ae8cb16c46823d5a00489b4d3a9cc724ba67a4
Author: Sander Vanheule <sander at svanheule.net>
AuthorDate: Fri Dec 27 15:56:44 2024 +0100

    realtek: rtl838x: Instantiate auxiliary MDIO bus
    
    Add a disabled node for the auxiliary MDIO bus, used to manage the
    RTL8231 expanders. A simple-mfd parent node is added, at the same
    (implied) address as the switch at 1b000000 node, as the switch drivers
    should anyway transistion to MFD subdivices at some point.
    
    Additionally, two pinctrl-single node are added to allow the MDX pins to
    be muxed correctly, in case the bootloader leaves these unconfigured.
    
    Signed-off-by: Sander Vanheule <sander at svanheule.net>
---
 target/linux/realtek/dts/rtl838x.dtsi   | 56 +++++++++++++++++++++++++++++++++
 target/linux/realtek/rtl838x/config-6.6 |  2 +-
 2 files changed, 57 insertions(+), 1 deletion(-)

diff --git a/target/linux/realtek/dts/rtl838x.dtsi b/target/linux/realtek/dts/rtl838x.dtsi
index 13ba6450b2..ab034fc1bc 100644
--- a/target/linux/realtek/dts/rtl838x.dtsi
+++ b/target/linux/realtek/dts/rtl838x.dtsi
@@ -232,6 +232,42 @@
 		};
 	};
 
+	switchcore at 1b000000 {
+		compatible = "syscon", "simple-mfd";
+		reg = <0x1b000000 0x20000>;
+
+		mdio_aux: mdio-aux {
+			compatible = "realtek,rtl8380-aux-mdio";
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			status = "disabled";
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&mdio_aux_mdx>, <&aux_mode_mdio>;
+		};
+	};
+
+	pinmux at 1b000144 {
+		compatible = "pinctrl-single";
+		reg = <0x1b000144 0x4>;
+
+		pinctrl-single,bit-per-mux;
+		pinctrl-single,register-width = <32>;
+		pinctrl-single,function-mask = <0x1>;
+		#pinctrl-cells = <2>;
+
+		/* I2C mode */
+		aux_mode_i2c: i2c-pins {
+			pinctrl-single,bits = <0x0 0x0 0x1>;
+		};
+
+		/* MDIO mode */
+		aux_mode_mdio: mdx-pins {
+			pinctrl-single,bits = <0x0 0x1 0x1>;
+		};
+	};
+
 	pinmux: pinmux at 1b001000 {
 		compatible = "pinctrl-single";
 		reg = <0x1b001000 0x4>;
@@ -262,6 +298,26 @@
 		};
 	};
 
+	pinmux at 1b00a0e0 {
+		compatible = "pinctrl-single";
+		reg = <0x1b00a0e0 0x4>;
+
+		pinctrl-single,bit-per-mux;
+		pinctrl-single,register-width = <32>;
+		pinctrl-single,function-mask = <0x1>;
+		#pinctrl-cells = <2>;
+
+		/* Use SoC GPIO 2/3 as GPIO */
+		mdio_aux_gpio: gpio-pins {
+			pinctrl-single,bits = <0x0 0x0 0x1>;
+		};
+
+		/* Use SoC GPIO 2/3 as MDC/MDIO */
+		mdio_aux_mdx: mdx-pins {
+			pinctrl-single,bits = <0x0 0x1 0x1>;
+		};
+	};
+
 	ethernet0: ethernet at 1b00a300 {
 		compatible = "realtek,rtl838x-eth";
 		reg = <0x1b00a300 0x100>;
diff --git a/target/linux/realtek/rtl838x/config-6.6 b/target/linux/realtek/rtl838x/config-6.6
index 6cceded5af..9364888e47 100644
--- a/target/linux/realtek/rtl838x/config-6.6
+++ b/target/linux/realtek/rtl838x/config-6.6
@@ -130,7 +130,7 @@ CONFIG_MDIO_BUS=y
 CONFIG_MDIO_DEVICE=y
 CONFIG_MDIO_DEVRES=y
 CONFIG_MDIO_I2C=y
-# CONFIG_MDIO_REALTEK_OTTO_AUX is not set
+CONFIG_MDIO_REALTEK_OTTO_AUX=y
 CONFIG_MDIO_SMBUS=y
 CONFIG_MFD_SYSCON=y
 CONFIG_MIGRATION=y




More information about the lede-commits mailing list