If a bus->reset() call for the mii_bus structure returns an error (e.g.:
-EPROE_DEFER) we should propagate it accordingly.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
                gpiod_set_value_cansleep(gpiod, 0);
        }
 
-       if (bus->reset)
-               bus->reset(bus);
+       if (bus->reset) {
+               err = bus->reset(bus);
+               if (err)
+                       goto error_reset_gpiod;
+       }
 
        for (i = 0; i < PHY_MAX_ADDR; i++) {
                if ((bus->phy_mask & (1 << i)) == 0) {
                mdiodev->device_remove(mdiodev);
                mdiodev->device_free(mdiodev);
        }
-
+error_reset_gpiod:
        /* Put PHYs in RESET to save power */
        if (bus->reset_gpiod)
                gpiod_set_value_cansleep(bus->reset_gpiod, 1);