diff options
Diffstat (limited to 'drivers/net/sky2.c')
-rw-r--r-- | drivers/net/sky2.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index d3174ed8e454..00702dd1530e 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c | |||
@@ -1124,7 +1124,8 @@ static int sky2_up(struct net_device *dev) | |||
1124 | sky2_qset(hw, txqaddr[port]); | 1124 | sky2_qset(hw, txqaddr[port]); |
1125 | 1125 | ||
1126 | /* Set almost empty threshold */ | 1126 | /* Set almost empty threshold */ |
1127 | if (hw->chip_id == CHIP_ID_YUKON_EC_U && hw->chip_rev == 1) | 1127 | if (hw->chip_id == CHIP_ID_YUKON_EC_U |
1128 | && hw->chip_rev == CHIP_REV_YU_EC_U_A0) | ||
1128 | sky2_write16(hw, Q_ADDR(txqaddr[port], Q_AL), 0x1a0); | 1129 | sky2_write16(hw, Q_ADDR(txqaddr[port], Q_AL), 0x1a0); |
1129 | 1130 | ||
1130 | sky2_prefetch_init(hw, txqaddr[port], sky2->tx_le_map, | 1131 | sky2_prefetch_init(hw, txqaddr[port], sky2->tx_le_map, |
@@ -1443,6 +1444,13 @@ static int sky2_down(struct net_device *dev) | |||
1443 | sky2_write32(hw, RB_ADDR(txqaddr[port], RB_CTRL), | 1444 | sky2_write32(hw, RB_ADDR(txqaddr[port], RB_CTRL), |
1444 | RB_RST_SET | RB_DIS_OP_MD); | 1445 | RB_RST_SET | RB_DIS_OP_MD); |
1445 | 1446 | ||
1447 | /* WA for dev. #4.209 */ | ||
1448 | if (hw->chip_id == CHIP_ID_YUKON_EC_U | ||
1449 | && hw->chip_rev == CHIP_REV_YU_EC_U_A1) | ||
1450 | sky2_write32(hw, SK_REG(port, TX_GMF_CTRL_T), | ||
1451 | sky2->speed != SPEED_1000 ? | ||
1452 | TX_STFW_ENA : TX_STFW_DIS); | ||
1453 | |||
1446 | ctrl = gma_read16(hw, port, GM_GP_CTRL); | 1454 | ctrl = gma_read16(hw, port, GM_GP_CTRL); |
1447 | ctrl &= ~(GM_GPCR_TX_ENA | GM_GPCR_RX_ENA); | 1455 | ctrl &= ~(GM_GPCR_TX_ENA | GM_GPCR_RX_ENA); |
1448 | gma_write16(hw, port, GM_GP_CTRL, ctrl); | 1456 | gma_write16(hw, port, GM_GP_CTRL, ctrl); |