Re: [PATCH] [v8] net: emac: emac gigabit ethernet controller driver
From: Andrew Lunn <hidden>
Date: 2016-08-17 20:05:51
Also in:
linux-arm-msm, netdev
Something is odd about of_mdiobus_register().
This function scans child nodes to look for PHYs:
/* Loop over the child nodes and register a phy_device for each phy */
for_each_available_child_of_node(np, child) {
addr = of_mdio_parse_addr(&mdio->dev, child);
And in my driver, this works. However, later when I try to call
of_phy_find_device(), it fails. That's because of_phy_find_device()
wants the np of the child node. But the only way to get that is
with a phy-phandle property which I need to manually parse.You do need the phy-handle, because you can have multiple PHYs, and ethernet switches on the MDIO bus. You need to indicate which of those PHYs is connected to this MAC.
So what's the point of having of_mdiobus_register() parse child nodes, if you need a phy-phandle pointer anyway?
So we know about the other phys and switches on the MDIO bus, can load
the driver for them, etc. This is standard policy for a bus
driver. When you instantiate the bus, you enumerate it to see what is
connected to it. You do that either with of_mdiobus_register() or
mdiobus_register().
However, i do agree about having a helper do the phy-handle parsing
would be nice, and it should also handle fixed phys as well.
Andrew
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html