Re: [PATCH RFC net-next 3/6] net: hibmcge: create a software node for phy_led

From: Jijie Shao

Date: Wed Jan 07 2026 - 05:09:33 EST



on 2025/12/16 15:17, Andrew Lunn wrote:
On Mon, Dec 15, 2025 at 08:57:02PM +0800, Jijie Shao wrote:

+int hbg_mdio_init(struct hbg_priv *priv)
+{
+ struct device *dev = &priv->pdev->dev;
+ struct hbg_mac *mac = &priv->mac;
struct mii_bus *mdio_bus;
int ret;
@@ -281,7 +389,7 @@ int hbg_mdio_init(struct hbg_priv *priv)
mdio_bus->parent = dev;
mdio_bus->priv = priv;
- mdio_bus->phy_mask = ~(1 << mac->phy_addr);
+ mdio_bus->phy_mask = 0xFFFFFFFF; /* not scan phy device */
mdio_bus->name = "hibmcge mii bus";
mac->mdio_bus = mdio_bus;
I think you are taking the wrong approach.

Please consider trying to use of_mdiobus_register(). Either load a DT
overlay, or see if you can construct a tree of properties as you have
been doing, and pass it to of_mdiobus_register(). You then don't need
to destroy and create PHY devices.

This is not easy.
`of_mdiobus_register()` requires a device_node, but I currently don't have one.
It is precisely because there is no DT or ACPI node that I am using a software node as a substitute.

In fact, this patch does not destroy and recreate the phydev.
It only delays the timing of phy registration:
first, register the MDIO (without scanning and registering the PHY devices),
then obtain the PHY device, register the software node, and finally register the PHY device.

Thanks,
Jijie Shao