diff options
author | Oleksij Rempel <o.rempel@pengutronix.de> | 2022-03-11 09:50:11 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2022-03-12 12:50:56 +0100 |
commit | d57da85dc4e3b7ad6e627c90f73aca51a45826d2 (patch) | |
tree | 47512fe3643e8d7063c5f82a774ec228611dba14 | |
parent | net: add per-cpu storage and net->core_stats (diff) | |
download | linux-d57da85dc4e3b7ad6e627c90f73aca51a45826d2.tar.xz linux-d57da85dc4e3b7ad6e627c90f73aca51a45826d2.zip |
net: usb: asix: unify ax88772_resume code
The only difference is the reset code, so remove not needed duplicates.
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/usb/asix.h | 1 | ||||
-rw-r--r-- | drivers/net/usb/asix_devices.c | 32 |
2 files changed, 9 insertions, 24 deletions
diff --git a/drivers/net/usb/asix.h b/drivers/net/usb/asix.h index 4334aafab59a..b5ac693cebf2 100644 --- a/drivers/net/usb/asix.h +++ b/drivers/net/usb/asix.h @@ -177,6 +177,7 @@ struct asix_rx_fixup_info { struct asix_common_private { void (*resume)(struct usbnet *dev); void (*suspend)(struct usbnet *dev); + int (*reset)(struct usbnet *dev, int in_pm); u16 presvd_phy_advertise; u16 presvd_phy_bmcr; struct asix_rx_fixup_info rx_fixup_info; diff --git a/drivers/net/usb/asix_devices.c b/drivers/net/usb/asix_devices.c index 6ea44e53713a..bb09181596c5 100644 --- a/drivers/net/usb/asix_devices.c +++ b/drivers/net/usb/asix_devices.c @@ -625,27 +625,13 @@ static void ax88772_resume(struct usbnet *dev) int i; for (i = 0; i < 3; i++) - if (!ax88772_hw_reset(dev, 1)) + if (!priv->reset(dev, 1)) break; if (netif_running(dev->net)) phy_start(priv->phydev); } -static void ax88772a_resume(struct usbnet *dev) -{ - struct asix_common_private *priv = dev->driver_priv; - int i; - - for (i = 0; i < 3; i++) { - if (!ax88772a_hw_reset(dev, 1)) - break; - } - - if (netif_running(dev->net)) - phy_start(priv->phydev); -} - static int asix_resume(struct usb_interface *intf) { struct usbnet *dev = usb_get_intfdata(intf); @@ -763,9 +749,14 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf) chipcode &= AX_CHIPCODE_MASK; - ret = (chipcode == AX_AX88772_CHIPCODE) ? ax88772_hw_reset(dev, 0) : - ax88772a_hw_reset(dev, 0); + priv->resume = ax88772_resume; + priv->suspend = ax88772_suspend; + if (chipcode == AX_AX88772_CHIPCODE) + priv->reset = ax88772_hw_reset; + else + priv->reset = ax88772a_hw_reset; + ret = priv->reset(dev, 0); if (ret < 0) { netdev_dbg(dev->net, "Failed to reset AX88772: %d\n", ret); return ret; @@ -780,13 +771,6 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf) priv->presvd_phy_bmcr = 0; priv->presvd_phy_advertise = 0; - if (chipcode == AX_AX88772_CHIPCODE) { - priv->resume = ax88772_resume; - priv->suspend = ax88772_suspend; - } else { - priv->resume = ax88772a_resume; - priv->suspend = ax88772_suspend; - } ret = ax88772_init_mdio(dev); if (ret) |