aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sky2.c
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@osdl.org>2006-09-26 14:57:39 -0400
committerJeff Garzik <jeff@garzik.org>2006-09-27 17:56:31 -0400
commitc2716fb407ebaab7a09888cc8e4a2b9dfac20416 (patch)
tree4de0edffecdc7d5e102cd89fcac542a8c3dcf5b7 /drivers/net/sky2.c
parent91aeb3edbcf4e6ed72d138ac8c22fd68e6d717c3 (diff)
[PATCH] sky2: workarounds for some 88e806x chips
Workarounds for 88e806x chips from the vendor driver. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/sky2.c')
-rw-r--r--drivers/net/sky2.c10
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);