realtek: rtl838x: Instantiate auxiliary MDIO bus
authorSander Vanheule <sander@svanheule.net>
Fri, 27 Dec 2024 14:56:44 +0000 (15:56 +0100)
committerSander Vanheule <sander@svanheule.net>
Tue, 7 Jan 2025 13:36:34 +0000 (14:36 +0100)
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@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@svanheule.net>
target/linux/realtek/dts/rtl838x.dtsi
target/linux/realtek/rtl838x/config-6.6

index 13ba6450b2d6f03174cab87cadf114c6a57138f7..ab034fc1bcfc2c380ed6f34a40a356c37941adb0 100644 (file)
                };
        };
 
+       switchcore@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@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@1b001000 {
                compatible = "pinctrl-single";
                reg = <0x1b001000 0x4>;
                };
        };
 
+       pinmux@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@1b00a300 {
                compatible = "realtek,rtl838x-eth";
                reg = <0x1b00a300 0x100>;
index 6cceded5af55de667dac279d5f5fe20a75ac667f..9364888e47b49b291bafd136d4404bab26cd933c 100644 (file)
@@ -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