sfc: Clear RXIN_SEL when soft-resetting QT2025C
When we enable PMA/PMD loopback this automatically sets RXIN_SEL (inverse polarity for RXIN). We need to clear that bit during the soft-reset sequence, as it is not done automatically. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
adc1d23411
commit
3157183a90
1 changed files with 6 additions and 0 deletions
|
@ -41,6 +41,8 @@
|
||||||
#define PCS_UC_STATUS_LBN 0
|
#define PCS_UC_STATUS_LBN 0
|
||||||
#define PCS_UC_STATUS_WIDTH 8
|
#define PCS_UC_STATUS_WIDTH 8
|
||||||
#define PCS_UC_STATUS_FW_SAVE 0x20
|
#define PCS_UC_STATUS_FW_SAVE 0x20
|
||||||
|
#define PMA_PMD_MODE_REG 0xc301
|
||||||
|
#define PMA_PMD_RXIN_SEL_LBN 6
|
||||||
#define PMA_PMD_FTX_CTRL2_REG 0xc309
|
#define PMA_PMD_FTX_CTRL2_REG 0xc309
|
||||||
#define PMA_PMD_FTX_STATIC_LBN 13
|
#define PMA_PMD_FTX_STATIC_LBN 13
|
||||||
#define PMA_PMD_VEND1_REG 0xc001
|
#define PMA_PMD_VEND1_REG 0xc001
|
||||||
|
@ -282,6 +284,10 @@ static int qt2025c_select_phy_mode(struct efx_nic *efx)
|
||||||
* slow) reload of the firmware image (the microcontroller's code
|
* slow) reload of the firmware image (the microcontroller's code
|
||||||
* memory is not affected by the microcontroller reset). */
|
* memory is not affected by the microcontroller reset). */
|
||||||
efx_mdio_write(efx, 1, 0xc317, 0x00ff);
|
efx_mdio_write(efx, 1, 0xc317, 0x00ff);
|
||||||
|
/* PMA/PMD loopback sets RXIN to inverse polarity and the firmware
|
||||||
|
* restart doesn't reset it. We need to do that ourselves. */
|
||||||
|
efx_mdio_set_flag(efx, 1, PMA_PMD_MODE_REG,
|
||||||
|
1 << PMA_PMD_RXIN_SEL_LBN, false);
|
||||||
efx_mdio_write(efx, 1, 0xc300, 0x0002);
|
efx_mdio_write(efx, 1, 0xc300, 0x0002);
|
||||||
msleep(20);
|
msleep(20);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue