aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/broadcom/tg3.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/broadcom/tg3.c')
-rw-r--r--drivers/net/ethernet/broadcom/tg3.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index a7449984c7a6..568dd07fc052 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -4428,6 +4428,18 @@ static bool tg3_test_and_report_link_chg(struct tg3 *tp, int curr_link_up)
4428 return false; 4428 return false;
4429} 4429}
4430 4430
4431static void tg3_clear_mac_status(struct tg3 *tp)
4432{
4433 tw32(MAC_EVENT, 0);
4434
4435 tw32_f(MAC_STATUS,
4436 MAC_STATUS_SYNC_CHANGED |
4437 MAC_STATUS_CFG_CHANGED |
4438 MAC_STATUS_MI_COMPLETION |
4439 MAC_STATUS_LNKSTATE_CHANGED);
4440 udelay(40);
4441}
4442
4431static int tg3_setup_copper_phy(struct tg3 *tp, int force_reset) 4443static int tg3_setup_copper_phy(struct tg3 *tp, int force_reset)
4432{ 4444{
4433 int current_link_up; 4445 int current_link_up;
@@ -4437,14 +4449,7 @@ static int tg3_setup_copper_phy(struct tg3 *tp, int force_reset)
4437 u8 current_duplex; 4449 u8 current_duplex;
4438 int i, err; 4450 int i, err;
4439 4451
4440 tw32(MAC_EVENT, 0); 4452 tg3_clear_mac_status(tp);
4441
4442 tw32_f(MAC_STATUS,
4443 (MAC_STATUS_SYNC_CHANGED |
4444 MAC_STATUS_CFG_CHANGED |
4445 MAC_STATUS_MI_COMPLETION |
4446 MAC_STATUS_LNKSTATE_CHANGED));
4447 udelay(40);
4448 4453
4449 if ((tp->mi_mode & MAC_MI_MODE_AUTO_POLL) != 0) { 4454 if ((tp->mi_mode & MAC_MI_MODE_AUTO_POLL) != 0) {
4450 tw32_f(MAC_MI_MODE, 4455 tw32_f(MAC_MI_MODE,
@@ -5470,14 +5475,7 @@ static int tg3_setup_fiber_mii_phy(struct tg3 *tp, int force_reset)
5470 tw32_f(MAC_MODE, tp->mac_mode); 5475 tw32_f(MAC_MODE, tp->mac_mode);
5471 udelay(40); 5476 udelay(40);
5472 5477
5473 tw32(MAC_EVENT, 0); 5478 tg3_clear_mac_status(tp);
5474
5475 tw32_f(MAC_STATUS,
5476 (MAC_STATUS_SYNC_CHANGED |
5477 MAC_STATUS_CFG_CHANGED |
5478 MAC_STATUS_MI_COMPLETION |
5479 MAC_STATUS_LNKSTATE_CHANGED));
5480 udelay(40);
5481 5479
5482 if (force_reset) 5480 if (force_reset)
5483 tg3_phy_reset(tp); 5481 tg3_phy_reset(tp);