Hi Bruno, On Tue, Jul 28, 2020 at 6:02 AM Bruno Thomsen <bruno.thom...@gmail.com> wrote: > > The current reset logic only has a delay during assert. > This reuses the delay value as deassert delay to ensure > PHYs are ready for commands. Delays are typically needed > when external hardware slows down reset release with a > RC network. This solution does not need any new device > tree bindings. > It also improves handling of long delays (>20ms) by using > the generic fsleep() for selecting appropriate delay > function.
It seems that this patch should be split in two: One that changes from udelay() to sleep() and another one that adds the delay after the reset line is de-asserted. > > Signed-off-by: Bruno Thomsen <bruno.thom...@gmail.com> > --- > drivers/net/phy/mdio_bus.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c > index 6ceee82b2839..84d5ab07fe16 100644 > --- a/drivers/net/phy/mdio_bus.c > +++ b/drivers/net/phy/mdio_bus.c > @@ -627,8 +627,9 @@ int __mdiobus_register(struct mii_bus *bus, struct module > *owner) > bus->reset_gpiod = gpiod; > > gpiod_set_value_cansleep(gpiod, 1); > - udelay(bus->reset_delay_us); > + fsleep(bus->reset_delay_us); > gpiod_set_value_cansleep(gpiod, 0); > + fsleep(bus->reset_delay_us); Shouldn't it use the value passed in the reset-deassert-us property instead?