[2/2] net: phy: DP83TC811: Fix SGMII enable/disable

Message ID 20180627181618.23463-2-dmurphy@ti.com
State New
Headers show
Series
  • [1/2] net: phy: DP83TC811: Add INT_STAT3
Related show

Commit Message

Dan Murphy June 27, 2018, 6:16 p.m.
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>

---
 arch/arm/configs/omap2plus_defconfig |  1 +
 drivers/net/phy/dp83tc811.c          | 20 +++++++++-----------
 2 files changed, 10 insertions(+), 11 deletions(-)

-- 
2.17.0.582.gccdcbd54c

Comments

Andrew Lunn June 28, 2018, 8:20 a.m. | #1
On Wed, Jun 27, 2018 at 01:16:18PM -0500, Dan Murphy wrote:
> 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>

> ---

>  arch/arm/configs/omap2plus_defconfig |  1 +

>  drivers/net/phy/dp83tc811.c          | 20 +++++++++-----------

>  2 files changed, 10 insertions(+), 11 deletions(-)

> 

> diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig

> index 06fb948ecfb3..30857d5b7a6c 100644

> --- a/arch/arm/configs/omap2plus_defconfig

> +++ b/arch/arm/configs/omap2plus_defconfig

> @@ -182,6 +182,7 @@ CONFIG_TI_CPTS=y

>  CONFIG_AT803X_PHY=y

>  CONFIG_DP83848_PHY=y

>  CONFIG_DP83867_PHY=y

> +CONFIG_DP83TC811_PHY=y

>  CONFIG_MICREL_PHY=y

>  CONFIG_SMSC_PHY=y

>  CONFIG_PPP=m


Hi Dan

This change does not belong here.

     Andrew
Dan Murphy June 28, 2018, 11:53 a.m. | #2
Andrew

On 06/28/2018 03:20 AM, Andrew Lunn wrote:
> On Wed, Jun 27, 2018 at 01:16:18PM -0500, Dan Murphy wrote:

>> 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>

>> ---

>>  arch/arm/configs/omap2plus_defconfig |  1 +

>>  drivers/net/phy/dp83tc811.c          | 20 +++++++++-----------

>>  2 files changed, 10 insertions(+), 11 deletions(-)

>>

>> diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig

>> index 06fb948ecfb3..30857d5b7a6c 100644

>> --- a/arch/arm/configs/omap2plus_defconfig

>> +++ b/arch/arm/configs/omap2plus_defconfig

>> @@ -182,6 +182,7 @@ CONFIG_TI_CPTS=y

>>  CONFIG_AT803X_PHY=y

>>  CONFIG_DP83848_PHY=y

>>  CONFIG_DP83867_PHY=y

>> +CONFIG_DP83TC811_PHY=y

>>  CONFIG_MICREL_PHY=y

>>  CONFIG_SMSC_PHY=y

>>  CONFIG_PPP=m

> 

> Hi Dan

> 

> This change does not belong here.

> 


Correct I will remove it.

>      Andrew

> 



-- 
------------------
Dan Murphy

Patch

diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig
index 06fb948ecfb3..30857d5b7a6c 100644
--- a/arch/arm/configs/omap2plus_defconfig
+++ b/arch/arm/configs/omap2plus_defconfig
@@ -182,6 +182,7 @@  CONFIG_TI_CPTS=y
 CONFIG_AT803X_PHY=y
 CONFIG_DP83848_PHY=y
 CONFIG_DP83867_PHY=y
+CONFIG_DP83TC811_PHY=y
 CONFIG_MICREL_PHY=y
 CONFIG_SMSC_PHY=y
 CONFIG_PPP=m
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,