@@ -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