sfc: QT2025C: Use hard reset only
At probe time, falcon_reset_hw() performs a hard reset of the PHY along with Falcon. There is no need to perform a soft reset later, and any access to standard MDIO registers before the PHY firmware has booted can interrupt the boot process, making the port unusable. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
771046d7b1
commit
5afaa753d6
1 changed files with 10 additions and 9 deletions
|
@ -97,23 +97,24 @@ static int qt2025c_wait_reset(struct efx_nic *efx)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reset the PHYXS MMD. This is documented (for the Quake PHYs) as doing
|
|
||||||
* a complete soft reset.
|
|
||||||
*/
|
|
||||||
static int xfp_reset_phy(struct efx_nic *efx)
|
static int xfp_reset_phy(struct efx_nic *efx)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
rc = efx_mdio_reset_mmd(efx, MDIO_MMD_PHYXS,
|
|
||||||
XFP_MAX_RESET_TIME / XFP_RESET_WAIT,
|
|
||||||
XFP_RESET_WAIT);
|
|
||||||
if (rc < 0)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
if (efx->phy_type == PHY_TYPE_QT2025C) {
|
if (efx->phy_type == PHY_TYPE_QT2025C) {
|
||||||
|
/* Wait for the reset triggered by falcon_reset_hw()
|
||||||
|
* to complete */
|
||||||
rc = qt2025c_wait_reset(efx);
|
rc = qt2025c_wait_reset(efx);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
} else {
|
||||||
|
/* Reset the PHYXS MMD. This is documented as doing
|
||||||
|
* a complete soft reset. */
|
||||||
|
rc = efx_mdio_reset_mmd(efx, MDIO_MMD_PHYXS,
|
||||||
|
XFP_MAX_RESET_TIME / XFP_RESET_WAIT,
|
||||||
|
XFP_RESET_WAIT);
|
||||||
|
if (rc < 0)
|
||||||
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Wait 250ms for the PHY to complete bootup */
|
/* Wait 250ms for the PHY to complete bootup */
|
||||||
|
|
Reference in a new issue