@@ -726,6 +726,23 @@ void setLedConfiguration(struct phy_device *phydev) {
726726 phy_write (phydev , 31 , 0 );
727727}
728728
729+ void adjust_rgmii_driving (struct phy_device * phydev )
730+ {
731+ // set to extension page
732+ phy_write (phydev , 31 , 0x0007 );
733+
734+ // switch extension page 164
735+ phy_write (phydev , 30 , 0x00a4 );
736+
737+ // set to enhance RGMII signal driving
738+ printk ("%s: #### before setting phy driving, Reg28 = 0x%x\n" , __func__ , phy_read (phydev , 28 ));
739+ phy_write (phydev , 28 , 0x0857f );
740+ printk ("%s: #### after setting phy driving, Reg28 = 0x%x\n" , __func__ , phy_read (phydev , 28 ));
741+
742+ //switch to PHY`s Page0
743+ phy_write (phydev , 31 , 0 );
744+ }
745+
729746/**
730747 * stmmac_adjust_link - adjusts the link parameters
731748 * @dev: net device structure
@@ -769,6 +786,7 @@ static void stmmac_adjust_link(struct net_device *dev)
769786 if (phydev -> speed != priv -> speed ) {
770787 new_state = 1 ;
771788 setLedConfiguration (phydev );
789+ adjust_rgmii_driving (phydev );
772790 switch (phydev -> speed ) {
773791 case 1000 :
774792 if (likely (priv -> plat -> has_gmac ))
0 commit comments