summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Murphy2018-06-29 17:35:46 +0200
committerDavid S. Miller2018-07-03 04:38:07 +0200
commit00f553660a7f524a3b913cb5cf6c5f33f9638f09 (patch)
treeefe9c985464a996e4316078d70bb2f2c68a1208a
parentnet: phy: DP83TC811: Add INT_STAT3 (diff)
downloadkernel-qcow2-linux-00f553660a7f524a3b913cb5cf6c5f33f9638f09.tar.gz
kernel-qcow2-linux-00f553660a7f524a3b913cb5cf6c5f33f9638f09.tar.xz
kernel-qcow2-linux-00f553660a7f524a3b913cb5cf6c5f33f9638f09.zip
net: phy: DP83TC811: Fix SGMII enable/disable
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>
-rw-r--r--drivers/net/phy/dp83tc811.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/drivers/net/phy/dp83tc811.c b/drivers/net/phy/dp83tc811.c
index f8653f5d8789..78cad134a79e 100644
--- a/drivers/net/phy/dp83tc811.c
+++ b/drivers/net/phy/dp83tc811.c
@@ -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,