Commit 3157183a authored by Ben Hutchings's avatar Ben Hutchings Committed by David S. Miller

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: default avatarBen Hutchings <bhutchings@solarflare.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent adc1d234
...@@ -41,6 +41,8 @@ ...@@ -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) ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment