On Thu, Jan 7, 2021 at 1:16 PM Fabio Estevam <festevam@xxxxxxxxx> wrote: > The driver drivers/net/phy/mdio_bus.c and the yaml description says > that it only supports one bus level PHY GPIO reset via reset-gpios > property. I suppose it's this binding: Documentation/devicetree/bindings/net/ethernet-phy.yaml > On the imx6ul-evk, there are two KSZ8081 PHYs in the same mdio bus, so > this is how I described it in dts: > > https://pastebin.com/raw/xLjYUHdN > > but the 'reset-gpios' properties are not found in this case. I think > we need to let drivers/net/phy/mdio_bus.c to search for 'reset-gpios' > also inside the mdio children. This driver gives me headache. The bindings say that it should populate devices from the compatible of the subnodes with names like "ethernet-phy-id0141.0e90" and stuff like that. Indeed, but I don't understand why the phy in this example does not have a compatible string? There is some hackery going on to probe the driver from the bus level since commit 46abc02175b3c246dd5141d878f565a8725060c9 "phylib: give mdio buses a device tree presence" But as far as I read the code this driver should be probing devices inidividually for ther reset-gpios, I think the problem is maybe that no proper devices (mdiodev) are added for these devices, does mdiobus_register_device() even get called for them? Does of_mdiobus_register_phy() get called? If this is the problem I think you need to add compatible for your phy devices and make sure there is some code to probe them as well? of_mdiobus_register() must be called by the MDIO bus master/host driver. This is what traverses the children with for_each_available_child_of_node(). Does your host driver properly call this function? Sorry if I sound a bit confused. Yours, Linus Walleij