Subject: [PATCH 3/8] sky2: workarounds for some 88e806x chips

From: Stephen Hemminger <[email-masked]>
Date: Tue, 26 Sep 2006 16:10:16 -0700

Workarounds for 88e806x chips from the vendor driver.

Signed-off-by: Stephen Hemminger <[email-masked]>

---
 drivers/net/sky2.c |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

--- netdev-2.6.orig/drivers/net/sky2.c	2006-09-25 15:23:02.000000000 -0700
+++ netdev-2.6/drivers/net/sky2.c	2006-09-25 15:23:13.000000000 -0700
@@ -1124,7 +1124,8 @@
 	sky2_qset(hw, txqaddr[port]);
 
 	/* Set almost empty threshold */
-	if (hw->chip_id == CHIP_ID_YUKON_EC_U && hw->chip_rev == 1)
+	if (hw->chip_id == CHIP_ID_YUKON_EC_U
+	    && hw->chip_rev == CHIP_REV_YU_EC_U_A0)
 		sky2_write16(hw, Q_ADDR(txqaddr[port], Q_AL), 0x1a0);
 
 	sky2_prefetch_init(hw, txqaddr[port], sky2->tx_le_map,
@@ -1443,6 +1444,13 @@
 	sky2_write32(hw, RB_ADDR(txqaddr[port], RB_CTRL),
 		     RB_RST_SET | RB_DIS_OP_MD);
 
+	/* WA for dev. #4.209 */
+	if (hw->chip_id == CHIP_ID_YUKON_EC_U
+	    && hw->chip_rev == CHIP_REV_YU_EC_U_A1)
+		sky2_write32(hw, SK_REG(port, TX_GMF_CTRL_T),
+			     sky2->speed != SPEED_1000 ?
+			     TX_STFW_ENA : TX_STFW_DIS);
+
 	ctrl = gma_read16(hw, port, GM_GP_CTRL);
 	ctrl &= ~(GM_GPCR_TX_ENA | GM_GPCR_RX_ENA);
 	gma_write16(hw, port, GM_GP_CTRL, ctrl);