@@ -721,6 +721,23 @@ void setLedConfiguration(struct phy_device *phydev) {
721721 phy_write (phydev , 31 , 0 );
722722}
723723
724+ void adjust_rgmii_driving (struct phy_device * phydev )
725+ {
726+ // set to extension page
727+ phy_write (phydev , 31 , 0x0007 );
728+
729+ // switch extension page 164
730+ phy_write (phydev , 30 , 0x00a4 );
731+
732+ // set to enhance RGMII signal driving
733+ printk ("%s: #### before setting phy driving, Reg28 = 0x%x\n" , __func__ , phy_read (phydev , 28 ));
734+ phy_write (phydev , 28 , 0x0857f );
735+ printk ("%s: #### after setting phy driving, Reg28 = 0x%x\n" , __func__ , phy_read (phydev , 28 ));
736+
737+ //switch to PHY`s Page0
738+ phy_write (phydev , 31 , 0 );
739+ }
740+
724741/**
725742 * stmmac_adjust_link - adjusts the link parameters
726743 * @dev: net device structure
@@ -763,6 +780,7 @@ static void stmmac_adjust_link(struct net_device *dev)
763780 if (phydev -> speed != priv -> speed ) {
764781 new_state = 1 ;
765782 setLedConfiguration (phydev );
783+ adjust_rgmii_driving (phydev );
766784 switch (phydev -> speed ) {
767785 case 1000 :
768786 if (likely (priv -> plat -> has_gmac ))
0 commit comments