From d1c9ccd6967c95a4d5bc61f421203491bf181491 Mon Sep 17 00:00:00 2001 From: Wig Cheng Date: Wed, 20 Apr 2022 18:02:20 +0800 Subject: [PATCH] net: phy: realtek: set led for rtl8211f phy Initialize LCR register to configure yellow LED for Active, green LED for 100Mbps Link, and orange LED for 1000Mbps Link. Note that EEE LED register has to disabled before configure custom LED stauts. --- drivers/net/phy/realtek.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c index 7d38af5ed4b52..8a2b425627bef 100644 --- a/drivers/net/phy/realtek.c +++ b/drivers/net/phy/realtek.c @@ -29,6 +29,11 @@ #define RTL8211F_PAGE_SELECT 0x1f #define RTL8211F_TX_DELAY 0x100 +/* page 0xd04, register 0x10-0x11 */ +#define RTL8211F_PHYLED_PAGE 0x0d04 +#define RTL8211F_EEE_LED_REG 0x11 +#define RTL8211F_LED_REG 0x10 + MODULE_DESCRIPTION("Realtek PHY driver"); MODULE_AUTHOR("Johnson Leung"); MODULE_LICENSE("GPL"); @@ -113,6 +118,21 @@ static int rtl8211f_config_init(struct phy_device *phydev) reg &= ~RTL8211F_TX_DELAY; phy_write(phydev, 0x11, reg); + + ret = phy_write(phydev, RTL8211F_PAGE_SELECT, RTL8211F_PHYLED_PAGE); + if (ret < 0) + dev_err(&phydev->mdio.dev, "select page failed\n"); + + /* disable EEE LED*/ + ret = phy_write(phydev, RTL8211F_EEE_LED_REG, 0x0000); + if (ret < 0) + dev_err(&phydev->mdio.dev, "write EEE register failed\n"); + + /* setting 1000Mbps for orange LED, 100Mbps for green LED */ + ret = phy_write(phydev, RTL8211F_LED_REG, 0x091f); + if (ret < 0) + dev_err(&phydev->mdio.dev, "select LED register failed\n"); + /* restore to default page 0 */ phy_write(phydev, RTL8211F_PAGE_SELECT, 0x0);