OSDN Git Service

net: phy: mdio: reset MDIO devices even if probe() is not implemented
authorBartosz Golaszewski <bgolaszewski@baylibre.com>
Fri, 26 Jun 2020 15:53:25 +0000 (17:53 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 26 Jun 2020 20:40:09 +0000 (13:40 -0700)
Similarily to PHY drivers - there's no reason to require probe() to be
implemented in order to call mdio_device_reset(). MDIO devices can have
resets defined without needing to do anything in probe().

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/mdio_device.c

index f60443e..be61550 100644 (file)
@@ -150,10 +150,10 @@ static int mdio_probe(struct device *dev)
        struct mdio_driver *mdiodrv = to_mdio_driver(drv);
        int err = 0;
 
-       if (mdiodrv->probe) {
-               /* Deassert the reset signal */
-               mdio_device_reset(mdiodev, 0);
+       /* Deassert the reset signal */
+       mdio_device_reset(mdiodev, 0);
 
+       if (mdiodrv->probe) {
                err = mdiodrv->probe(mdiodev);
                if (err) {
                        /* Assert the reset signal */
@@ -170,12 +170,11 @@ static int mdio_remove(struct device *dev)
        struct device_driver *drv = mdiodev->dev.driver;
        struct mdio_driver *mdiodrv = to_mdio_driver(drv);
 
-       if (mdiodrv->remove) {
+       if (mdiodrv->remove)
                mdiodrv->remove(mdiodev);
 
-               /* Assert the reset signal */
-               mdio_device_reset(mdiodev, 1);
-       }
+       /* Assert the reset signal */
+       mdio_device_reset(mdiodev, 1);
 
        return 0;
 }