X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=bcm5720.diff;fp=bcm5720.diff;h=0000000000000000000000000000000000000000;hb=603ebee19acfe0294bf7f8794f0ee0d7a057716e;hp=cbd19a806a5fbd41a4a57f53961c3be34d7e6cda;hpb=bbd12664a683608a518235ebe2be4feb135d65ed;p=linux-2.6.git diff --git a/bcm5720.diff b/bcm5720.diff deleted file mode 100644 index cbd19a806..000000000 --- a/bcm5720.diff +++ /dev/null @@ -1,888 +0,0 @@ -diff -Nurb linux-2.6.32-27.planetlab.i686/drivers/net/tg3.c ../kernel-2.6/linux-2.6.32-27.planetlab.i686/drivers/net/tg3.c ---- linux-2.6.32-27.planetlab.i686/drivers/net/tg3.c 2011-05-10 14:38:09.000000000 -0400 -+++ ../kernel-2.6/linux-2.6.32-27.planetlab.i686/drivers/net/tg3.c 2012-05-01 10:09:30.502846530 -0400 -@@ -103,14 +103,12 @@ - * them in the NIC onboard memory. - */ - #define TG3_RX_STD_RING_SIZE(tp) \ -- ((GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || \ -- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) ? \ -- RX_STD_MAX_SIZE_5717 : 512) -+ ((tp->tg3_flags3 & TG3_FLG3_LRG_PROD_RING_CAP) ? \ -+ TG3_RX_STD_MAX_SIZE_5717 : TG3_RX_STD_MAX_SIZE_5700) - #define TG3_DEF_RX_RING_PENDING 200 - #define TG3_RX_JMB_RING_SIZE(tp) \ -- ((GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || \ -- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) ? \ -- 1024 : 256) -+ ((tp->tg3_flags3 & TG3_FLG3_LRG_PROD_RING_CAP) ? \ -+ TG3_RX_JMB_MAX_SIZE_5717 : TG3_RX_JMB_MAX_SIZE_5700) - #define TG3_DEF_RX_JUMBO_RING_PENDING 100 - #define TG3_RSS_INDIR_TBL_SIZE 128 - -@@ -276,6 +274,7 @@ - {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57791)}, - {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57795)}, - {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5719)}, -+ {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5720)}, - {PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_9DXX)}, - {PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_9MXX)}, - {PCI_DEVICE(PCI_VENDOR_ID_ALTIMA, PCI_DEVICE_ID_ALTIMA_AC1000)}, -@@ -1090,8 +1089,7 @@ - u32 reg; - struct phy_device *phydev; - -- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || -- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) { -+ if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) { - u32 is_serdes; - - tp->phy_addr = PCI_FUNC(tp->pdev->devfn) + 1; -@@ -1669,8 +1667,7 @@ - u32 reg; - - if (!(tp->tg3_flags2 & TG3_FLG2_5705_PLUS) || -- ((GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || -- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) && -+ ((tp->tg3_flags3 & TG3_FLG3_5717_PLUS) && - (tp->phy_flags & TG3_PHYFLG_MII_SERDES))) - return; - -@@ -2080,8 +2077,7 @@ - } - } - -- if ((GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || -- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) && -+ if ((tp->tg3_flags3 & TG3_FLG3_5717_PLUS) && - (tp->phy_flags & TG3_PHYFLG_MII_SERDES)) - return 0; - -@@ -2167,7 +2163,8 @@ - - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5714 || -- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717) { -+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717) || -+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720)) - struct net_device *dev_peer; - - dev_peer = pci_get_drvdata(tp->pdev_peer); -@@ -4431,6 +4428,7 @@ - - static int tg3_setup_phy(struct tg3 *tp, int force_reset) - { -+ u32 val; - int err; - - if (tp->phy_flags & TG3_PHYFLG_PHY_SERDES) -@@ -4441,7 +4439,7 @@ - err = tg3_setup_copper_phy(tp, force_reset); - - if (GET_CHIP_REV(tp->pci_chip_rev_id) == CHIPREV_5784_AX) { -- u32 val, scale; -+ u32 scale; - - val = tr32(TG3_CPMU_CLCK_STAT) & CPMU_CLCK_STAT_MAC_CLCK_MASK; - if (val == CPMU_CLCK_STAT_MAC_CLCK_62_5) -@@ -4456,17 +4454,20 @@ - tw32(GRC_MISC_CFG, val); - } - -+ val = (2 << TX_LENGTHS_IPG_CRS_SHIFT) | -+ (6 << TX_LENGTHS_IPG_SHIFT); -+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) -+ val |= tr32(MAC_TX_LENGTHS) & -+ (TX_LENGTHS_JMB_FRM_LEN_MSK | -+ TX_LENGTHS_CNT_DWN_VAL_MSK); -+ - if (tp->link_config.active_speed == SPEED_1000 && - tp->link_config.active_duplex == DUPLEX_HALF) -- tw32(MAC_TX_LENGTHS, -- ((2 << TX_LENGTHS_IPG_CRS_SHIFT) | -- (6 << TX_LENGTHS_IPG_SHIFT) | -- (0xff << TX_LENGTHS_SLOT_TIME_SHIFT))); -+ tw32(MAC_TX_LENGTHS, val | -+ (0xff << TX_LENGTHS_SLOT_TIME_SHIFT)); - else -- tw32(MAC_TX_LENGTHS, -- ((2 << TX_LENGTHS_IPG_CRS_SHIFT) | -- (6 << TX_LENGTHS_IPG_SHIFT) | -- (32 << TX_LENGTHS_SLOT_TIME_SHIFT))); -+ tw32(MAC_TX_LENGTHS, val | -+ (32 << TX_LENGTHS_SLOT_TIME_SHIFT)); - - if (!(tp->tg3_flags2 & TG3_FLG2_5705_PLUS)) { - if (netif_carrier_ok(tp->dev)) { -@@ -4478,7 +4479,7 @@ - } - - if (tp->tg3_flags & TG3_FLAG_ASPM_WORKAROUND) { -- u32 val = tr32(PCIE_PWR_MGMT_THRESH); -+ val = tr32(PCIE_PWR_MGMT_THRESH); - if (!netif_carrier_ok(tp->dev)) - val = (val & ~PCIE_PWR_MGMT_L1_THRESH_MSK) | - tp->pwrmgmt_thresh; -@@ -7085,7 +7086,7 @@ - if (tp->tg3_flags2 & TG3_FLG2_PCI_EXPRESS) { - /* Force PCIe 1.0a mode */ - if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5785 && -- !(tp->tg3_flags3 & TG3_FLG3_5717_PLUS) && -+ !(tp->tg3_flags3 & TG3_FLG3_57765_PLUS) && - tr32(TG3_PCIE_PHY_TSTCTL) == - (TG3_PCIE_PHY_TSTCTL_PCIE10 | TG3_PCIE_PHY_TSTCTL_PSCRAM)) - tw32(TG3_PCIE_PHY_TSTCTL, TG3_PCIE_PHY_TSTCTL_PSCRAM); -@@ -7236,12 +7237,17 @@ - if ((tp->tg3_flags2 & TG3_FLG2_PCI_EXPRESS) && - tp->pci_chip_rev_id != CHIPREV_ID_5750_A0 && - GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5785 && -- !(tp->tg3_flags3 & TG3_FLG3_5717_PLUS)) { -+ !(tp->tg3_flags3 & TG3_FLG3_57765_PLUS)) { - val = tr32(0x7c00); - - tw32(0x7c00, val | (1 << 25)); - } - -+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) { -+ val = tr32(TG3_CPMU_CLCK_ORIDE); -+ tw32(TG3_CPMU_CLCK_ORIDE, val & ~CPMU_CLCK_ORIDE_MAC_ORIDE_EN); -+ } -+ - /* Reprobe ASF enable state. */ - tp->tg3_flags &= ~TG3_FLAG_ENABLE_ASF; - tp->tg3_flags2 &= ~TG3_FLG2_ASF_NEW_HANDSHAKE; -@@ -7659,6 +7665,8 @@ - /* Disable all transmit rings but the first. */ - if (!(tp->tg3_flags2 & TG3_FLG2_5705_PLUS)) - limit = NIC_SRAM_SEND_RCB + TG3_BDINFO_SIZE * 16; -+ else if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) -+ limit = NIC_SRAM_SEND_RCB + TG3_BDINFO_SIZE * 4; - else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765) - limit = NIC_SRAM_SEND_RCB + TG3_BDINFO_SIZE * 2; - else -@@ -7671,8 +7679,7 @@ - - - /* Disable all receive return rings but the first. */ -- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || -- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) -+ if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) - limit = NIC_SRAM_RCV_RET_RCB + TG3_BDINFO_SIZE * 17; - else if (!(tp->tg3_flags2 & TG3_FLG2_5705_PLUS)) - limit = NIC_SRAM_RCV_RET_RCB + TG3_BDINFO_SIZE * 16; -@@ -7943,7 +7950,7 @@ - if (err) - return err; - -- if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) { -+ if (tp->tg3_flags3 & TG3_FLG3_57765_PLUS) { - val = tr32(TG3PCI_DMA_RW_CTRL) & - ~DMA_RWCTRL_DIS_CACHE_ALIGNMENT; - if (tp->pci_chip_rev_id == CHIPREV_ID_57765_A0) -@@ -8074,8 +8081,7 @@ - ((u64) tpr->rx_std_mapping >> 32)); - tw32(RCVDBDI_STD_BD + TG3_BDINFO_HOST_ADDR + TG3_64BIT_REG_LOW, - ((u64) tpr->rx_std_mapping & 0xffffffff)); -- if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5717 && -- GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5719) -+ if (!(tp->tg3_flags3 & TG3_FLG3_5717_PLUS)) - tw32(RCVDBDI_STD_BD + TG3_BDINFO_NIC_ADDR, - NIC_SRAM_RX_BUFFER_DESC); - -@@ -8097,9 +8103,10 @@ - ((u64) tpr->rx_jmb_mapping >> 32)); - tw32(RCVDBDI_JUMBO_BD + TG3_BDINFO_HOST_ADDR + TG3_64BIT_REG_LOW, - ((u64) tpr->rx_jmb_mapping & 0xffffffff)); -+ val = TG3_RX_JMB_RING_SIZE(tp) << -+ BDINFO_FLAGS_MAXLEN_SHIFT; - tw32(RCVDBDI_JUMBO_BD + TG3_BDINFO_MAXLEN_FLAGS, -- (RX_JUMBO_MAX_SIZE << BDINFO_FLAGS_MAXLEN_SHIFT) | -- BDINFO_FLAGS_USE_EXT_RECV); -+ val | BDINFO_FLAGS_USE_EXT_RECV); - if (!(tp->tg3_flags3 & TG3_FLG3_USE_JUMBO_BDFLAG) || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765) - tw32(RCVDBDI_JUMBO_BD + TG3_BDINFO_NIC_ADDR, -@@ -8109,17 +8116,17 @@ - BDINFO_FLAGS_DISABLED); - } - -- if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) { -+ if (tp->tg3_flags3 & TG3_FLG3_57765_PLUS) { - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765) -- val = RX_STD_MAX_SIZE_5705; -+ val = TG3_RX_STD_MAX_SIZE_5700; - else -- val = RX_STD_MAX_SIZE_5717; -+ val = TG3_RX_STD_MAX_SIZE_5717; - val <<= BDINFO_FLAGS_MAXLEN_SHIFT; - val |= (TG3_RX_STD_DMA_SZ << 2); - } else - val = TG3_RX_STD_DMA_SZ << BDINFO_FLAGS_MAXLEN_SHIFT; - } else -- val = RX_STD_MAX_SIZE_5705 << BDINFO_FLAGS_MAXLEN_SHIFT; -+ val = TG3_RX_STD_MAX_SIZE_5700 << BDINFO_FLAGS_MAXLEN_SHIFT; - - tw32(RCVDBDI_STD_BD + TG3_BDINFO_MAXLEN_FLAGS, val); - -@@ -8130,7 +8137,7 @@ - tp->rx_jumbo_pending : 0; - tw32_rx_mbox(TG3_RX_JMB_PROD_IDX_REG, tpr->rx_jmb_prod_idx); - -- if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) { -+ if (tp->tg3_flags3 & TG3_FLG3_57765_PLUS) { - tw32(STD_REPLENISH_LWM, 32); - tw32(JMB_REPLENISH_LWM, 16); - } -@@ -8147,10 +8154,16 @@ - /* The slot time is changed by tg3_setup_phy if we - * run at gigabit with half duplex. - */ -- tw32(MAC_TX_LENGTHS, -- (2 << TX_LENGTHS_IPG_CRS_SHIFT) | -+ val = (2 << TX_LENGTHS_IPG_CRS_SHIFT) | - (6 << TX_LENGTHS_IPG_SHIFT) | -- (32 << TX_LENGTHS_SLOT_TIME_SHIFT)); -+ (32 << TX_LENGTHS_SLOT_TIME_SHIFT); -+ -+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) -+ val |= tr32(MAC_TX_LENGTHS) & -+ (TX_LENGTHS_JMB_FRM_LEN_MSK | -+ TX_LENGTHS_CNT_DWN_VAL_MSK); -+ -+ tw32(MAC_TX_LENGTHS, val); - - /* Receive rules. */ - tw32(MAC_RCV_RULE_CFG, RCV_RULE_CFG_DEFAULT_CLASS); -@@ -8199,13 +8212,17 @@ - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780) - rdmac_mode |= RDMAC_MODE_IPV6_LSO_EN; - -+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) -+ rdmac_mode |= tr32(RDMAC_MODE) & RDMAC_MODE_H2BNC_VLAN_DET; -+ - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5761 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5784 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5785 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780 || -- (tp->tg3_flags3 & TG3_FLG3_5717_PLUS)) { -+ (tp->tg3_flags3 & TG3_FLG3_57765_PLUS)) { - val = tr32(TG3_RDMA_RSRVCTRL_REG); -- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) { -+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || -+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) { - val &= ~TG3_RDMA_RSRVCTRL_TXMRGN_MASK; - val |= TG3_RDMA_RSRVCTRL_TXMRGN_320B; - } -@@ -8213,7 +8230,8 @@ - val | TG3_RDMA_RSRVCTRL_FIFO_OFLW_FIX); - } - -- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) { -+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || -+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) { - val = tr32(TG3_LSO_RD_DMA_CRPTEN_CTRL); - tw32(TG3_LSO_RD_DMA_CRPTEN_CTRL, val | - TG3_LSO_RD_DMA_CRPTEN_CTRL_BLEN_BD_4K | -@@ -8403,8 +8421,7 @@ - tw32(SNDBDC_MODE, SNDBDC_MODE_ENABLE | SNDBDC_MODE_ATTN_ENABLE); - tw32(RCVBDI_MODE, RCVBDI_MODE_ENABLE | RCVBDI_MODE_RCB_ATTN_ENAB); - val = RCVDBDI_MODE_ENABLE | RCVDBDI_MODE_INV_RING_SZ; -- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || -- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) -+ if (tp->tg3_flags3 & TG3_FLG3_LRG_PROD_RING_CAP) - val |= RCVDBDI_MODE_LRG_RING_SZ; - tw32(RCVDBDI_MODE, val); - tw32(SNDDATAI_MODE, SNDDATAI_MODE_ENABLE); -@@ -8429,9 +8446,17 @@ - } - - tp->tx_mode = TX_MODE_ENABLE; -+ - if ((tp->tg3_flags3 & TG3_FLG3_5755_PLUS) || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) - tp->tx_mode |= TX_MODE_MBUF_LOCKUP_FIX; -+ -+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) { -+ val = TX_MODE_JMB_FRM_LEN | TX_MODE_CNT_DN_MODE; -+ tp->tx_mode &= ~val; -+ tp->tx_mode |= tr32(MAC_TX_MODE) & val; -+ } -+ - tw32_f(MAC_TX_MODE, tp->tx_mode); - udelay(100); - -@@ -8850,7 +8875,7 @@ - * Turn off MSI one shot mode. Otherwise this test has no - * observable way to know whether the interrupt was delivered. - */ -- if ((tp->tg3_flags3 & TG3_FLG3_5717_PLUS) && -+ if ((tp->tg3_flags3 & TG3_FLG3_57765_PLUS) && - (tp->tg3_flags2 & TG3_FLG2_USING_MSI)) { - val = tr32(MSGINT_MODE) | MSGINT_MODE_ONE_SHOT_DISABLE; - tw32(MSGINT_MODE, val); -@@ -8893,7 +8918,7 @@ - - if (intr_ok) { - /* Reenable MSI one shot mode. */ -- if ((tp->tg3_flags3 & TG3_FLG3_5717_PLUS) && -+ if ((tp->tg3_flags3 & TG3_FLG3_57765_PLUS) && - (tp->tg3_flags2 & TG3_FLG2_USING_MSI)) { - val = tr32(MSGINT_MODE) & ~MSGINT_MODE_ONE_SHOT_DISABLE; - tw32(MSGINT_MODE, val); -@@ -9034,7 +9059,9 @@ - tp->dev->real_num_tx_queues = 1; - if (tp->irq_cnt > 1) { - tp->tg3_flags3 |= TG3_FLG3_ENABLE_RSS; -- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) { -+ -+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || -+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) { - tp->tg3_flags3 |= TG3_FLG3_ENABLE_TSS; - netif_set_real_num_tx_queues(tp->dev, tp->irq_cnt - 1); - } -@@ -9186,7 +9213,7 @@ - goto err_out2; - } - -- if (!(tp->tg3_flags3 & TG3_FLG3_5717_PLUS) && -+ if (!(tp->tg3_flags3 & TG3_FLG3_57765_PLUS) && - (tp->tg3_flags2 & TG3_FLG2_USING_MSI)) { - u32 val = tr32(PCIE_TRANSACTION_CFG); - -@@ -10796,8 +10823,7 @@ - int err = 0; - int i; - -- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || -- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) -+ if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) - mem_tbl = mem_tbl_5717; - else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765) - mem_tbl = mem_tbl_57765; -@@ -11788,6 +11814,8 @@ - - switch (nvcfg1 & NVRAM_CFG1_5752VENDOR_MASK) { - case FLASH_5717VENDOR_ATMEL_MDB021D: -+ /* Detect size with tg3_nvram_get_size() */ -+ break; - case FLASH_5717VENDOR_ATMEL_ADB021B: - case FLASH_5717VENDOR_ATMEL_ADB021D: - tp->nvram_size = TG3_NVRAM_SIZE_256KB; -@@ -11813,8 +11841,10 @@ - - switch (nvcfg1 & NVRAM_CFG1_5752VENDOR_MASK) { - case FLASH_5717VENDOR_ST_M_M25PE20: -- case FLASH_5717VENDOR_ST_A_M25PE20: - case FLASH_5717VENDOR_ST_M_M45PE20: -+ /* Detect size with tg3_nvram_get_size() */ -+ break; -+ case FLASH_5717VENDOR_ST_A_M25PE20: - case FLASH_5717VENDOR_ST_A_M45PE20: - tp->nvram_size = TG3_NVRAM_SIZE_256KB; - break; -@@ -11833,6 +11863,118 @@ - tp->tg3_flags3 |= TG3_FLG3_NO_NVRAM_ADDR_TRANS; - } - -+static void __devinit tg3_get_5720_nvram_info(struct tg3 *tp) -+{ -+ u32 nvcfg1, nvmpinstrp; -+ -+ nvcfg1 = tr32(NVRAM_CFG1); -+ nvmpinstrp = nvcfg1 & NVRAM_CFG1_5752VENDOR_MASK; -+ -+ switch (nvmpinstrp) { -+ case FLASH_5720_EEPROM_HD: -+ case FLASH_5720_EEPROM_LD: -+ tp->nvram_jedecnum = JEDEC_ATMEL; -+ tp->tg3_flags |= TG3_FLAG_NVRAM_BUFFERED; -+ -+ nvcfg1 &= ~NVRAM_CFG1_COMPAT_BYPASS; -+ tw32(NVRAM_CFG1, nvcfg1); -+ if (nvmpinstrp == FLASH_5720_EEPROM_HD) -+ tp->nvram_pagesize = ATMEL_AT24C512_CHIP_SIZE; -+ else -+ tp->nvram_pagesize = ATMEL_AT24C02_CHIP_SIZE; -+ return; -+ case FLASH_5720VENDOR_M_ATMEL_DB011D: -+ case FLASH_5720VENDOR_A_ATMEL_DB011B: -+ case FLASH_5720VENDOR_A_ATMEL_DB011D: -+ case FLASH_5720VENDOR_M_ATMEL_DB021D: -+ case FLASH_5720VENDOR_A_ATMEL_DB021B: -+ case FLASH_5720VENDOR_A_ATMEL_DB021D: -+ case FLASH_5720VENDOR_M_ATMEL_DB041D: -+ case FLASH_5720VENDOR_A_ATMEL_DB041B: -+ case FLASH_5720VENDOR_A_ATMEL_DB041D: -+ case FLASH_5720VENDOR_M_ATMEL_DB081D: -+ case FLASH_5720VENDOR_A_ATMEL_DB081D: -+ case FLASH_5720VENDOR_ATMEL_45USPT: -+ tp->nvram_jedecnum = JEDEC_ATMEL; -+ tp->tg3_flags |= TG3_FLAG_NVRAM_BUFFERED; -+ tp->tg3_flags2 |= TG3_FLG2_FLASH; -+ -+ switch (nvmpinstrp) { -+ case FLASH_5720VENDOR_M_ATMEL_DB021D: -+ case FLASH_5720VENDOR_A_ATMEL_DB021B: -+ case FLASH_5720VENDOR_A_ATMEL_DB021D: -+ tp->nvram_size = TG3_NVRAM_SIZE_256KB; -+ break; -+ case FLASH_5720VENDOR_M_ATMEL_DB041D: -+ case FLASH_5720VENDOR_A_ATMEL_DB041B: -+ case FLASH_5720VENDOR_A_ATMEL_DB041D: -+ tp->nvram_size = TG3_NVRAM_SIZE_512KB; -+ break; -+ case FLASH_5720VENDOR_M_ATMEL_DB081D: -+ case FLASH_5720VENDOR_A_ATMEL_DB081D: -+ tp->nvram_size = TG3_NVRAM_SIZE_1MB; -+ break; -+ default: -+ tp->nvram_size = TG3_NVRAM_SIZE_128KB; -+ break; -+ } -+ break; -+ case FLASH_5720VENDOR_M_ST_M25PE10: -+ case FLASH_5720VENDOR_M_ST_M45PE10: -+ case FLASH_5720VENDOR_A_ST_M25PE10: -+ case FLASH_5720VENDOR_A_ST_M45PE10: -+ case FLASH_5720VENDOR_M_ST_M25PE20: -+ case FLASH_5720VENDOR_M_ST_M45PE20: -+ case FLASH_5720VENDOR_A_ST_M25PE20: -+ case FLASH_5720VENDOR_A_ST_M45PE20: -+ case FLASH_5720VENDOR_M_ST_M25PE40: -+ case FLASH_5720VENDOR_M_ST_M45PE40: -+ case FLASH_5720VENDOR_A_ST_M25PE40: -+ case FLASH_5720VENDOR_A_ST_M45PE40: -+ case FLASH_5720VENDOR_M_ST_M25PE80: -+ case FLASH_5720VENDOR_M_ST_M45PE80: -+ case FLASH_5720VENDOR_A_ST_M25PE80: -+ case FLASH_5720VENDOR_A_ST_M45PE80: -+ case FLASH_5720VENDOR_ST_25USPT: -+ case FLASH_5720VENDOR_ST_45USPT: -+ tp->nvram_jedecnum = JEDEC_ST; -+ tp->tg3_flags |= TG3_FLAG_NVRAM_BUFFERED; -+ tp->tg3_flags2 |= TG3_FLG2_FLASH; -+ -+ switch (nvmpinstrp) { -+ case FLASH_5720VENDOR_M_ST_M25PE20: -+ case FLASH_5720VENDOR_M_ST_M45PE20: -+ case FLASH_5720VENDOR_A_ST_M25PE20: -+ case FLASH_5720VENDOR_A_ST_M45PE20: -+ tp->nvram_size = TG3_NVRAM_SIZE_256KB; -+ break; -+ case FLASH_5720VENDOR_M_ST_M25PE40: -+ case FLASH_5720VENDOR_M_ST_M45PE40: -+ case FLASH_5720VENDOR_A_ST_M25PE40: -+ case FLASH_5720VENDOR_A_ST_M45PE40: -+ tp->nvram_size = TG3_NVRAM_SIZE_512KB; -+ break; -+ case FLASH_5720VENDOR_M_ST_M25PE80: -+ case FLASH_5720VENDOR_M_ST_M45PE80: -+ case FLASH_5720VENDOR_A_ST_M25PE80: -+ case FLASH_5720VENDOR_A_ST_M45PE80: -+ tp->nvram_size = TG3_NVRAM_SIZE_1MB; -+ break; -+ default: -+ tp->nvram_size = TG3_NVRAM_SIZE_128KB; -+ break; -+ } -+ break; -+ default: -+ tp->tg3_flags3 |= TG3_FLG3_NO_NVRAM; -+ return; -+ } -+ -+ tg3_nvram_get_pagesize(tp, nvcfg1); -+ if (tp->nvram_pagesize != 264 && tp->nvram_pagesize != 528) -+ tp->tg3_flags3 |= TG3_FLG3_NO_NVRAM_ADDR_TRANS; -+} -+ - /* Chips other than 5700/5701 use the NVRAM for fetching info. */ - static void __devinit tg3_nvram_init(struct tg3 *tp) - { -@@ -11880,6 +12022,8 @@ - else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) - tg3_get_5717_nvram_info(tp); -+ else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) -+ tg3_get_5720_nvram_info(tp); - else - tg3_get_nvram_info(tp); - -@@ -12417,7 +12561,7 @@ - if (cfg2 & (1 << 18)) - tp->phy_flags |= TG3_PHYFLG_SERDES_PREEMPHASIS; - -- if (((tp->tg3_flags3 & TG3_FLG3_5717_PLUS) || -+ if (((tp->tg3_flags3 & TG3_FLG3_57765_PLUS) || - ((GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5784 && - GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_5784_AX))) && - (cfg2 & NIC_SRAM_DATA_CFG_2_APD_EN)) -@@ -12425,7 +12569,7 @@ - - if ((tp->tg3_flags2 & TG3_FLG2_PCI_EXPRESS) && - GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5785 && -- !(tp->tg3_flags3 & TG3_FLG3_5717_PLUS)) { -+ !(tp->tg3_flags3 & TG3_FLG3_57765_PLUS)) { - u32 cfg3; - - tg3_read_mem(tp, NIC_SRAM_DATA_CFG_3, &cfg3); -@@ -13029,14 +13173,13 @@ - - static inline u32 tg3_rx_ret_ring_size(struct tg3 *tp) - { -- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || -- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) -- return 4096; -+ if (tp->tg3_flags3 & TG3_FLG3_LRG_PROD_RING_CAP) -+ return TG3_RX_RET_MAX_SIZE_5717; - else if ((tp->tg3_flags & TG3_FLAG_JUMBO_CAPABLE) && - !(tp->tg3_flags2 & TG3_FLG2_5780_CLASS)) -- return 1024; -+ return TG3_RX_RET_MAX_SIZE_5700; - else -- return 512; -+ return TG3_RX_RET_MAX_SIZE_5705; - } - - static int __devinit tg3_get_invariants(struct tg3 *tp) -@@ -13084,6 +13227,7 @@ - if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_5717 || - tp->pdev->device == TG3PCI_DEVICE_TIGON3_5718 || - tp->pdev->device == TG3PCI_DEVICE_TIGON3_5724 || -+ tp->pdev->device == TG3PCI_DEVICE_TIGON3_5719 || - tp->pdev->device == TG3PCI_DEVICE_TIGON3_5719) - pci_read_config_dword(tp->pdev, - TG3PCI_GEN2_PRODID_ASICREV, -@@ -13239,14 +13383,19 @@ - - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5714 || -- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717) -+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || -+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) - tp->pdev_peer = tg3_find_peer(tp); - - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || -- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765) -+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) - tp->tg3_flags3 |= TG3_FLG3_5717_PLUS; - -+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765 || -+ (tp->tg3_flags3 & TG3_FLG3_5717_PLUS)) -+ tp->tg3_flags3 |= TG3_FLG3_57765_PLUS; -+ - /* Intentionally exclude ASIC_REV_5906 */ - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5755 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5787 || -@@ -13254,7 +13403,7 @@ - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5761 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5785 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780 || -- (tp->tg3_flags3 & TG3_FLG3_5717_PLUS)) -+ (tp->tg3_flags3 & TG3_FLG3_57765_PLUS)) - tp->tg3_flags3 |= TG3_FLG3_5755_PLUS; - - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5750 || -@@ -13284,7 +13433,7 @@ - } - - /* Determine TSO capabilities */ -- if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) -+ if (tp->tg3_flags3 & TG3_FLG3_57765_PLUS) - tp->tg3_flags2 |= TG3_FLG2_HW_TSO_3; - else if ((tp->tg3_flags3 & TG3_FLG3_5755_PLUS) || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) -@@ -13320,7 +13469,7 @@ - tp->tg3_flags2 |= TG3_FLG2_1SHOT_MSI; - } - -- if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) { -+ if (tp->tg3_flags3 & TG3_FLG3_57765_PLUS) { - tp->tg3_flags |= TG3_FLAG_SUPPORT_MSIX; - tp->irq_max = TG3_IRQ_MAX_VECS; - } -@@ -13336,6 +13485,9 @@ - } - - if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) -+ tp->tg3_flags3 |= TG3_FLG3_LRG_PROD_RING_CAP; -+ -+ if (tp->tg3_flags3 & TG3_FLG3_57765_PLUS) - tp->tg3_flags3 |= TG3_FLG3_USE_JUMBO_BDFLAG; - - if (!(tp->tg3_flags2 & TG3_FLG2_5705_PLUS) || -@@ -13353,7 +13505,8 @@ - tp->tg3_flags2 |= TG3_FLG2_PCI_EXPRESS; - - tp->pcie_readrq = 4096; -- if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) { -+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || -+ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) { - u16 word; - - pci_read_config_word(tp->pdev, -@@ -13574,7 +13727,7 @@ - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5761 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5785 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780 || -- (tp->tg3_flags3 & TG3_FLG3_5717_PLUS)) -+ (tp->tg3_flags3 & TG3_FLG3_57765_PLUS)) - tp->tg3_flags |= TG3_FLAG_CPMU_PRESENT; - - /* Set up tp->grc_local_ctrl before calling tg3_set_power_state(). -@@ -13653,7 +13806,7 @@ - !(tp->phy_flags & TG3_PHYFLG_IS_FET) && - GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5785 && - GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_57780 && -- !(tp->tg3_flags3 & TG3_FLG3_5717_PLUS)) { -+ !(tp->tg3_flags3 & TG3_FLG3_57765_PLUS)) { - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5755 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5787 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5784 || -@@ -13694,7 +13847,15 @@ - - /* Initialize data/descriptor byte/word swapping. */ - val = tr32(GRC_MODE); -+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) -+ val &= (GRC_MODE_BYTE_SWAP_B2HRX_DATA | -+ GRC_MODE_WORD_SWAP_B2HRX_DATA | -+ GRC_MODE_B2HRX_ENABLE | -+ GRC_MODE_HTX2B_ENABLE | -+ GRC_MODE_HOST_STACKUP); -+ else - val &= GRC_MODE_HOST_STACKUP; -+ - tw32(GRC_MODE, val | tp->grc_mode); - - tg3_switch_clocks(tp); -@@ -13900,8 +14061,7 @@ - tw32_f(NVRAM_CMD, NVRAM_CMD_RESET); - else - tg3_nvram_unlock(tp); -- } else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || -- GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) { -+ } else if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) { - if (PCI_FUNC(tp->pdev->devfn) & 1) - mac_offset = 0xcc; - if (PCI_FUNC(tp->pdev->devfn) > 1) -@@ -13990,7 +14150,7 @@ - #endif - #endif - -- if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) { -+ if (tp->tg3_flags3 & TG3_FLG3_57765_PLUS) { - val = goal ? 0 : DMA_RWCTRL_DIS_CACHE_ALIGNMENT; - goto out; - } -@@ -14201,7 +14361,7 @@ - - tp->dma_rwctrl = tg3_calc_dma_bndry(tp, tp->dma_rwctrl); - -- if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) -+ if (tp->tg3_flags3 & TG3_FLG3_57765_PLUS) - goto out; - - if (tp->tg3_flags2 & TG3_FLG2_PCI_EXPRESS) { -@@ -14398,7 +14558,7 @@ - - static void __devinit tg3_init_bufmgr_config(struct tg3 *tp) - { -- if (tp->tg3_flags3 & TG3_FLG3_5717_PLUS) { -+ if (tp->tg3_flags3 & TG3_FLG3_57765_PLUS) { - tp->bufmgr_config.mbuf_read_dma_low_water = - DEFAULT_MB_RDMA_LOW_WATER_5705; - tp->bufmgr_config.mbuf_mac_rx_low_water = -@@ -14476,6 +14636,7 @@ - case TG3_PHY_ID_BCM5718S: return "5718S"; - case TG3_PHY_ID_BCM57765: return "57765"; - case TG3_PHY_ID_BCM5719C: return "5719C"; -+ case TG3_PHY_ID_BCM5720C: return "5720C"; - case TG3_PHY_ID_BCM8002: return "8002/serdes"; - case 0: return "serdes"; - default: return "unknown"; -@@ -14724,8 +14885,7 @@ - } - - if ((tp->tg3_flags3 & TG3_FLG3_5755_PLUS) && -- GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5717 && -- GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5719) -+ !(tp->tg3_flags3 & TG3_FLG3_5717_PLUS)) - dev->netdev_ops = &tg3_netdev_ops; - else - dev->netdev_ops = &tg3_netdev_ops_dma_bug; -diff -Nurb linux-2.6.32-27.planetlab.i686/drivers/net/tg3.h ../kernel-2.6/linux-2.6.32-27.planetlab.i686/drivers/net/tg3.h ---- linux-2.6.32-27.planetlab.i686/drivers/net/tg3.h 2011-05-10 14:38:09.000000000 -0400 -+++ ../kernel-2.6/linux-2.6.32-27.planetlab.i686/drivers/net/tg3.h 2012-05-01 09:39:43.237312425 -0400 -@@ -25,9 +25,13 @@ - - #define TG3_RX_INTERNAL_RING_SZ_5906 32 - --#define RX_STD_MAX_SIZE_5705 512 --#define RX_STD_MAX_SIZE_5717 2048 --#define RX_JUMBO_MAX_SIZE 0xdeadbeef /* XXX */ -+#define TG3_RX_STD_MAX_SIZE_5700 512 -+#define TG3_RX_STD_MAX_SIZE_5717 2048 -+#define TG3_RX_JMB_MAX_SIZE_5700 256 -+#define TG3_RX_JMB_MAX_SIZE_5717 1024 -+#define TG3_RX_RET_MAX_SIZE_5700 1024 -+#define TG3_RX_RET_MAX_SIZE_5705 512 -+#define TG3_RX_RET_MAX_SIZE_5717 4096 - - /* First 256 bytes are a mirror of PCI config space. */ - #define TG3PCI_VENDOR 0x00000000 -@@ -55,6 +59,7 @@ - #define TG3PCI_DEVICE_TIGON3_57791 0x16b2 - #define TG3PCI_DEVICE_TIGON3_57795 0x16b6 - #define TG3PCI_DEVICE_TIGON3_5719 0x1657 -+#define TG3PCI_DEVICE_TIGON3_5720 0x165f - /* 0x04 --> 0x2c unused */ - #define TG3PCI_SUBVENDOR_ID_BROADCOM PCI_VENDOR_ID_BROADCOM - #define TG3PCI_SUBDEVICE_ID_BROADCOM_95700A6 0x1644 -@@ -163,6 +168,7 @@ - #define ASIC_REV_5717 0x5717 - #define ASIC_REV_57765 0x57785 - #define ASIC_REV_5719 0x5719 -+#define ASIC_REV_5720 0x5720 - #define GET_CHIP_REV(CHIP_REV_ID) ((CHIP_REV_ID) >> 8) - #define CHIPREV_5700_AX 0x70 - #define CHIPREV_5700_BX 0x71 -@@ -473,6 +479,8 @@ - #define TX_MODE_BIG_BCKOFF_ENABLE 0x00000020 - #define TX_MODE_LONG_PAUSE_ENABLE 0x00000040 - #define TX_MODE_MBUF_LOCKUP_FIX 0x00000100 -+#define TX_MODE_JMB_FRM_LEN 0x00400000 -+#define TX_MODE_CNT_DN_MODE 0x00800000 - #define MAC_TX_STATUS 0x00000460 - #define TX_STATUS_XOFFED 0x00000001 - #define TX_STATUS_SENT_XOFF 0x00000002 -@@ -487,6 +495,8 @@ - #define TX_LENGTHS_IPG_SHIFT 8 - #define TX_LENGTHS_IPG_CRS_MASK 0x00003000 - #define TX_LENGTHS_IPG_CRS_SHIFT 12 -+#define TX_LENGTHS_JMB_FRM_LEN_MSK 0x00ff0000 -+#define TX_LENGTHS_CNT_DWN_VAL_MSK 0xff000000 - #define MAC_RX_MODE 0x00000468 - #define RX_MODE_RESET 0x00000001 - #define RX_MODE_ENABLE 0x00000002 -@@ -1079,6 +1089,9 @@ - #define CPMU_HST_ACC_MACCLK_6_25 0x00130000 - /* 0x3620 --> 0x3630 unused */ - -+#define TG3_CPMU_CLCK_ORIDE 0x00003624 -+#define CPMU_CLCK_ORIDE_MAC_ORIDE_EN 0x80000000 -+ - #define TG3_CPMU_CLCK_STAT 0x00003630 - #define CPMU_CLCK_STAT_MAC_CLCK_MASK 0x001f0000 - #define CPMU_CLCK_STAT_MAC_CLCK_62_5 0x00000000 -@@ -1321,6 +1334,7 @@ - #define RDMAC_MODE_MULT_DMA_RD_DIS 0x01000000 - #define RDMAC_MODE_IPV4_LSO_EN 0x08000000 - #define RDMAC_MODE_IPV6_LSO_EN 0x10000000 -+#define RDMAC_MODE_H2BNC_VLAN_DET 0x20000000 - #define RDMAC_STATUS 0x00004804 - #define RDMAC_STATUS_TGTABORT 0x00000004 - #define RDMAC_STATUS_MSTABORT 0x00000008 -@@ -1609,6 +1623,8 @@ - #define GRC_MODE_WSWAP_NONFRM_DATA 0x00000004 - #define GRC_MODE_BSWAP_DATA 0x00000010 - #define GRC_MODE_WSWAP_DATA 0x00000020 -+#define GRC_MODE_BYTE_SWAP_B2HRX_DATA 0x00000040 -+#define GRC_MODE_WORD_SWAP_B2HRX_DATA 0x00000080 - #define GRC_MODE_SPLITHDR 0x00000100 - #define GRC_MODE_NOFRM_CRACKING 0x00000200 - #define GRC_MODE_INCL_CRC 0x00000400 -@@ -1616,8 +1632,10 @@ - #define GRC_MODE_NOIRQ_ON_SENDS 0x00002000 - #define GRC_MODE_NOIRQ_ON_RCV 0x00004000 - #define GRC_MODE_FORCE_PCI32BIT 0x00008000 -+#define GRC_MODE_B2HRX_ENABLE 0x00008000 - #define GRC_MODE_HOST_STACKUP 0x00010000 - #define GRC_MODE_HOST_SENDBDS 0x00020000 -+#define GRC_MODE_HTX2B_ENABLE 0x00040000 - #define GRC_MODE_NO_TX_PHDR_CSUM 0x00100000 - #define GRC_MODE_NVRAM_WR_ENABLE 0x00200000 - #define GRC_MODE_PCIE_TL_SEL 0x00000000 -@@ -1814,6 +1832,38 @@ - #define FLASH_5717VENDOR_ATMEL_45USPT 0x03400000 - #define FLASH_5717VENDOR_ST_25USPT 0x03400002 - #define FLASH_5717VENDOR_ST_45USPT 0x03400001 -+#define FLASH_5720_EEPROM_HD 0x00000001 -+#define FLASH_5720_EEPROM_LD 0x00000003 -+#define FLASH_5720VENDOR_M_ATMEL_DB011D 0x01000000 -+#define FLASH_5720VENDOR_M_ATMEL_DB021D 0x01000002 -+#define FLASH_5720VENDOR_M_ATMEL_DB041D 0x01000001 -+#define FLASH_5720VENDOR_M_ATMEL_DB081D 0x01000003 -+#define FLASH_5720VENDOR_M_ST_M25PE10 0x02000000 -+#define FLASH_5720VENDOR_M_ST_M25PE20 0x02000002 -+#define FLASH_5720VENDOR_M_ST_M25PE40 0x02000001 -+#define FLASH_5720VENDOR_M_ST_M25PE80 0x02000003 -+#define FLASH_5720VENDOR_M_ST_M45PE10 0x03000000 -+#define FLASH_5720VENDOR_M_ST_M45PE20 0x03000002 -+#define FLASH_5720VENDOR_M_ST_M45PE40 0x03000001 -+#define FLASH_5720VENDOR_M_ST_M45PE80 0x03000003 -+#define FLASH_5720VENDOR_A_ATMEL_DB011B 0x01800000 -+#define FLASH_5720VENDOR_A_ATMEL_DB021B 0x01800002 -+#define FLASH_5720VENDOR_A_ATMEL_DB041B 0x01800001 -+#define FLASH_5720VENDOR_A_ATMEL_DB011D 0x01c00000 -+#define FLASH_5720VENDOR_A_ATMEL_DB021D 0x01c00002 -+#define FLASH_5720VENDOR_A_ATMEL_DB041D 0x01c00001 -+#define FLASH_5720VENDOR_A_ATMEL_DB081D 0x01c00003 -+#define FLASH_5720VENDOR_A_ST_M25PE10 0x02800000 -+#define FLASH_5720VENDOR_A_ST_M25PE20 0x02800002 -+#define FLASH_5720VENDOR_A_ST_M25PE40 0x02800001 -+#define FLASH_5720VENDOR_A_ST_M25PE80 0x02800003 -+#define FLASH_5720VENDOR_A_ST_M45PE10 0x02c00000 -+#define FLASH_5720VENDOR_A_ST_M45PE20 0x02c00002 -+#define FLASH_5720VENDOR_A_ST_M45PE40 0x02c00001 -+#define FLASH_5720VENDOR_A_ST_M45PE80 0x02c00003 -+#define FLASH_5720VENDOR_ATMEL_45USPT 0x03c00000 -+#define FLASH_5720VENDOR_ST_25USPT 0x03c00002 -+#define FLASH_5720VENDOR_ST_45USPT 0x03c00001 - #define NVRAM_CFG1_5752PAGE_SIZE_MASK 0x70000000 - #define FLASH_5752PAGE_SIZE_256 0x00000000 - #define FLASH_5752PAGE_SIZE_512 0x10000000 -@@ -2889,6 +2939,7 @@ - #define TG3_FLG3_5701_DMA_BUG 0x00000008 - #define TG3_FLG3_USE_PHYLIB 0x00000010 - #define TG3_FLG3_MDIOBUS_INITED 0x00000020 -+#define TG3_FLG3_LRG_PROD_RING_CAP 0x00000080 - #define TG3_FLG3_RGMII_INBAND_DISABLE 0x00000100 - #define TG3_FLG3_RGMII_EXT_IBND_RX_EN 0x00000200 - #define TG3_FLG3_RGMII_EXT_IBND_TX_EN 0x00000400 -@@ -2902,7 +2953,8 @@ - #define TG3_FLG3_SHORT_DMA_BUG 0x00200000 - #define TG3_FLG3_USE_JUMBO_BDFLAG 0x00400000 - #define TG3_FLG3_L1PLLPD_EN 0x00800000 --#define TG3_FLG3_5717_PLUS 0x01000000 -+#define TG3_FLG3_57765_PLUS 0x01000000 -+#define TG3_FLG3_5717_PLUS 0x04000000 - - struct timer_list timer; - u16 timer_counter; -@@ -2974,6 +3026,7 @@ - #define TG3_PHY_ID_BCM5718S 0xbc050ff0 - #define TG3_PHY_ID_BCM57765 0x5c0d8a40 - #define TG3_PHY_ID_BCM5719C 0x5c0d8a20 -+#define TG3_PHY_ID_BCM5720C 0x5c0d8b60 - #define TG3_PHY_ID_BCM5906 0xdc00ac40 - #define TG3_PHY_ID_BCM8002 0x60010140 - #define TG3_PHY_ID_INVALID 0xffffffff -@@ -3040,6 +3093,7 @@ - - int nvram_lock_cnt; - u32 nvram_size; -+#define TG3_NVRAM_SIZE_2KB 0x00000800 - #define TG3_NVRAM_SIZE_64KB 0x00010000 - #define TG3_NVRAM_SIZE_128KB 0x00020000 - #define TG3_NVRAM_SIZE_256KB 0x00040000 -@@ -3055,6 +3109,9 @@ - #define JEDEC_SAIFUN 0x4f - #define JEDEC_SST 0xbf - -+#define ATMEL_AT24C02_CHIP_SIZE TG3_NVRAM_SIZE_2KB -+#define ATMEL_AT24C02_PAGE_SIZE (8) -+ - #define ATMEL_AT24C64_CHIP_SIZE TG3_NVRAM_SIZE_64KB - #define ATMEL_AT24C64_PAGE_SIZE (32) -