Skip to content

Commit 2fc31fa

Browse files
yupei_linasus-leslieyu
authored andcommitted
Ethernet : modify ethernet LED behavior for meet ASUS ethernet LED spec.
Change-Id: I6db038f4923b5147c4c4637c32fcb9d5d46c0ed9
1 parent d116759 commit 2fc31fa

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
@@ -688,6 +688,38 @@ static void stmmac_release_ptp(struct stmmac_priv *priv)
688688
stmmac_ptp_unregister(priv);
689689
}
690690

691+
void setLedConfiguration(struct phy_device *phydev) {
692+
693+
// To switch to extension Page44
694+
phy_write(phydev, 31, 0x0007);
695+
phy_write(phydev, 30, 0x002c);
696+
697+
printk("%s: #### before setting led, Reg26 = 0x%x , Reg28 = 0x%x\n", __func__, phy_read(phydev, 26), phy_read(phydev, 28));
698+
699+
//LED Link speed default setting
700+
phy_write(phydev, 28, (phy_read(phydev, 28) & 0xf000));
701+
//LED1 & LED2 not blinking
702+
phy_write(phydev, 26, (phy_read(phydev, 26) & ~(BIT(5)|BIT(6))) );
703+
704+
switch (phydev->speed) {
705+
case 1000:
706+
//LED green
707+
phy_write(phydev, 28, (phy_read(phydev, 28) | BIT(6)) );
708+
break;
709+
case 100:
710+
//LED orange
711+
phy_write(phydev, 28, (phy_read(phydev, 28) | BIT(9)) );
712+
break;
713+
default:
714+
break;
715+
}
716+
717+
printk("%s: #### after setting led, Reg26 = 0x%x , Reg28 = 0x%x\n", __func__, phy_read(phydev, 26), phy_read(phydev, 28));
718+
719+
//switch to PHY`s Page0
720+
phy_write(phydev, 31, 0);
721+
}
722+
691723
/**
692724
* stmmac_adjust_link - adjusts the link parameters
693725
* @dev: net device structure
@@ -729,6 +761,7 @@ static void stmmac_adjust_link(struct net_device *dev)
729761

730762
if (phydev->speed != priv->speed) {
731763
new_state = 1;
764+
setLedConfiguration(phydev);
732765
switch (phydev->speed) {
733766
case 1000:
734767
if (likely(priv->plat->has_gmac))

0 commit comments

Comments
 (0)