summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSander Vanheule2024-12-27 14:56:44 +0000
committerSander Vanheule2025-01-07 13:36:34 +0000
commit92ae8cb16c46823d5a00489b4d3a9cc724ba67a4 (patch)
tree3d92bb1face2269c436ad141f2152ca82e3a0d75
parentae833c01b312258c27ff2dc1c8d44b15b7028e32 (diff)
downloadopenwrt-92ae8cb16c46823d5a00489b4d3a9cc724ba67a4.tar.gz
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@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>
-rw-r--r--target/linux/realtek/dts/rtl838x.dtsi56
-rw-r--r--target/linux/realtek/rtl838x/config-6.62
2 files changed, 57 insertions, 1 deletions
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@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>;
@@ -262,6 +298,26 @@
};
};
+ 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>;
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