Instead of just creating a simple PHY device for every child of MDIO bus node, add code to check if any of them have "compatible" property set as well as code to create a proper platform device for such cases. This change is useful for when MDIO bus and some of Ethernet ports are connected to a switch or some other MDIO device that doesn't behave like a generic PHY and can't be probed via its PHY ID. Signed-off-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx> --- drivers/net/phy/mdio_bus.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index d7d6d8940..589ed57d2 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c @@ -26,6 +26,7 @@ #include <errno.h> #include <linux/phy.h> #include <linux/err.h> +#include <of_device.h> #define DEFAULT_GPIO_RESET_ASSERT 1000 /* us */ #define DEFAULT_GPIO_RESET_DEASSERT 1000 /* us */ @@ -179,6 +180,16 @@ static int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) /* Loop over the child nodes and register a phy_device for each one */ for_each_available_child_of_node(np, child) { + if (of_get_property(child, "compatible", NULL)) { + if (!of_platform_device_create(child, &mdio->dev)) { + dev_err(&mdio->dev, + "Failed to create device for %s\n", + child->full_name); + } + + continue; + } + if (!of_mdiobus_child_is_phy(child)) continue; -- 2.17.1 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox