]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - drivers/net/phy/at803x.c
phylib: Add device reset GPIO support
[mirror_ubuntu-jammy-kernel.git] / drivers / net / phy / at803x.c
index de7dd6566df7a36486ffbeaa61c67405d6de61fb..29da7a3c7a3761c0a6585576ccc78cbd6a506277 100644 (file)
@@ -71,7 +71,6 @@ MODULE_LICENSE("GPL");
 
 struct at803x_priv {
        bool phy_reset:1;
-       struct gpio_desc *gpiod_reset;
 };
 
 struct at803x_context {
@@ -254,22 +253,11 @@ static int at803x_probe(struct phy_device *phydev)
 {
        struct device *dev = &phydev->mdio.dev;
        struct at803x_priv *priv;
-       struct gpio_desc *gpiod_reset;
 
        priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
        if (!priv)
                return -ENOMEM;
 
-       if (phydev->drv->phy_id != ATH8030_PHY_ID)
-               goto does_not_require_reset_workaround;
-
-       gpiod_reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
-       if (IS_ERR(gpiod_reset))
-               return PTR_ERR(gpiod_reset);
-
-       priv->gpiod_reset = gpiod_reset;
-
-does_not_require_reset_workaround:
        phydev->priv = priv;
 
        return 0;
@@ -343,14 +331,14 @@ static void at803x_link_change_notify(struct phy_device *phydev)
         * cannot recover from by software.
         */
        if (phydev->state == PHY_NOLINK) {
-               if (priv->gpiod_reset && !priv->phy_reset) {
+               if (phydev->mdio.reset && !priv->phy_reset) {
                        struct at803x_context context;
 
                        at803x_context_save(phydev, &context);
 
-                       gpiod_set_value(priv->gpiod_reset, 1);
+                       phy_device_reset(phydev, 1);
                        msleep(1);
-                       gpiod_set_value(priv->gpiod_reset, 0);
+                       phy_device_reset(phydev, 0);
                        msleep(1);
 
                        at803x_context_restore(phydev, &context);