diff options
-rw-r--r-- | drivers/net/sfc/xfp_phy.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/net/sfc/xfp_phy.c b/drivers/net/sfc/xfp_phy.c index bb2e6afd0829..e6b3d5eaddba 100644 --- a/drivers/net/sfc/xfp_phy.c +++ b/drivers/net/sfc/xfp_phy.c | |||
@@ -97,23 +97,24 @@ static int qt2025c_wait_reset(struct efx_nic *efx) | |||
97 | return 0; | 97 | return 0; |
98 | } | 98 | } |
99 | 99 | ||
100 | /* Reset the PHYXS MMD. This is documented (for the Quake PHYs) as doing | ||
101 | * a complete soft reset. | ||
102 | */ | ||
103 | static int xfp_reset_phy(struct efx_nic *efx) | 100 | static int xfp_reset_phy(struct efx_nic *efx) |
104 | { | 101 | { |
105 | int rc; | 102 | int rc; |
106 | 103 | ||
107 | rc = efx_mdio_reset_mmd(efx, MDIO_MMD_PHYXS, | ||
108 | XFP_MAX_RESET_TIME / XFP_RESET_WAIT, | ||
109 | XFP_RESET_WAIT); | ||
110 | if (rc < 0) | ||
111 | goto fail; | ||
112 | |||
113 | if (efx->phy_type == PHY_TYPE_QT2025C) { | 104 | if (efx->phy_type == PHY_TYPE_QT2025C) { |
105 | /* Wait for the reset triggered by falcon_reset_hw() | ||
106 | * to complete */ | ||
114 | rc = qt2025c_wait_reset(efx); | 107 | rc = qt2025c_wait_reset(efx); |
115 | if (rc < 0) | 108 | if (rc < 0) |
116 | goto fail; | 109 | goto fail; |
110 | } else { | ||
111 | /* Reset the PHYXS MMD. This is documented as doing | ||
112 | * a complete soft reset. */ | ||
113 | rc = efx_mdio_reset_mmd(efx, MDIO_MMD_PHYXS, | ||
114 | XFP_MAX_RESET_TIME / XFP_RESET_WAIT, | ||
115 | XFP_RESET_WAIT); | ||
116 | if (rc < 0) | ||
117 | goto fail; | ||
117 | } | 118 | } |
118 | 119 | ||
119 | /* Wait 250ms for the PHY to complete bootup */ | 120 | /* Wait 250ms for the PHY to complete bootup */ |