summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSander Vanheule2024-12-26 21:26:33 +0000
committerSander Vanheule2025-02-22 11:32:34 +0000
commit60cae0e08fd2b4809b8189b171397ae6b6360993 (patch)
tree9a7ab5e13eb51e54937717b1815b926d223aa5ed
parent07ebd87bd196d3ccecd6b1f5c3d9100b59fb7e4e (diff)
downloadopenwrt-60cae0e08fd2b4809b8189b171397ae6b6360993.tar.gz
realtek: rtl838x: Switch GS1900 rtl8231 driver
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)
-rw-r--r--target/linux/realtek/dts/rtl8380_zyxel_gs1900.dtsi25
-rw-r--r--target/linux/realtek/rtl838x/config-6.67
2 files changed, 27 insertions, 5 deletions
diff --git a/target/linux/realtek/dts/rtl8380_zyxel_gs1900.dtsi b/target/linux/realtek/dts/rtl8380_zyxel_gs1900.dtsi
index 3889fe8859..927b9527a9 100644
--- a/target/linux/realtek/dts/rtl8380_zyxel_gs1900.dtsi
+++ b/target/linux/realtek/dts/rtl8380_zyxel_gs1900.dtsi
@@ -40,18 +40,35 @@
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";
+ };
};
};
diff --git a/target/linux/realtek/rtl838x/config-6.6 b/target/linux/realtek/rtl838x/config-6.6
index d7d701d40d..4cc66bbdda 100644
--- a/target/linux/realtek/rtl838x/config-6.6
+++ b/target/linux/realtek/rtl838x/config-6.6
@@ -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