Re: [PATCH 1/2] net: phy: realtek: Add support for PHY LEDs on RTL8211E

From: Michael Klein
Date: Thu Mar 13 2025 - 14:55:04 EST


On Thu, Mar 13, 2025 at 05:45:05PM +0100, Andrew Lunn wrote:
On Wed, Mar 12, 2025 at 08:36:27PM +0100, Michael Klein wrote:
Like the RTL8211F, the RTL8211E PHY supports up to three LEDs.
Add netdev trigger support for them, too.

Signed-off-by: Michael Klein <michael@xxxxxxxxxxxx>
---
drivers/net/phy/realtek.c | 120 ++++++++++++++++++++++++++++++++++++--

What tree is this based on?

This was based on mainline, will be addressed in the next version.

+static int rtl8211e_led_hw_control_get(struct phy_device *phydev, u8 index,
+ unsigned long *rules)
+{
+ int oldpage, ret;
+ u16 cr1, cr2;
+
+ if (index >= RTL8211x_LED_COUNT)
+ return -EINVAL;
+
+ oldpage = phy_select_page(phydev, 0x7);
+ if (oldpage < 0)
+ goto err_restore_page;
+
+ ret = __phy_write(phydev, RTL821x_EXT_PAGE_SELECT, 0x2c);
+ if (ret)
+ goto err_restore_page;

What is happening here? You select page 0x7, and then use
RTL821x_EXT_PAGE_SELECT to select 0x2c? Does this hardware have pages
within pages?

Kind of; this is from the datasheet:

6.9.5. Access to Extension Page (ExtPage)

Set MDIO commands as shown below to switch to the Extension Page (ExtPage) 0xXY (in Hex).
1. Set Register 31 Data=0x0007 (set to Extension Page)
2. Set Register 30 Data=0x00XY (Extension Page XY)
3. Set the target Register Data
4. Set Register 31 Data=0x0000 (switch to Page 0)

Register 30 is RTL821x_EXT_PAGE_SELECT, LED config registers are on extension page 0x2c

--
Michael