aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-dev.c2
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-drv.c4
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c24
3 files changed, 27 insertions, 3 deletions
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
index a7d16db5c4b2..937f37a5dcb2 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
@@ -1323,7 +1323,7 @@ static int xgbe_read_ext_mii_regs(struct xgbe_prv_data *pdata, int addr,
1323static int xgbe_set_ext_mii_mode(struct xgbe_prv_data *pdata, unsigned int port, 1323static int xgbe_set_ext_mii_mode(struct xgbe_prv_data *pdata, unsigned int port,
1324 enum xgbe_mdio_mode mode) 1324 enum xgbe_mdio_mode mode)
1325{ 1325{
1326 unsigned int reg_val = 0; 1326 unsigned int reg_val = XGMAC_IOREAD(pdata, MAC_MDIOCL22R);
1327 1327
1328 switch (mode) { 1328 switch (mode) {
1329 case XGBE_MDIO_MODE_CL22: 1329 case XGBE_MDIO_MODE_CL22:
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
index 3aa457c8ca21..248f60d171a5 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
@@ -1131,12 +1131,12 @@ static void xgbe_stop(struct xgbe_prv_data *pdata)
1131 hw_if->disable_tx(pdata); 1131 hw_if->disable_tx(pdata);
1132 hw_if->disable_rx(pdata); 1132 hw_if->disable_rx(pdata);
1133 1133
1134 phy_if->phy_stop(pdata);
1135
1134 xgbe_free_irqs(pdata); 1136 xgbe_free_irqs(pdata);
1135 1137
1136 xgbe_napi_disable(pdata, 1); 1138 xgbe_napi_disable(pdata, 1);
1137 1139
1138 phy_if->phy_stop(pdata);
1139
1140 hw_if->exit(pdata); 1140 hw_if->exit(pdata);
1141 1141
1142 channel = pdata->channel; 1142 channel = pdata->channel;
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c
index 9d8c953083b4..e707c49cc55a 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c
@@ -716,6 +716,8 @@ static void xgbe_phy_sfp_phy_settings(struct xgbe_prv_data *pdata)
716 pdata->phy.duplex = DUPLEX_UNKNOWN; 716 pdata->phy.duplex = DUPLEX_UNKNOWN;
717 pdata->phy.autoneg = AUTONEG_ENABLE; 717 pdata->phy.autoneg = AUTONEG_ENABLE;
718 pdata->phy.advertising = pdata->phy.supported; 718 pdata->phy.advertising = pdata->phy.supported;
719
720 return;
719 } 721 }
720 722
721 pdata->phy.advertising &= ~ADVERTISED_Autoneg; 723 pdata->phy.advertising &= ~ADVERTISED_Autoneg;
@@ -875,6 +877,16 @@ static int xgbe_phy_find_phy_device(struct xgbe_prv_data *pdata)
875 !phy_data->sfp_phy_avail) 877 !phy_data->sfp_phy_avail)
876 return 0; 878 return 0;
877 879
880 /* Set the proper MDIO mode for the PHY */
881 ret = pdata->hw_if.set_ext_mii_mode(pdata, phy_data->mdio_addr,
882 phy_data->phydev_mode);
883 if (ret) {
884 netdev_err(pdata->netdev,
885 "mdio port/clause not compatible (%u/%u)\n",
886 phy_data->mdio_addr, phy_data->phydev_mode);
887 return ret;
888 }
889
878 /* Create and connect to the PHY device */ 890 /* Create and connect to the PHY device */
879 phydev = get_phy_device(phy_data->mii, phy_data->mdio_addr, 891 phydev = get_phy_device(phy_data->mii, phy_data->mdio_addr,
880 (phy_data->phydev_mode == XGBE_MDIO_MODE_CL45)); 892 (phy_data->phydev_mode == XGBE_MDIO_MODE_CL45));
@@ -2722,6 +2734,18 @@ static int xgbe_phy_start(struct xgbe_prv_data *pdata)
2722 if (ret) 2734 if (ret)
2723 return ret; 2735 return ret;
2724 2736
2737 /* Set the proper MDIO mode for the re-driver */
2738 if (phy_data->redrv && !phy_data->redrv_if) {
2739 ret = pdata->hw_if.set_ext_mii_mode(pdata, phy_data->redrv_addr,
2740 XGBE_MDIO_MODE_CL22);
2741 if (ret) {
2742 netdev_err(pdata->netdev,
2743 "redriver mdio port not compatible (%u)\n",
2744 phy_data->redrv_addr);
2745 return ret;
2746 }
2747 }
2748
2725 /* Start in highest supported mode */ 2749 /* Start in highest supported mode */
2726 xgbe_phy_set_mode(pdata, phy_data->start_mode); 2750 xgbe_phy_set_mode(pdata, phy_data->start_mode);
2727 2751