net: phy: marvell: Use the set_polarity helper
authorAndrew Lunn <andrew@lunn.ch>
Sun, 30 Jul 2017 20:41:49 +0000 (22:41 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 1 Aug 2017 01:00:23 +0000 (18:00 -0700)
Some of the init functions unilaterally enable set auto cross over
without using the helper. Make use of the helper, and respect the
phydev MDI configuration.

Clean up the #define used while setting polarity, and the other
functions of the bits in the register.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/marvell.c

index 408442bdef0a768148c3fc0c4b4428552747949d..34fd15b904e7065a2c0f97fcf3ec38c71793936d 100644 (file)
 #define MII_M1011_IMASK_INIT           0x6400
 #define MII_M1011_IMASK_CLEAR          0x0000
 
-#define MII_M1011_PHY_SCR              0x10
-#define MII_M1011_PHY_SCR_MDI          0x0000
-#define MII_M1011_PHY_SCR_MDI_X                0x0020
-#define MII_M1011_PHY_SCR_AUTO_CROSS   0x0060
+#define MII_M1011_PHY_SCR                      0x10
+#define MII_M1011_PHY_SCR_DOWNSHIFT_EN         BIT(11)
+#define MII_M1011_PHY_SCR_DOWNSHIFT_SHIFT      12
+#define MII_M1011_PHY_SCR_MDI                  (0x0 << 5)
+#define MII_M1011_PHY_SCR_MDI_X                        (0x1 << 5)
+#define MII_M1011_PHY_SCR_AUTO_CROSS           (0x3 << 5)
 
 #define MII_M1111_PHY_LED_CONTROL      0x18
 #define MII_M1111_PHY_LED_DIRECT       0x4100
@@ -486,8 +488,7 @@ static int m88e1121_config_aneg(struct phy_device *phydev)
        if (err < 0)
                return err;
 
-       err = phy_write(phydev, MII_M1011_PHY_SCR,
-                       MII_M1011_PHY_SCR_AUTO_CROSS);
+       err = marvell_set_polarity(phydev, phydev->mdix_ctrl);
        if (err < 0)
                return err;
 
@@ -655,10 +656,13 @@ static int m88e1116r_config_init(struct phy_device *phydev)
        if (err < 0)
                return err;
 
+       err = marvell_set_polarity(phydev, phydev->mdix_ctrl);
+       if (err < 0)
+               return err;
+
        temp = phy_read(phydev, MII_M1011_PHY_SCR);
-       temp |= (7 << 12);      /* max number of gigabit attempts */
-       temp |= (1 << 11);      /* enable downshift */
-       temp |= MII_M1011_PHY_SCR_AUTO_CROSS;
+       temp |= (7 << MII_M1011_PHY_SCR_DOWNSHIFT_SHIFT);
+       temp |= MII_M1011_PHY_SCR_DOWNSHIFT_EN;
        err = phy_write(phydev, MII_M1011_PHY_SCR, temp);
        if (err < 0)
                return err;
@@ -891,8 +895,7 @@ static int m88e1118_config_aneg(struct phy_device *phydev)
        if (err < 0)
                return err;
 
-       err = phy_write(phydev, MII_M1011_PHY_SCR,
-                       MII_M1011_PHY_SCR_AUTO_CROSS);
+       err = marvell_set_polarity(phydev, phydev->mdix_ctrl);
        if (err < 0)
                return err;