realtek: rtl838x: Switch GS1900 rtl8231 driver
authorSander Vanheule <sander@svanheule.net>
Thu, 26 Dec 2024 21:26:33 +0000 (22:26 +0100)
committerSander Vanheule <sander@svanheule.net>
Wed, 15 Jan 2025 13:38:06 +0000 (14:38 +0100)
Update the devicetree files to switch the GS1900 devices over to the new
pinctrl and GPIO driver. Enable the drivers to ensure the nodes can be
used.

This may fix issues caused by bad RMW behaviour on the GPIO data lines,
or glitches due to setting the pin direction before the pin level.

Although the driver supports retaining GPIO state after a warm boot,
some bootloaders appear to apply a default configuration on boot, which
may cause an interrupt in PoE-PSE support.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
(cherry picked from commit 5141e2d8617efa774b64f9ebc6d97cdc85487dc8)

target/linux/realtek/dts/rtl8380_zyxel_gs1900.dtsi
target/linux/realtek/rtl838x/config-6.6

index 3889fe8859a7e3727fe6a7d885a311cc3daf68ab..927b9527a95a00da34562238a2f80895ce56bd24 100644 (file)
                        gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
                };
        };
+};
+
+&mdio_aux {
+       status = "okay";
+
+       // Reset GPIO is <&gpio0 1 GPIO_ACTIVE_LOW>
+       // Don't specify the reset info so the mdio subsystem doesn't reset the bus
+       //reset-gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
+       //reset-delay-us = <1000>;
+       //reset-post-delay-us = <10000>;
+
+       gpio1: expander@0 {
+               compatible = "realtek,rtl8231";
+               reg = <0x0>;
 
-       gpio1: rtl8231-gpio {
-               compatible = "realtek,rtl8231-gpio";
-               #gpio-cells = <2>;
                gpio-controller;
-               indirect-access-bus-id = <0>;
+               #gpio-cells = <2>;
+               gpio-ranges = <&gpio1 0 0 37>;
 
                poe_enable {
                        gpio-hog;
                        gpios = <13 GPIO_ACTIVE_HIGH>;
                        output-high;
                };
+
+               led-controller {
+                       compatible = "realtek,rtl8231-leds";
+                       status = "disabled";
+               };
        };
 };
 
index d7d701d40deeab0c96d3db7977fbad471d0fbd71..4cc66bbdda5b9408bb0a8e6b701d6f3ee5f885c4 100644 (file)
@@ -87,6 +87,7 @@ CONFIG_GPIO_GENERIC=y
 CONFIG_GPIO_PCA953X=y
 CONFIG_GPIO_PCA953X_IRQ=y
 CONFIG_GPIO_REALTEK_OTTO=y
+CONFIG_GPIO_REGMAP=y
 CONFIG_GPIO_RTL8231=y
 CONFIG_GPIO_WATCHDOG=y
 # CONFIG_GPIO_WATCHDOG_ARCH_INITCALL is not set
@@ -114,6 +115,7 @@ CONFIG_IRQ_MIPS_CPU=y
 CONFIG_IRQ_WORK=y
 CONFIG_JFFS2_ZLIB=y
 CONFIG_LEDS_GPIO=y
+# CONFIG_LEDS_RTL8231 is not set
 CONFIG_LIBFDT=y
 CONFIG_LOCK_DEBUGGING_SUPPORT=y
 CONFIG_MACH_REALTEK_RTL=y
@@ -125,7 +127,8 @@ CONFIG_MDIO_I2C=y
 CONFIG_MDIO_REALTEK_OTTO_AUX=y
 CONFIG_MDIO_SMBUS=y
 CONFIG_MEMFD_CREATE=y
-# CONFIG_MFD_RTL8231 is not set
+CONFIG_MFD_CORE=y
+CONFIG_MFD_RTL8231=y
 CONFIG_MFD_SYSCON=y
 CONFIG_MIGRATION=y
 CONFIG_MIPS=y
@@ -179,6 +182,7 @@ CONFIG_PGTABLE_LEVELS=2
 CONFIG_PHYLIB=y
 CONFIG_PHYLINK=y
 CONFIG_PINCTRL=y
+CONFIG_PINCTRL_RTL8231=y
 CONFIG_PM_OPP=y
 CONFIG_POWER_RESET=y
 CONFIG_POWER_RESET_GPIO_RESTART=y
@@ -191,6 +195,7 @@ CONFIG_REALTEK_PHY=y
 CONFIG_REALTEK_SOC_PHY=y
 CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MDIO=y
 CONFIG_REGMAP_MMIO=y
 CONFIG_RESET_CONTROLLER=y
 CONFIG_RTL838X=y