net: phy: DP83TC811: Fix SGMII enable/disable
authorDan Murphy <dmurphy@ti.com>
Fri, 29 Jun 2018 15:35:46 +0000 (10:35 -0500)
committerDavid S. Miller <davem@davemloft.net>
Tue, 3 Jul 2018 02:38:07 +0000 (11:38 +0900)
If SGMII was selected in the DT then the device should
write the SGMII enable bit.

If SGMII is not selected in the DT then the SGMII bit
should be disabled.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/dp83tc811.c

index f8653f5..78cad13 100644 (file)
@@ -284,21 +284,19 @@ static int dp83811_config_init(struct phy_device *phydev)
        if (err < 0)
                return err;
 
+       value = phy_read(phydev, MII_DP83811_SGMII_CTRL);
        if (phydev->interface == PHY_INTERFACE_MODE_SGMII) {
-               value = phy_read(phydev, MII_DP83811_SGMII_CTRL);
-               if (!(value & DP83811_SGMII_EN)) {
-                       err = phy_write(phydev, MII_DP83811_SGMII_CTRL,
+               err = phy_write(phydev, MII_DP83811_SGMII_CTRL,
                                        (DP83811_SGMII_EN | value));
-                       if (err < 0)
-                               return err;
-               } else {
-                       err = phy_write(phydev, MII_DP83811_SGMII_CTRL,
-                                       (~DP83811_SGMII_EN & value));
-                       if (err < 0)
-                               return err;
-               }
+       } else {
+               err = phy_write(phydev, MII_DP83811_SGMII_CTRL,
+                               (~DP83811_SGMII_EN & value));
        }
 
+       if (err < 0)
+
+               return err;
+
        value = DP83811_WOL_MAGIC_EN | DP83811_WOL_SECURE_ON | DP83811_WOL_EN;
 
        return phy_write_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG,