net: phy: aquantia: Set only autoneg on in register 4.c441
authorValentin-catalin Neacsu <valentin-catalin.neacsu@nxp.com>
Wed, 13 Feb 2019 09:14:53 +0000 (09:14 +0000)
committerJoe Hershberger <joe.hershberger@ni.com>
Wed, 8 May 2019 22:27:00 +0000 (17:27 -0500)
For AQR405 in register 4.c441 bit 15 was override with 0. This caused the
phy to not negotiate at 2.5GB rate with mac. To avoid
this override it needed first to know the previous value of reg 4.c441
and set only bit 3.

Signed-off-by: Valentin Catalin Neacsu <valentin-catalin.neacsu@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
drivers/net/phy/aquantia.c

index 12df09877de9994c2f1f1e5a03bf3390393c2bdd..5c3298d612c23e9b159f6c411b4d51517ffdb8ad 100644 (file)
@@ -303,9 +303,14 @@ int aquantia_config(struct phy_device *phydev)
                               AQUANTIA_SYSTEM_INTERFACE_SR);
                /* If SI is USXGMII then start USXGMII autoneg */
                if ((val & AQUANTIA_SI_IN_USE_MASK) == AQUANTIA_SI_USXGMII) {
+                       reg_val1 =  phy_read(phydev, MDIO_MMD_PHYXS,
+                                            AQUANTIA_VENDOR_PROVISIONING_REG);
+
+                       reg_val1 |= AQUANTIA_USX_AUTONEG_CONTROL_ENA;
+
                        phy_write(phydev, MDIO_MMD_PHYXS,
                                  AQUANTIA_VENDOR_PROVISIONING_REG,
-                                 AQUANTIA_USX_AUTONEG_CONTROL_ENA);
+                                 reg_val1);
                        printf("%s: system interface USXGMII\n",
                               phydev->dev->name);
                } else {