[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251215125705.1567527-3-shaojijie@huawei.com>
Date: Mon, 15 Dec 2025 20:57:01 +0800
From: Jijie Shao <shaojijie@...wei.com>
To: <davem@...emloft.net>, <edumazet@...gle.com>, <kuba@...nel.org>,
<pabeni@...hat.com>, <andrew+netdev@...n.ch>, <horms@...nel.org>,
<Frank.Sae@...or-comm.com>, <hkallweit1@...il.com>, <linux@...linux.org.uk>
CC: <shenjian15@...wei.com>, <liuyonglong@...wei.com>,
<chenhao418@...wei.com>, <jonathan.cameron@...wei.com>,
<salil.mehta@...wei.com>, <shiyongbang@...wei.com>, <netdev@...r.kernel.org>,
<linux-kernel@...r.kernel.org>, <shaojijie@...wei.com>
Subject: [PATCH RFC net-next 2/6] net: phy: add support to set default rules
The node of led need add new property: rules,
and rules can be set as:
BIT(TRIGGER_NETDEV_LINK) | BIT(TRIGGER_NETDEV_RX)
Signed-off-by: Jijie Shao <shaojijie@...wei.com>
---
drivers/net/phy/phy_device.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index c5ce057f88ff..65bd0bf11e78 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -3208,6 +3208,26 @@ static void phy_leds_unregister(struct phy_device *phydev)
}
}
+static int fwnode_phy_led_set_rules(struct phy_device *phydev,
+ struct fwnode_handle *led, u32 index)
+{
+ u32 rules;
+ int err;
+
+ if (!fwnode_property_present(led, "rules"))
+ return 0;
+
+ err = fwnode_property_read_u32(led, "rules", &rules);
+ if (err)
+ return err;
+
+ err = phydev->drv->led_hw_is_supported(phydev, index, rules);
+ if (err)
+ return err;
+
+ return phydev->drv->led_hw_control_set(phydev, index, rules);
+}
+
static int fwnode_phy_led(struct phy_device *phydev,
struct fwnode_handle *led)
{
@@ -3253,6 +3273,11 @@ static int fwnode_phy_led(struct phy_device *phydev,
return err;
}
+ err = fwnode_phy_led_set_rules(phydev, led, index);
+ if (err)
+ phydev_warn(phydev, "failed to set rules for led%u, err = %d\n",
+ index, err);
+
phyled->index = index;
if (phydev->drv->led_brightness_set)
cdev->brightness_set_blocking = phy_led_set_brightness;
--
2.33.0
Powered by blists - more mailing lists