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