2020-11-09 12:44:54

by Wong, Vee Khee

[permalink] [raw]
Subject: [PATCH net-next 1/1] net: phy: Allow mdio buses to probe C45 before falling back to C22

This patch makes mdiobus_scan() to try on C45 first as C45 can access
all devices. This allows the function available for the PHY that
supports for both C45 and C22.

Reviewed-by: Voon Weifeng <[email protected]>
Reviewed-by: Ong Boon Leong <[email protected]>
Signed-off-by: Wong Vee Khee <[email protected]>
---
drivers/net/phy/mdio_bus.c | 5 +++++
include/linux/phy.h | 1 +
2 files changed, 6 insertions(+)

diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c
index 56094dd6bf26..372d0d088f7e 100644
--- a/drivers/net/phy/mdio_bus.c
+++ b/drivers/net/phy/mdio_bus.c
@@ -691,6 +691,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))
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 189bc9881ea6..73d9be2c00f4 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -360,6 +360,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.17.0


2020-11-09 13:36:36

by Andrew Lunn

[permalink] [raw]
Subject: Re: [PATCH net-next 1/1] net: phy: Allow mdio buses to probe C45 before falling back to C22

On Mon, Nov 09, 2020 at 08:43:47PM +0800, Wong Vee Khee wrote:
> This patch makes mdiobus_scan() to try on C45 first as C45 can access
> all devices. This allows the function available for the PHY that
> supports for both C45 and C22.
>
> Reviewed-by: Voon Weifeng <[email protected]>
> Reviewed-by: Ong Boon Leong <[email protected]>
> Signed-off-by: Wong Vee Khee <[email protected]>

Hi

You need to add a user of this.

And i would like to see a more detailed explanation of why it is
needed. The PHY driver is free to do either C45 or C22 transfers.
Why does it care how the device was found?
Plus you can generally access C45 registers via the C45 over C22. If
the PHY does not allow C45 over C22, then i expect the driver needs to
be aware of if the PHY can be access either way, and it needs to do
different things. And there is no PHY driver that i know of which does
this.

So before this goes any further, we need to see the bigger picture.

Andrew