[PATCH 1/5] net: mdio: Mask PHY only when its ACPI node is present
From: Kai-Heng Feng
Date: Wed Apr 20 2022 - 09:00:14 EST
Not all PHY has an ACPI node, for those nodes auto probing is still
needed.
So only mask those PHYs with ACPI nodes.
Signed-off-by: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx>
---
drivers/net/mdio/acpi_mdio.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/net/mdio/acpi_mdio.c b/drivers/net/mdio/acpi_mdio.c
index d77c987fda9cd..f9369319ada19 100644
--- a/drivers/net/mdio/acpi_mdio.c
+++ b/drivers/net/mdio/acpi_mdio.c
@@ -33,8 +33,15 @@ int acpi_mdiobus_register(struct mii_bus *mdio, struct fwnode_handle *fwnode)
u32 addr;
int ret;
- /* Mask out all PHYs from auto probing. */
- mdio->phy_mask = GENMASK(31, 0);
+ /* Loop over the child nodes and mask out PHY from auto probing */
+ fwnode_for_each_child_node(fwnode, child) {
+ ret = acpi_get_local_address(ACPI_HANDLE_FWNODE(child), &addr);
+ if (ret || addr >= PHY_MAX_ADDR)
+ continue;
+
+ mdio->phy_mask |= BIT(addr);
+ }
+
ret = mdiobus_register(mdio);
if (ret)
return ret;
--
2.34.1