aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/realtek/files-5.15
diff options
context:
space:
mode:
authorLorenz Brun <lorenz@brun.one>2022-12-28 20:54:21 +0100
committerSander Vanheule <sander@svanheule.net>2023-01-24 21:55:44 +0100
commitbec9e79a99adee64dcc9559e6f008a2ffd5b3f4e (patch)
treee6a7ca8642bb45f1111a3bba28e229eed2b40c4c /target/linux/realtek/files-5.15
parentd84dc5d4d7b28cf4132448130d3beb4352539f4f (diff)
downloadupstream-bec9e79a99adee64dcc9559e6f008a2ffd5b3f4e.tar.gz
upstream-bec9e79a99adee64dcc9559e6f008a2ffd5b3f4e.tar.bz2
upstream-bec9e79a99adee64dcc9559e6f008a2ffd5b3f4e.zip
realtek: dsa: support active-high LEDs
The TP-LINK TL-ST1008F has active-high LEDs, so we need a device tree property to express this. Signed-off-by: Lorenz Brun <lorenz@brun.one> [Tidy up code, restrict changes to 5.15] Signed-off-by: Sander Vanheule <sander@svanheule.net>
Diffstat (limited to 'target/linux/realtek/files-5.15')
-rw-r--r--target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/rtl930x.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/rtl930x.c b/target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/rtl930x.c
index 7e4f13fbad..5a899f32ba 100644
--- a/target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/rtl930x.c
+++ b/target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/rtl930x.c
@@ -21,6 +21,8 @@
#define RTL930X_VLAN_PORT_TAG_STS_CTRL_IGR_P_OTAG_KEEP_MASK GENMASK(1,1)
#define RTL930X_VLAN_PORT_TAG_STS_CTRL_IGR_P_ITAG_KEEP_MASK GENMASK(0,0)
+#define RTL930X_LED_GLB_ACTIVE_LOW BIT(22)
+
extern struct mutex smi_lock;
extern struct rtl83xx_soc_info soc_info;
@@ -2431,6 +2433,12 @@ static void rtl930x_led_init(struct rtl838x_switch_priv *priv)
/* Set LED mode to serial (0x1) */
sw_w32_mask(0x3, 0x1, RTL930X_LED_GLB_CTRL);
+ /* Set LED active state */
+ if (of_property_read_bool(node, "active-low"))
+ sw_w32_mask(RTL930X_LED_GLB_ACTIVE_LOW, 0, RTL930X_LED_GLB_CTRL);
+ else
+ sw_w32_mask(0, RTL930X_LED_GLB_ACTIVE_LOW, RTL930X_LED_GLB_CTRL);
+
/* Set port type masks */
sw_w32(pm, RTL930X_LED_PORT_COPR_MASK_CTRL);
sw_w32(pm, RTL930X_LED_PORT_FIB_MASK_CTRL);