public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH net] net: phy: micrel: Fix the KSZ9131 MDI-X status issue
@ 2024-07-12 11:16 Raju Lakkaraju
  2024-07-18  8:51 ` Paolo Abeni
  2024-07-18 15:04 ` Andrew Lunn
  0 siblings, 2 replies; 4+ messages in thread
From: Raju Lakkaraju @ 2024-07-12 11:16 UTC (permalink / raw)
  To: netdev
  Cc: davem, kuba, andrew, hkallweit1, linux, edumazet, pabeni,
	horatiu.vultur, linux-kernel, UNGLinuxDriver

Access information about Auto mdix completion and pair selection from the
KSZ9131's Auto/MDI/MDI-X status register

Fixes: b64e6a8794d9 ("net: phy: micrel: Add PHY Auto/MDI/MDI-X set driver for KSZ9131")
Signed-off-by: Raju Lakkaraju <Raju.Lakkaraju@microchip.com>
---
 drivers/net/phy/micrel.c | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
index ebafedde0ab7..fddc1b91ba7f 100644
--- a/drivers/net/phy/micrel.c
+++ b/drivers/net/phy/micrel.c
@@ -1438,6 +1438,9 @@ static int ksz9131_config_init(struct phy_device *phydev)
 #define MII_KSZ9131_AUTO_MDIX		0x1C
 #define MII_KSZ9131_AUTO_MDI_SET	BIT(7)
 #define MII_KSZ9131_AUTO_MDIX_SWAP_OFF	BIT(6)
+#define MII_KSZ9131_DIG_AXAN_STS	0x14
+#define MII_KSZ9131_DIG_AXAN_STS_LINK_DET	BIT(14)
+#define MII_KSZ9131_DIG_AXAN_STS_A_SELECT	BIT(12)
 
 static int ksz9131_mdix_update(struct phy_device *phydev)
 {
@@ -1452,14 +1455,24 @@ static int ksz9131_mdix_update(struct phy_device *phydev)
 			phydev->mdix_ctrl = ETH_TP_MDI;
 		else
 			phydev->mdix_ctrl = ETH_TP_MDI_X;
+
+		phydev->mdix = phydev->mdix_ctrl;
 	} else {
+		ret = phy_read(phydev, MII_KSZ9131_DIG_AXAN_STS);
+		if (ret < 0)
+			return ret;
+
 		phydev->mdix_ctrl = ETH_TP_MDI_AUTO;
-	}
 
-	if (ret & MII_KSZ9131_AUTO_MDI_SET)
-		phydev->mdix = ETH_TP_MDI;
-	else
-		phydev->mdix = ETH_TP_MDI_X;
+		if (ret & MII_KSZ9131_DIG_AXAN_STS_LINK_DET) {
+			if (ret & MII_KSZ9131_DIG_AXAN_STS_A_SELECT)
+				phydev->mdix = ETH_TP_MDI;
+			else
+				phydev->mdix = ETH_TP_MDI_X;
+		} else {
+			phydev->mdix = ETH_TP_MDI_INVALID;
+		}
+	}
 
 	return 0;
 }
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-07-25  7:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-12 11:16 [PATCH net] net: phy: micrel: Fix the KSZ9131 MDI-X status issue Raju Lakkaraju
2024-07-18  8:51 ` Paolo Abeni
2024-07-18 15:04 ` Andrew Lunn
2024-07-25  6:59   ` Raju Lakkaraju

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox