aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/backport-5.15/815-v6.4-09-net-phy-marvell-Implement-led_blink_set.patch
diff options
context:
space:
mode:
authorChristian Marangi <ansuelsmth@gmail.com>2023-06-04 04:26:59 +0200
committerDaniel Golle <daniel@makrotopia.org>2023-09-04 23:00:34 +0100
commitcf08db988baca64b878f1887d13e2fb79a708d8c (patch)
treeb0e70dfa0d51212b0ddc011383431d97138a5fe4 /target/linux/generic/backport-5.15/815-v6.4-09-net-phy-marvell-Implement-led_blink_set.patch
parente685162a78c07d373bd7b621a716465970680bae (diff)
downloadupstream-cf08db988baca64b878f1887d13e2fb79a708d8c.tar.gz
upstream-cf08db988baca64b878f1887d13e2fb79a708d8c.tar.bz2
upstream-cf08db988baca64b878f1887d13e2fb79a708d8c.zip
generic: backport initial LEDs hw control support
Backport initial LEDs hw control support. Currently this is limited to only rx/tx and link events for the netdev trigger but the API got accepted and the additional modes are working on and will be backported later. Refresh every patch and add the additional config flag for QCA8K new LEDs support. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> Signed-off-by: Daniel Golle <daniel@makrotopia.org> (cherry picked from commit 0a4b309f41062ef40706162ae53b6428982a0685)
Diffstat (limited to 'target/linux/generic/backport-5.15/815-v6.4-09-net-phy-marvell-Implement-led_blink_set.patch')
-rw-r--r--target/linux/generic/backport-5.15/815-v6.4-09-net-phy-marvell-Implement-led_blink_set.patch104
1 files changed, 104 insertions, 0 deletions
diff --git a/target/linux/generic/backport-5.15/815-v6.4-09-net-phy-marvell-Implement-led_blink_set.patch b/target/linux/generic/backport-5.15/815-v6.4-09-net-phy-marvell-Implement-led_blink_set.patch
new file mode 100644
index 0000000000..0f258c6b92
--- /dev/null
+++ b/target/linux/generic/backport-5.15/815-v6.4-09-net-phy-marvell-Implement-led_blink_set.patch
@@ -0,0 +1,104 @@
+From ea9e86485decb2ac1750005bd96c166c9b780406 Mon Sep 17 00:00:00 2001
+From: Andrew Lunn <andrew@lunn.ch>
+Date: Mon, 17 Apr 2023 17:17:31 +0200
+Subject: [PATCH 9/9] net: phy: marvell: Implement led_blink_set()
+
+The Marvell PHY can blink the LEDs, simple on/off. All LEDs blink at
+the same rate, and the reset default is 84ms per blink, which is
+around 12Hz.
+
+Signed-off-by: Andrew Lunn <andrew@lunn.ch>
+Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
+Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/phy/marvell.c | 36 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+
+--- a/drivers/net/phy/marvell.c
++++ b/drivers/net/phy/marvell.c
+@@ -147,6 +147,8 @@
+ #define MII_88E1318S_PHY_LED_FUNC 0x10
+ #define MII_88E1318S_PHY_LED_FUNC_OFF (0x8)
+ #define MII_88E1318S_PHY_LED_FUNC_ON (0x9)
++#define MII_88E1318S_PHY_LED_FUNC_HI_Z (0xa)
++#define MII_88E1318S_PHY_LED_FUNC_BLINK (0xb)
+ #define MII_88E1318S_PHY_LED_TCR 0x12
+ #define MII_88E1318S_PHY_LED_TCR_FORCE_INT BIT(15)
+ #define MII_88E1318S_PHY_LED_TCR_INTn_ENABLE BIT(7)
+@@ -2823,6 +2825,35 @@ static int m88e1318_led_brightness_set(s
+ MII_88E1318S_PHY_LED_FUNC, reg);
+ }
+
++static int m88e1318_led_blink_set(struct phy_device *phydev, u8 index,
++ unsigned long *delay_on,
++ unsigned long *delay_off)
++{
++ int reg;
++
++ reg = phy_read_paged(phydev, MII_MARVELL_LED_PAGE,
++ MII_88E1318S_PHY_LED_FUNC);
++ if (reg < 0)
++ return reg;
++
++ switch (index) {
++ case 0:
++ case 1:
++ case 2:
++ reg &= ~(0xf << (4 * index));
++ reg |= MII_88E1318S_PHY_LED_FUNC_BLINK << (4 * index);
++ /* Reset default is 84ms */
++ *delay_on = 84 / 2;
++ *delay_off = 84 / 2;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ return phy_write_paged(phydev, MII_MARVELL_LED_PAGE,
++ MII_88E1318S_PHY_LED_FUNC, reg);
++}
++
+ static int marvell_probe(struct phy_device *phydev)
+ {
+ struct marvell_priv *priv;
+@@ -3072,6 +3103,7 @@ static struct phy_driver marvell_drivers
+ .get_strings = marvell_get_strings,
+ .get_stats = marvell_get_stats,
+ .led_brightness_set = m88e1318_led_brightness_set,
++ .led_blink_set = m88e1318_led_blink_set,
+ },
+ {
+ .phy_id = MARVELL_PHY_ID_88E1145,
+@@ -3179,6 +3211,7 @@ static struct phy_driver marvell_drivers
+ .cable_test_tdr_start = marvell_vct5_cable_test_tdr_start,
+ .cable_test_get_status = marvell_vct7_cable_test_get_status,
+ .led_brightness_set = m88e1318_led_brightness_set,
++ .led_blink_set = m88e1318_led_blink_set,
+ },
+ {
+ .phy_id = MARVELL_PHY_ID_88E1540,
+@@ -3206,6 +3239,7 @@ static struct phy_driver marvell_drivers
+ .cable_test_tdr_start = marvell_vct5_cable_test_tdr_start,
+ .cable_test_get_status = marvell_vct7_cable_test_get_status,
+ .led_brightness_set = m88e1318_led_brightness_set,
++ .led_blink_set = m88e1318_led_blink_set,
+ },
+ {
+ .phy_id = MARVELL_PHY_ID_88E1545,
+@@ -3233,6 +3267,7 @@ static struct phy_driver marvell_drivers
+ .cable_test_tdr_start = marvell_vct5_cable_test_tdr_start,
+ .cable_test_get_status = marvell_vct7_cable_test_get_status,
+ .led_brightness_set = m88e1318_led_brightness_set,
++ .led_blink_set = m88e1318_led_blink_set,
+ },
+ {
+ .phy_id = MARVELL_PHY_ID_88E3016,
+@@ -3375,6 +3410,7 @@ static struct phy_driver marvell_drivers
+ .get_tunable = m88e1540_get_tunable,
+ .set_tunable = m88e1540_set_tunable,
+ .led_brightness_set = m88e1318_led_brightness_set,
++ .led_blink_set = m88e1318_led_blink_set,
+ },
+ };
+