rockchip: set led data mode for yt8521 phy

This commit is contained in:
coolsnowwolf 2025-04-18 22:49:47 +08:00
parent da0dd59589
commit 4d9daeee2b

View File

@ -0,0 +1,46 @@
--- a/drivers/net/phy/motorcomm.c 2025-02-14 18:58:18.691542738 +0900
+++ b/drivers/net/phy/motorcomm.c 2025-02-14 19:05:00.299135505 +0900
@@ -353,6 +353,12 @@
#define YT8821_CHIP_MODE_AUTO_BX2500_SGMII 0
#define YT8821_CHIP_MODE_FORCE_BX2500 1
+#define YT8521_EXTREG_LED_GENERAL_CFG 0xA00B
+#define YT8521_EXTREG_LED0_CFG 0xA00C
+#define YT8521_EXTREG_LED1_CFG 0xA00D
+#define YT8521_EXTREG_LED2_CFG 0xA00E
+#define YT8521_EXTREG_LED_BLINK_CFG 0xA00F
+
struct yt8521_priv {
/* combo_advertising is used for case of YT8521 in combo mode,
* this means that yt8521 may work in utp or fiber mode which depends
@@ -1577,6 +1583,20 @@
return 0;
}
+static int yt8521_led_init(struct phy_device *phydev)
+{
+ int ret;
+ u16 val;
+
+ val = (0x7 << 4);
+ ret = ytphy_write_ext(phydev, YT8521_EXTREG_LED2_CFG, val);
+
+ val = 0x7;
+ ret = ytphy_write_ext(phydev, YT8521_EXTREG_LED1_CFG, val);
+
+ return 0;
+}
+
/**
* yt8521_soft_reset() - called to issue a PHY software reset
* @phydev: a pointer to a &struct phy_device
@@ -1677,6 +1697,9 @@
if (ret < 0)
goto err_restore_page;
}
+
+ yt8521_led_init(phydev);
+
err_restore_page:
return phy_restore_page(phydev, old_page, ret);
}