Skip to content

Commit f24ddb0

Browse files
andy_chiAndy Chi
authored andcommitted
Modify ethernet LED behavior for meet ASUS ethernet LED spec.
Change-Id: Ie990b6117ec6b9db0d22eba0291a7d7c1146057b
1 parent 2d84377 commit f24ddb0

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,38 @@ static void stmmac_release_ptp(struct stmmac_priv *priv)
679679
stmmac_ptp_unregister(priv);
680680
}
681681

682+
void setLedConfiguration(struct phy_device *phydev) {
683+
684+
// To switch to extension Page44
685+
phy_write(phydev, 31, 0x0007);
686+
phy_write(phydev, 30, 0x002c);
687+
688+
printk("%s: #### before setting led, Reg26 = 0x%x , Reg28 = 0x%x\n", __func__, phy_read(phydev, 26), phy_read(phydev, 28));
689+
690+
//LED Link speed default setting
691+
phy_write(phydev, 28, (phy_read(phydev, 28) & 0xf000));
692+
//LED1 & LED2 not blinking
693+
phy_write(phydev, 26, (phy_read(phydev, 26) & ~(BIT(5)|BIT(6))) );
694+
695+
switch (phydev->speed) {
696+
case 1000:
697+
//LED green
698+
phy_write(phydev, 28, (phy_read(phydev, 28) | BIT(6)) );
699+
break;
700+
case 100:
701+
//LED orange
702+
phy_write(phydev, 28, (phy_read(phydev, 28) | BIT(9)) );
703+
break;
704+
default:
705+
break;
706+
}
707+
708+
printk("%s: #### after setting led, Reg26 = 0x%x , Reg28 = 0x%x\n", __func__, phy_read(phydev, 26), phy_read(phydev, 28));
709+
710+
//switch to PHY`s Page0
711+
phy_write(phydev, 31, 0);
712+
}
713+
682714
/**
683715
* stmmac_adjust_link - adjusts the link parameters
684716
* @dev: net device structure
@@ -721,6 +753,7 @@ static void stmmac_adjust_link(struct net_device *dev)
721753

722754
if (phydev->speed != priv->speed) {
723755
new_state = 1;
756+
setLedConfiguration(phydev);
724757
switch (phydev->speed) {
725758
case 1000:
726759
if (likely(priv->plat->has_gmac))

0 commit comments

Comments
 (0)