[RFC net-next 1/2] net: phy: allow mdio bus to probe for c45 devices before c22

Subsystems: ethernet phy library, the rest

3 messages, 2 authors, 2021-06-01 · open the first message on its own page

[RFC net-next 1/2] net: phy: allow mdio bus to probe for c45 devices before c22

From: Wong Vee Khee <hidden>
Date: 2021-05-25 05:53:39

Some MAC controllers that is able to pair with  external PHY devices
such as the Synopsys MAC Controller (STMMAC) support both Clause-22 and
Clause-45 access.

When paired with PHY devices that only accessible via Clause-45, such as
the Marvell 88E2110, any attempts to access the PHY devices via
Clause-22 will get a PHY ID of all zeroes.

To fix this, we introduce MDIOBUS_C45_C22 which the MAC controller will
try with Clause-45 access before going to Clause-22.

Signed-off-by: Wong Vee Khee <redacted>
---
 include/linux/phy.h | 1 +
 1 file changed, 1 insertion(+)
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 60d2b26026a2..9b0e2c76e19b 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -368,6 +368,7 @@ struct mii_bus {
 		MDIOBUS_C22,
 		MDIOBUS_C45,
 		MDIOBUS_C22_C45,
+		MDIOBUS_C45_C22,
 	} probe_capabilities;
 
 	/** @shared_lock: protect access to the shared element */
-- 
2.25.1

Re: [RFC net-next 1/2] net: phy: allow mdio bus to probe for c45 devices before c22

From: "Russell King (Oracle)" <linux@armlinux.org.uk>
Date: 2021-05-25 08:31:43

On Tue, May 25, 2021 at 01:58:39PM +0800, Wong Vee Khee wrote:
quoted hunk
Some MAC controllers that is able to pair with  external PHY devices
such as the Synopsys MAC Controller (STMMAC) support both Clause-22 and
Clause-45 access.

When paired with PHY devices that only accessible via Clause-45, such as
the Marvell 88E2110, any attempts to access the PHY devices via
Clause-22 will get a PHY ID of all zeroes.

To fix this, we introduce MDIOBUS_C45_C22 which the MAC controller will
try with Clause-45 access before going to Clause-22.

Signed-off-by: Wong Vee Khee <redacted>
---
 include/linux/phy.h | 1 +
 1 file changed, 1 insertion(+)
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 60d2b26026a2..9b0e2c76e19b 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -368,6 +368,7 @@ struct mii_bus {
 		MDIOBUS_C22,
 		MDIOBUS_C45,
 		MDIOBUS_C22_C45,
+		MDIOBUS_C45_C22,
 	} probe_capabilities;
 
 	/** @shared_lock: protect access to the shared element */
The new definition doesn't seem to be used anywhere, so this patch
merely adds the definition. It doesn't do what it says in the subject
line. Any driver that sets the capabilities to MDIOBUS_C45_C22 will
end up not doing any probing of the PHY.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

Re: [RFC net-next 1/2] net: phy: allow mdio bus to probe for c45 devices before c22

From: Wong Vee Khee <hidden>
Date: 2021-06-01 10:52:39

On Tue, May 25, 2021 at 09:31:17AM +0100, Russell King (Oracle) wrote:
On Tue, May 25, 2021 at 01:58:39PM +0800, Wong Vee Khee wrote:
quoted
Some MAC controllers that is able to pair with  external PHY devices
such as the Synopsys MAC Controller (STMMAC) support both Clause-22 and
Clause-45 access.

When paired with PHY devices that only accessible via Clause-45, such as
the Marvell 88E2110, any attempts to access the PHY devices via
Clause-22 will get a PHY ID of all zeroes.

To fix this, we introduce MDIOBUS_C45_C22 which the MAC controller will
try with Clause-45 access before going to Clause-22.

Signed-off-by: Wong Vee Khee <redacted>
---
 include/linux/phy.h | 1 +
 1 file changed, 1 insertion(+)
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 60d2b26026a2..9b0e2c76e19b 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -368,6 +368,7 @@ struct mii_bus {
 		MDIOBUS_C22,
 		MDIOBUS_C45,
 		MDIOBUS_C22_C45,
+		MDIOBUS_C45_C22,
 	} probe_capabilities;
 
 	/** @shared_lock: protect access to the shared element */
The new definition doesn't seem to be used anywhere, so this patch
merely adds the definition. It doesn't do what it says in the subject
line. Any driver that sets the capabilities to MDIOBUS_C45_C22 will
end up not doing any probing of the PHY.
You are right. I left out the required changes in drivers/net/mdio_bus.c:-
diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c
index 6045ad3def12..fbf9b8f1f47c 100644
--- a/drivers/net/phy/mdio_bus.c
+++ b/drivers/net/phy/mdio_bus.c
@@ -684,6 +684,11 @@ struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr)
                if (IS_ERR(phydev))
                        phydev = get_phy_device(bus, addr, true);
                break;
+       case MDIOBUS_C45_C22:
+               phydev = get_phy_device(bus, addr, true);
+               if (IS_ERR(phydev))
+                       phydev = get_phy_device(bus, addr, false);
+               break;
        }

        if (IS_ERR(phydev))

VK 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help