aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/tg3.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/tg3.h')
-rw-r--r--drivers/net/tg3.h256
1 files changed, 183 insertions, 73 deletions
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h
index bab7940158e6..574a1cc4d353 100644
--- a/drivers/net/tg3.h
+++ b/drivers/net/tg3.h
@@ -4,6 +4,7 @@
4 * Copyright (C) 2001, 2002, 2003, 2004 David S. Miller (davem@redhat.com) 4 * Copyright (C) 2001, 2002, 2003, 2004 David S. Miller (davem@redhat.com)
5 * Copyright (C) 2001 Jeff Garzik (jgarzik@pobox.com) 5 * Copyright (C) 2001 Jeff Garzik (jgarzik@pobox.com)
6 * Copyright (C) 2004 Sun Microsystems Inc. 6 * Copyright (C) 2004 Sun Microsystems Inc.
7 * Copyright (C) 2007-2010 Broadcom Corporation.
7 */ 8 */
8 9
9#ifndef _T3_H 10#ifndef _T3_H
@@ -46,11 +47,48 @@
46#define TG3PCI_DEVICE_TIGON3_57788 0x1691 47#define TG3PCI_DEVICE_TIGON3_57788 0x1691
47#define TG3PCI_DEVICE_TIGON3_5785_G 0x1699 /* GPHY */ 48#define TG3PCI_DEVICE_TIGON3_5785_G 0x1699 /* GPHY */
48#define TG3PCI_DEVICE_TIGON3_5785_F 0x16a0 /* 10/100 only */ 49#define TG3PCI_DEVICE_TIGON3_5785_F 0x16a0 /* 10/100 only */
49#define TG3PCI_DEVICE_TIGON3_5717C 0x1655 50#define TG3PCI_DEVICE_TIGON3_5717 0x1655
50#define TG3PCI_DEVICE_TIGON3_5717S 0x1656 51#define TG3PCI_DEVICE_TIGON3_5718 0x1656
51#define TG3PCI_DEVICE_TIGON3_5718C 0x1665 52#define TG3PCI_DEVICE_TIGON3_5724 0x165c
52#define TG3PCI_DEVICE_TIGON3_5718S 0x1666 53#define TG3PCI_DEVICE_TIGON3_57781 0x16b1
53/* 0x04 --> 0x64 unused */ 54#define TG3PCI_DEVICE_TIGON3_57785 0x16b5
55#define TG3PCI_DEVICE_TIGON3_57761 0x16b0
56#define TG3PCI_DEVICE_TIGON3_57765 0x16b4
57#define TG3PCI_DEVICE_TIGON3_57791 0x16b2
58#define TG3PCI_DEVICE_TIGON3_57795 0x16b6
59/* 0x04 --> 0x2c unused */
60#define TG3PCI_SUBVENDOR_ID_BROADCOM PCI_VENDOR_ID_BROADCOM
61#define TG3PCI_SUBDEVICE_ID_BROADCOM_95700A6 0x1644
62#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701A5 0x0001
63#define TG3PCI_SUBDEVICE_ID_BROADCOM_95700T6 0x0002
64#define TG3PCI_SUBDEVICE_ID_BROADCOM_95700A9 0x0003
65#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701T1 0x0005
66#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701T8 0x0006
67#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701A7 0x0007
68#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701A10 0x0008
69#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701A12 0x8008
70#define TG3PCI_SUBDEVICE_ID_BROADCOM_95703AX1 0x0009
71#define TG3PCI_SUBDEVICE_ID_BROADCOM_95703AX2 0x8009
72#define TG3PCI_SUBVENDOR_ID_3COM PCI_VENDOR_ID_3COM
73#define TG3PCI_SUBDEVICE_ID_3COM_3C996T 0x1000
74#define TG3PCI_SUBDEVICE_ID_3COM_3C996BT 0x1006
75#define TG3PCI_SUBDEVICE_ID_3COM_3C996SX 0x1004
76#define TG3PCI_SUBDEVICE_ID_3COM_3C1000T 0x1007
77#define TG3PCI_SUBDEVICE_ID_3COM_3C940BR01 0x1008
78#define TG3PCI_SUBVENDOR_ID_DELL PCI_VENDOR_ID_DELL
79#define TG3PCI_SUBDEVICE_ID_DELL_VIPER 0x00d1
80#define TG3PCI_SUBDEVICE_ID_DELL_JAGUAR 0x0106
81#define TG3PCI_SUBDEVICE_ID_DELL_MERLOT 0x0109
82#define TG3PCI_SUBDEVICE_ID_DELL_SLIM_MERLOT 0x010a
83#define TG3PCI_SUBVENDOR_ID_COMPAQ PCI_VENDOR_ID_COMPAQ
84#define TG3PCI_SUBDEVICE_ID_COMPAQ_BANSHEE 0x007c
85#define TG3PCI_SUBDEVICE_ID_COMPAQ_BANSHEE_2 0x009a
86#define TG3PCI_SUBDEVICE_ID_COMPAQ_CHANGELING 0x007d
87#define TG3PCI_SUBDEVICE_ID_COMPAQ_NC7780 0x0085
88#define TG3PCI_SUBDEVICE_ID_COMPAQ_NC7780_2 0x0099
89#define TG3PCI_SUBVENDOR_ID_IBM PCI_VENDOR_ID_IBM
90#define TG3PCI_SUBDEVICE_ID_IBM_5703SAX2 0x0281
91/* 0x30 --> 0x64 unused */
54#define TG3PCI_MSI_DATA 0x00000064 92#define TG3PCI_MSI_DATA 0x00000064
55/* 0x66 --> 0x68 unused */ 93/* 0x66 --> 0x68 unused */
56#define TG3PCI_MISC_HOST_CTRL 0x00000068 94#define TG3PCI_MISC_HOST_CTRL 0x00000068
@@ -103,6 +141,8 @@
103#define CHIPREV_ID_5906_A1 0xc001 141#define CHIPREV_ID_5906_A1 0xc001
104#define CHIPREV_ID_57780_A0 0x57780000 142#define CHIPREV_ID_57780_A0 0x57780000
105#define CHIPREV_ID_57780_A1 0x57780001 143#define CHIPREV_ID_57780_A1 0x57780001
144#define CHIPREV_ID_5717_A0 0x05717000
145#define CHIPREV_ID_57765_A0 0x57785000
106#define GET_ASIC_REV(CHIP_REV_ID) ((CHIP_REV_ID) >> 12) 146#define GET_ASIC_REV(CHIP_REV_ID) ((CHIP_REV_ID) >> 12)
107#define ASIC_REV_5700 0x07 147#define ASIC_REV_5700 0x07
108#define ASIC_REV_5701 0x00 148#define ASIC_REV_5701 0x00
@@ -122,6 +162,7 @@
122#define ASIC_REV_5785 0x5785 162#define ASIC_REV_5785 0x5785
123#define ASIC_REV_57780 0x57780 163#define ASIC_REV_57780 0x57780
124#define ASIC_REV_5717 0x5717 164#define ASIC_REV_5717 0x5717
165#define ASIC_REV_57765 0x57785
125#define GET_CHIP_REV(CHIP_REV_ID) ((CHIP_REV_ID) >> 8) 166#define GET_CHIP_REV(CHIP_REV_ID) ((CHIP_REV_ID) >> 8)
126#define CHIPREV_5700_AX 0x70 167#define CHIPREV_5700_AX 0x70
127#define CHIPREV_5700_BX 0x71 168#define CHIPREV_5700_BX 0x71
@@ -141,8 +182,7 @@
141#define METAL_REV_B1 0x01 182#define METAL_REV_B1 0x01
142#define METAL_REV_B2 0x02 183#define METAL_REV_B2 0x02
143#define TG3PCI_DMA_RW_CTRL 0x0000006c 184#define TG3PCI_DMA_RW_CTRL 0x0000006c
144#define DMA_RWCTRL_MIN_DMA 0x000000ff 185#define DMA_RWCTRL_DIS_CACHE_ALIGNMENT 0x00000001
145#define DMA_RWCTRL_MIN_DMA_SHIFT 0
146#define DMA_RWCTRL_READ_BNDRY_MASK 0x00000700 186#define DMA_RWCTRL_READ_BNDRY_MASK 0x00000700
147#define DMA_RWCTRL_READ_BNDRY_DISAB 0x00000000 187#define DMA_RWCTRL_READ_BNDRY_DISAB 0x00000000
148#define DMA_RWCTRL_READ_BNDRY_16 0x00000100 188#define DMA_RWCTRL_READ_BNDRY_16 0x00000100
@@ -221,6 +261,7 @@
221/* 0xc0 --> 0xf4 unused */ 261/* 0xc0 --> 0xf4 unused */
222 262
223#define TG3PCI_GEN2_PRODID_ASICREV 0x000000f4 263#define TG3PCI_GEN2_PRODID_ASICREV 0x000000f4
264#define TG3PCI_GEN15_PRODID_ASICREV 0x000000fc
224/* 0xf8 --> 0x200 unused */ 265/* 0xf8 --> 0x200 unused */
225 266
226#define TG3_CORR_ERR_STAT 0x00000110 267#define TG3_CORR_ERR_STAT 0x00000110
@@ -242,7 +283,11 @@
242#define MAILBOX_GENERAL_7 0x00000258 /* 64-bit */ 283#define MAILBOX_GENERAL_7 0x00000258 /* 64-bit */
243#define MAILBOX_RELOAD_STAT 0x00000260 /* 64-bit */ 284#define MAILBOX_RELOAD_STAT 0x00000260 /* 64-bit */
244#define MAILBOX_RCV_STD_PROD_IDX 0x00000268 /* 64-bit */ 285#define MAILBOX_RCV_STD_PROD_IDX 0x00000268 /* 64-bit */
286#define TG3_RX_STD_PROD_IDX_REG (MAILBOX_RCV_STD_PROD_IDX + \
287 TG3_64BIT_REG_LOW)
245#define MAILBOX_RCV_JUMBO_PROD_IDX 0x00000270 /* 64-bit */ 288#define MAILBOX_RCV_JUMBO_PROD_IDX 0x00000270 /* 64-bit */
289#define TG3_RX_JMB_PROD_IDX_REG (MAILBOX_RCV_JUMBO_PROD_IDX + \
290 TG3_64BIT_REG_LOW)
246#define MAILBOX_RCV_MINI_PROD_IDX 0x00000278 /* 64-bit */ 291#define MAILBOX_RCV_MINI_PROD_IDX 0x00000278 /* 64-bit */
247#define MAILBOX_RCVRET_CON_IDX_0 0x00000280 /* 64-bit */ 292#define MAILBOX_RCVRET_CON_IDX_0 0x00000280 /* 64-bit */
248#define MAILBOX_RCVRET_CON_IDX_1 0x00000288 /* 64-bit */ 293#define MAILBOX_RCVRET_CON_IDX_1 0x00000288 /* 64-bit */
@@ -1043,6 +1088,8 @@
1043#define CPMU_MUTEX_REQ_DRIVER 0x00001000 1088#define CPMU_MUTEX_REQ_DRIVER 0x00001000
1044#define TG3_CPMU_MUTEX_GNT 0x00003660 1089#define TG3_CPMU_MUTEX_GNT 0x00003660
1045#define CPMU_MUTEX_GNT_DRIVER 0x00001000 1090#define CPMU_MUTEX_GNT_DRIVER 0x00001000
1091#define TG3_CPMU_PHY_STRAP 0x00003664
1092#define TG3_CPMU_PHY_STRAP_IS_SERDES 0x00000020
1046/* 0x3664 --> 0x3800 unused */ 1093/* 0x3664 --> 0x3800 unused */
1047 1094
1048/* Mbuf cluster free registers */ 1095/* Mbuf cluster free registers */
@@ -1192,14 +1239,18 @@
1192#define DEFAULT_MB_MACRX_LOW_WATER 0x00000020 1239#define DEFAULT_MB_MACRX_LOW_WATER 0x00000020
1193#define DEFAULT_MB_MACRX_LOW_WATER_5705 0x00000010 1240#define DEFAULT_MB_MACRX_LOW_WATER_5705 0x00000010
1194#define DEFAULT_MB_MACRX_LOW_WATER_5906 0x00000004 1241#define DEFAULT_MB_MACRX_LOW_WATER_5906 0x00000004
1242#define DEFAULT_MB_MACRX_LOW_WATER_57765 0x0000002a
1195#define DEFAULT_MB_MACRX_LOW_WATER_JUMBO 0x00000098 1243#define DEFAULT_MB_MACRX_LOW_WATER_JUMBO 0x00000098
1196#define DEFAULT_MB_MACRX_LOW_WATER_JUMBO_5780 0x0000004b 1244#define DEFAULT_MB_MACRX_LOW_WATER_JUMBO_5780 0x0000004b
1245#define DEFAULT_MB_MACRX_LOW_WATER_JUMBO_57765 0x0000007e
1197#define BUFMGR_MB_HIGH_WATER 0x00004418 1246#define BUFMGR_MB_HIGH_WATER 0x00004418
1198#define DEFAULT_MB_HIGH_WATER 0x00000060 1247#define DEFAULT_MB_HIGH_WATER 0x00000060
1199#define DEFAULT_MB_HIGH_WATER_5705 0x00000060 1248#define DEFAULT_MB_HIGH_WATER_5705 0x00000060
1200#define DEFAULT_MB_HIGH_WATER_5906 0x00000010 1249#define DEFAULT_MB_HIGH_WATER_5906 0x00000010
1250#define DEFAULT_MB_HIGH_WATER_57765 0x000000a0
1201#define DEFAULT_MB_HIGH_WATER_JUMBO 0x0000017c 1251#define DEFAULT_MB_HIGH_WATER_JUMBO 0x0000017c
1202#define DEFAULT_MB_HIGH_WATER_JUMBO_5780 0x00000096 1252#define DEFAULT_MB_HIGH_WATER_JUMBO_5780 0x00000096
1253#define DEFAULT_MB_HIGH_WATER_JUMBO_57765 0x000000ea
1203#define BUFMGR_RX_MB_ALLOC_REQ 0x0000441c 1254#define BUFMGR_RX_MB_ALLOC_REQ 0x0000441c
1204#define BUFMGR_MB_ALLOC_BIT 0x10000000 1255#define BUFMGR_MB_ALLOC_BIT 0x10000000
1205#define BUFMGR_RX_MB_ALLOC_RESP 0x00004420 1256#define BUFMGR_RX_MB_ALLOC_RESP 0x00004420
@@ -1239,6 +1290,7 @@
1239#define RDMAC_MODE_MBUF_SBD_CRPT_ENAB 0x00002000 1290#define RDMAC_MODE_MBUF_SBD_CRPT_ENAB 0x00002000
1240#define RDMAC_MODE_FIFO_SIZE_128 0x00020000 1291#define RDMAC_MODE_FIFO_SIZE_128 0x00020000
1241#define RDMAC_MODE_FIFO_LONG_BURST 0x00030000 1292#define RDMAC_MODE_FIFO_LONG_BURST 0x00030000
1293#define RDMAC_MODE_MULT_DMA_RD_DIS 0x01000000
1242#define RDMAC_MODE_IPV4_LSO_EN 0x08000000 1294#define RDMAC_MODE_IPV4_LSO_EN 0x08000000
1243#define RDMAC_MODE_IPV6_LSO_EN 0x10000000 1295#define RDMAC_MODE_IPV6_LSO_EN 0x10000000
1244#define RDMAC_STATUS 0x00004804 1296#define RDMAC_STATUS 0x00004804
@@ -1264,8 +1316,9 @@
1264#define WDMAC_MODE_FIFOURUN_ENAB 0x00000080 1316#define WDMAC_MODE_FIFOURUN_ENAB 0x00000080
1265#define WDMAC_MODE_FIFOOREAD_ENAB 0x00000100 1317#define WDMAC_MODE_FIFOOREAD_ENAB 0x00000100
1266#define WDMAC_MODE_LNGREAD_ENAB 0x00000200 1318#define WDMAC_MODE_LNGREAD_ENAB 0x00000200
1267#define WDMAC_MODE_RX_ACCEL 0x00000400 1319#define WDMAC_MODE_RX_ACCEL 0x00000400
1268#define WDMAC_MODE_STATUS_TAG_FIX 0x20000000 1320#define WDMAC_MODE_STATUS_TAG_FIX 0x20000000
1321#define WDMAC_MODE_BURST_ALL_DATA 0xc0000000
1269#define WDMAC_STATUS 0x00004c04 1322#define WDMAC_STATUS 0x00004c04
1270#define WDMAC_STATUS_TGTABORT 0x00000004 1323#define WDMAC_STATUS_TGTABORT 0x00000004
1271#define WDMAC_STATUS_MSTABORT 0x00000008 1324#define WDMAC_STATUS_MSTABORT 0x00000008
@@ -1528,6 +1581,8 @@
1528#define GRC_MODE_HOST_SENDBDS 0x00020000 1581#define GRC_MODE_HOST_SENDBDS 0x00020000
1529#define GRC_MODE_NO_TX_PHDR_CSUM 0x00100000 1582#define GRC_MODE_NO_TX_PHDR_CSUM 0x00100000
1530#define GRC_MODE_NVRAM_WR_ENABLE 0x00200000 1583#define GRC_MODE_NVRAM_WR_ENABLE 0x00200000
1584#define GRC_MODE_PCIE_TL_SEL 0x00000000
1585#define GRC_MODE_PCIE_PL_SEL 0x00400000
1531#define GRC_MODE_NO_RX_PHDR_CSUM 0x00800000 1586#define GRC_MODE_NO_RX_PHDR_CSUM 0x00800000
1532#define GRC_MODE_IRQ_ON_TX_CPU_ATTN 0x01000000 1587#define GRC_MODE_IRQ_ON_TX_CPU_ATTN 0x01000000
1533#define GRC_MODE_IRQ_ON_RX_CPU_ATTN 0x02000000 1588#define GRC_MODE_IRQ_ON_RX_CPU_ATTN 0x02000000
@@ -1535,7 +1590,13 @@
1535#define GRC_MODE_IRQ_ON_DMA_ATTN 0x08000000 1590#define GRC_MODE_IRQ_ON_DMA_ATTN 0x08000000
1536#define GRC_MODE_IRQ_ON_FLOW_ATTN 0x10000000 1591#define GRC_MODE_IRQ_ON_FLOW_ATTN 0x10000000
1537#define GRC_MODE_4X_NIC_SEND_RINGS 0x20000000 1592#define GRC_MODE_4X_NIC_SEND_RINGS 0x20000000
1593#define GRC_MODE_PCIE_DL_SEL 0x20000000
1538#define GRC_MODE_MCAST_FRM_ENABLE 0x40000000 1594#define GRC_MODE_MCAST_FRM_ENABLE 0x40000000
1595#define GRC_MODE_PCIE_HI_1K_EN 0x80000000
1596#define GRC_MODE_PCIE_PORT_MASK (GRC_MODE_PCIE_TL_SEL | \
1597 GRC_MODE_PCIE_PL_SEL | \
1598 GRC_MODE_PCIE_DL_SEL | \
1599 GRC_MODE_PCIE_HI_1K_EN)
1539#define GRC_MISC_CFG 0x00006804 1600#define GRC_MISC_CFG 0x00006804
1540#define GRC_MISC_CFG_CORECLK_RESET 0x00000001 1601#define GRC_MISC_CFG_CORECLK_RESET 0x00000001
1541#define GRC_MISC_CFG_PRESCALAR_MASK 0x000000fe 1602#define GRC_MISC_CFG_PRESCALAR_MASK 0x000000fe
@@ -1789,6 +1850,11 @@
1789/* 0x7e74 --> 0x8000 unused */ 1850/* 0x7e74 --> 0x8000 unused */
1790 1851
1791 1852
1853/* Alternate PCIE definitions */
1854#define TG3_PCIE_TLDLPL_PORT 0x00007c00
1855#define TG3_PCIE_PL_LO_PHYCTL1 0x00000004
1856#define TG3_PCIE_PL_LO_PHYCTL1_L1PLLPD_EN 0x00001000
1857
1792/* OTP bit definitions */ 1858/* OTP bit definitions */
1793#define TG3_OTP_AGCTGT_MASK 0x000000e0 1859#define TG3_OTP_AGCTGT_MASK 0x000000e0
1794#define TG3_OTP_AGCTGT_SHIFT 1 1860#define TG3_OTP_AGCTGT_SHIFT 1
@@ -1809,6 +1875,11 @@
1809 1875
1810#define TG3_OTP_DEFAULT 0x286c1640 1876#define TG3_OTP_DEFAULT 0x286c1640
1811 1877
1878
1879/* Hardware Legacy NVRAM layout */
1880#define TG3_NVM_VPD_OFF 0x100
1881#define TG3_NVM_VPD_LEN 256
1882
1812/* Hardware Selfboot NVRAM layout */ 1883/* Hardware Selfboot NVRAM layout */
1813#define TG3_NVM_HWSB_CFG1 0x00000004 1884#define TG3_NVM_HWSB_CFG1 0x00000004
1814#define TG3_NVM_HWSB_CFG1_MAJMSK 0xf8000000 1885#define TG3_NVM_HWSB_CFG1_MAJMSK 0xf8000000
@@ -1825,6 +1896,8 @@
1825#define TG3_EEPROM_SB_REVISION_0 0x00000000 1896#define TG3_EEPROM_SB_REVISION_0 0x00000000
1826#define TG3_EEPROM_SB_REVISION_2 0x00020000 1897#define TG3_EEPROM_SB_REVISION_2 0x00020000
1827#define TG3_EEPROM_SB_REVISION_3 0x00030000 1898#define TG3_EEPROM_SB_REVISION_3 0x00030000
1899#define TG3_EEPROM_SB_REVISION_4 0x00040000
1900#define TG3_EEPROM_SB_REVISION_5 0x00050000
1828#define TG3_EEPROM_MAGIC_HW 0xabcd 1901#define TG3_EEPROM_MAGIC_HW 0xabcd
1829#define TG3_EEPROM_MAGIC_HW_MSK 0xffff 1902#define TG3_EEPROM_MAGIC_HW_MSK 0xffff
1830 1903
@@ -1842,6 +1915,8 @@
1842#define TG3_EEPROM_SB_F1R2_EDH_OFF 0x14 1915#define TG3_EEPROM_SB_F1R2_EDH_OFF 0x14
1843#define TG3_EEPROM_SB_F1R2_MBA_OFF 0x10 1916#define TG3_EEPROM_SB_F1R2_MBA_OFF 0x10
1844#define TG3_EEPROM_SB_F1R3_EDH_OFF 0x18 1917#define TG3_EEPROM_SB_F1R3_EDH_OFF 0x18
1918#define TG3_EEPROM_SB_F1R4_EDH_OFF 0x1c
1919#define TG3_EEPROM_SB_F1R5_EDH_OFF 0x20
1845#define TG3_EEPROM_SB_EDH_MAJ_MASK 0x00000700 1920#define TG3_EEPROM_SB_EDH_MAJ_MASK 0x00000700
1846#define TG3_EEPROM_SB_EDH_MAJ_SHFT 8 1921#define TG3_EEPROM_SB_EDH_MAJ_SHFT 8
1847#define TG3_EEPROM_SB_EDH_MIN_MASK 0x000000ff 1922#define TG3_EEPROM_SB_EDH_MIN_MASK 0x000000ff
@@ -1936,7 +2011,7 @@
1936 2011
1937#define NIC_SRAM_DATA_CFG_4 0x00000d60 2012#define NIC_SRAM_DATA_CFG_4 0x00000d60
1938#define NIC_SRAM_GMII_MODE 0x00000002 2013#define NIC_SRAM_GMII_MODE 0x00000002
1939#define NIC_SRAM_RGMII_STD_IBND_DISABLE 0x00000004 2014#define NIC_SRAM_RGMII_INBAND_DISABLE 0x00000004
1940#define NIC_SRAM_RGMII_EXT_IBND_RX_EN 0x00000008 2015#define NIC_SRAM_RGMII_EXT_IBND_RX_EN 0x00000008
1941#define NIC_SRAM_RGMII_EXT_IBND_TX_EN 0x00000010 2016#define NIC_SRAM_RGMII_EXT_IBND_TX_EN 0x00000010
1942 2017
@@ -1953,10 +2028,34 @@
1953#define NIC_SRAM_MBUF_POOL_BASE5705 0x00010000 2028#define NIC_SRAM_MBUF_POOL_BASE5705 0x00010000
1954#define NIC_SRAM_MBUF_POOL_SIZE5705 0x0000e000 2029#define NIC_SRAM_MBUF_POOL_SIZE5705 0x0000e000
1955 2030
2031
1956/* Currently this is fixed. */ 2032/* Currently this is fixed. */
1957#define PHY_ADDR 0x01 2033#define TG3_PHY_PCIE_ADDR 0x00
2034#define TG3_PHY_MII_ADDR 0x01
2035
2036
2037/*** Tigon3 specific PHY PCIE registers. ***/
2038
2039#define TG3_PCIEPHY_BLOCK_ADDR 0x1f
2040#define TG3_PCIEPHY_XGXS_BLK1 0x0801
2041#define TG3_PCIEPHY_TXB_BLK 0x0861
2042#define TG3_PCIEPHY_BLOCK_SHIFT 4
2043
2044/* TG3_PCIEPHY_TXB_BLK */
2045#define TG3_PCIEPHY_TX0CTRL1 0x15
2046#define TG3_PCIEPHY_TX0CTRL1_TXOCM 0x0003
2047#define TG3_PCIEPHY_TX0CTRL1_RDCTL 0x0008
2048#define TG3_PCIEPHY_TX0CTRL1_TXCMV 0x0030
2049#define TG3_PCIEPHY_TX0CTRL1_TKSEL 0x0040
2050#define TG3_PCIEPHY_TX0CTRL1_NB_EN 0x0400
2051
2052/* TG3_PCIEPHY_XGXS_BLK1 */
2053#define TG3_PCIEPHY_PWRMGMT4 0x1a
2054#define TG3_PCIEPHY_PWRMGMT4_L1PLLPD_EN 0x0038
2055#define TG3_PCIEPHY_PWRMGMT4_LOWPWR_EN 0x4000
2056
1958 2057
1959/* Tigon3 specific PHY MII registers. */ 2058/*** Tigon3 specific PHY MII registers. ***/
1960#define TG3_BMCR_SPEED1000 0x0040 2059#define TG3_BMCR_SPEED1000 0x0040
1961 2060
1962#define MII_TG3_CTRL 0x09 /* 1000-baseT control register */ 2061#define MII_TG3_CTRL 0x09 /* 1000-baseT control register */
@@ -2049,12 +2148,18 @@
2049 2148
2050/* Fast Ethernet Tranceiver definitions */ 2149/* Fast Ethernet Tranceiver definitions */
2051#define MII_TG3_FET_PTEST 0x17 2150#define MII_TG3_FET_PTEST 0x17
2151#define MII_TG3_FET_PTEST_FRC_TX_LINK 0x1000
2152#define MII_TG3_FET_PTEST_FRC_TX_LOCK 0x0800
2153
2052#define MII_TG3_FET_TEST 0x1f 2154#define MII_TG3_FET_TEST 0x1f
2053#define MII_TG3_FET_SHADOW_EN 0x0080 2155#define MII_TG3_FET_SHADOW_EN 0x0080
2054 2156
2055#define MII_TG3_FET_SHDW_MISCCTRL 0x10 2157#define MII_TG3_FET_SHDW_MISCCTRL 0x10
2056#define MII_TG3_FET_SHDW_MISCCTRL_MDIX 0x4000 2158#define MII_TG3_FET_SHDW_MISCCTRL_MDIX 0x4000
2057 2159
2160#define MII_TG3_FET_SHDW_AUXMODE4 0x1a
2161#define MII_TG3_FET_SHDW_AUXMODE4_SBPD 0x0008
2162
2058#define MII_TG3_FET_SHDW_AUXSTAT2 0x1b 2163#define MII_TG3_FET_SHDW_AUXSTAT2 0x1b
2059#define MII_TG3_FET_SHDW_AUXSTAT2_APD 0x0020 2164#define MII_TG3_FET_SHDW_AUXSTAT2_APD 0x0020
2060 2165
@@ -2410,10 +2515,6 @@ struct ring_info {
2410 DECLARE_PCI_UNMAP_ADDR(mapping) 2515 DECLARE_PCI_UNMAP_ADDR(mapping)
2411}; 2516};
2412 2517
2413struct tx_ring_info {
2414 struct sk_buff *skb;
2415};
2416
2417struct tg3_config_info { 2518struct tg3_config_info {
2418 u32 flags; 2519 u32 flags;
2419}; 2520};
@@ -2542,8 +2643,10 @@ struct tg3_ethtool_stats {
2542}; 2643};
2543 2644
2544struct tg3_rx_prodring_set { 2645struct tg3_rx_prodring_set {
2545 u32 rx_std_ptr; 2646 u32 rx_std_prod_idx;
2546 u32 rx_jmb_ptr; 2647 u32 rx_std_cons_idx;
2648 u32 rx_jmb_prod_idx;
2649 u32 rx_jmb_cons_idx;
2547 struct tg3_rx_buffer_desc *rx_std; 2650 struct tg3_rx_buffer_desc *rx_std;
2548 struct tg3_ext_rx_buffer_desc *rx_jmb; 2651 struct tg3_ext_rx_buffer_desc *rx_jmb;
2549 struct ring_info *rx_std_buffers; 2652 struct ring_info *rx_std_buffers;
@@ -2571,10 +2674,11 @@ struct tg3_napi {
2571 u32 consmbox; 2674 u32 consmbox;
2572 u32 rx_rcb_ptr; 2675 u32 rx_rcb_ptr;
2573 u16 *rx_rcb_prod_idx; 2676 u16 *rx_rcb_prod_idx;
2677 struct tg3_rx_prodring_set *prodring;
2574 2678
2575 struct tg3_rx_buffer_desc *rx_rcb; 2679 struct tg3_rx_buffer_desc *rx_rcb;
2576 struct tg3_tx_buffer_desc *tx_ring; 2680 struct tg3_tx_buffer_desc *tx_ring;
2577 struct tx_ring_info *tx_buffers; 2681 struct ring_info *tx_buffers;
2578 2682
2579 dma_addr_t status_mapping; 2683 dma_addr_t status_mapping;
2580 dma_addr_t rx_rcb_mapping; 2684 dma_addr_t rx_rcb_mapping;
@@ -2636,6 +2740,7 @@ struct tg3 {
2636 struct net_device *dev; 2740 struct net_device *dev;
2637 struct pci_dev *pdev; 2741 struct pci_dev *pdev;
2638 2742
2743 u32 coal_now;
2639 u32 msg_enable; 2744 u32 msg_enable;
2640 2745
2641 /* begin "tx thread" cacheline section */ 2746 /* begin "tx thread" cacheline section */
@@ -2654,7 +2759,7 @@ struct tg3 {
2654 struct vlan_group *vlgrp; 2759 struct vlan_group *vlgrp;
2655#endif 2760#endif
2656 2761
2657 struct tg3_rx_prodring_set prodring[1]; 2762 struct tg3_rx_prodring_set prodring[TG3_IRQ_MAX_VECS];
2658 2763
2659 2764
2660 /* begin "everything else" cacheline(s) section */ 2765 /* begin "everything else" cacheline(s) section */
@@ -2725,7 +2830,7 @@ struct tg3 {
2725#define TG3_FLG2_SERDES_PREEMPHASIS 0x00020000 2830#define TG3_FLG2_SERDES_PREEMPHASIS 0x00020000
2726#define TG3_FLG2_5705_PLUS 0x00040000 2831#define TG3_FLG2_5705_PLUS 0x00040000
2727#define TG3_FLG2_5750_PLUS 0x00080000 2832#define TG3_FLG2_5750_PLUS 0x00080000
2728#define TG3_FLG2_PROTECTED_NVRAM 0x00100000 2833#define TG3_FLG2_HW_TSO_3 0x00100000
2729#define TG3_FLG2_USING_MSI 0x00200000 2834#define TG3_FLG2_USING_MSI 0x00200000
2730#define TG3_FLG2_USING_MSIX 0x00400000 2835#define TG3_FLG2_USING_MSIX 0x00400000
2731#define TG3_FLG2_USING_MSI_OR_MSIX (TG3_FLG2_USING_MSI | \ 2836#define TG3_FLG2_USING_MSI_OR_MSIX (TG3_FLG2_USING_MSI | \
@@ -2737,7 +2842,9 @@ struct tg3 {
2737#define TG3_FLG2_ICH_WORKAROUND 0x02000000 2842#define TG3_FLG2_ICH_WORKAROUND 0x02000000
2738#define TG3_FLG2_5780_CLASS 0x04000000 2843#define TG3_FLG2_5780_CLASS 0x04000000
2739#define TG3_FLG2_HW_TSO_2 0x08000000 2844#define TG3_FLG2_HW_TSO_2 0x08000000
2740#define TG3_FLG2_HW_TSO (TG3_FLG2_HW_TSO_1 | TG3_FLG2_HW_TSO_2) 2845#define TG3_FLG2_HW_TSO (TG3_FLG2_HW_TSO_1 | \
2846 TG3_FLG2_HW_TSO_2 | \
2847 TG3_FLG2_HW_TSO_3)
2741#define TG3_FLG2_1SHOT_MSI 0x10000000 2848#define TG3_FLG2_1SHOT_MSI 0x10000000
2742#define TG3_FLG2_PHY_JITTER_BUG 0x20000000 2849#define TG3_FLG2_PHY_JITTER_BUG 0x20000000
2743#define TG3_FLG2_NO_FWARE_REPORTED 0x40000000 2850#define TG3_FLG2_NO_FWARE_REPORTED 0x40000000
@@ -2745,20 +2852,26 @@ struct tg3 {
2745 u32 tg3_flags3; 2852 u32 tg3_flags3;
2746#define TG3_FLG3_NO_NVRAM_ADDR_TRANS 0x00000001 2853#define TG3_FLG3_NO_NVRAM_ADDR_TRANS 0x00000001
2747#define TG3_FLG3_ENABLE_APE 0x00000002 2854#define TG3_FLG3_ENABLE_APE 0x00000002
2855#define TG3_FLG3_PROTECTED_NVRAM 0x00000004
2748#define TG3_FLG3_5701_DMA_BUG 0x00000008 2856#define TG3_FLG3_5701_DMA_BUG 0x00000008
2749#define TG3_FLG3_USE_PHYLIB 0x00000010 2857#define TG3_FLG3_USE_PHYLIB 0x00000010
2750#define TG3_FLG3_MDIOBUS_INITED 0x00000020 2858#define TG3_FLG3_MDIOBUS_INITED 0x00000020
2751#define TG3_FLG3_PHY_CONNECTED 0x00000080 2859#define TG3_FLG3_PHY_CONNECTED 0x00000080
2752#define TG3_FLG3_RGMII_STD_IBND_DISABLE 0x00000100 2860#define TG3_FLG3_RGMII_INBAND_DISABLE 0x00000100
2753#define TG3_FLG3_RGMII_EXT_IBND_RX_EN 0x00000200 2861#define TG3_FLG3_RGMII_EXT_IBND_RX_EN 0x00000200
2754#define TG3_FLG3_RGMII_EXT_IBND_TX_EN 0x00000400 2862#define TG3_FLG3_RGMII_EXT_IBND_TX_EN 0x00000400
2755#define TG3_FLG3_CLKREQ_BUG 0x00000800 2863#define TG3_FLG3_CLKREQ_BUG 0x00000800
2756#define TG3_FLG3_PHY_ENABLE_APD 0x00001000 2864#define TG3_FLG3_PHY_ENABLE_APD 0x00001000
2757#define TG3_FLG3_5755_PLUS 0x00002000 2865#define TG3_FLG3_5755_PLUS 0x00002000
2758#define TG3_FLG3_NO_NVRAM 0x00004000 2866#define TG3_FLG3_NO_NVRAM 0x00004000
2759#define TG3_FLG3_TOGGLE_10_100_L1PLLPD 0x00008000
2760#define TG3_FLG3_PHY_IS_FET 0x00010000 2867#define TG3_FLG3_PHY_IS_FET 0x00010000
2761#define TG3_FLG3_ENABLE_RSS 0x00020000 2868#define TG3_FLG3_ENABLE_RSS 0x00020000
2869#define TG3_FLG3_ENABLE_TSS 0x00040000
2870#define TG3_FLG3_4G_DMA_BNDRY_BUG 0x00080000
2871#define TG3_FLG3_40BIT_DMA_LIMIT_BUG 0x00100000
2872#define TG3_FLG3_SHORT_DMA_BUG 0x00200000
2873#define TG3_FLG3_USE_JUMBO_BDFLAG 0x00400000
2874#define TG3_FLG3_L1PLLPD_EN 0x00800000
2762 2875
2763 struct timer_list timer; 2876 struct timer_list timer;
2764 u16 timer_counter; 2877 u16 timer_counter;
@@ -2808,65 +2921,62 @@ struct tg3 {
2808 2921
2809 /* PHY info */ 2922 /* PHY info */
2810 u32 phy_id; 2923 u32 phy_id;
2811#define PHY_ID_MASK 0xfffffff0 2924#define TG3_PHY_ID_MASK 0xfffffff0
2812#define PHY_ID_BCM5400 0x60008040 2925#define TG3_PHY_ID_BCM5400 0x60008040
2813#define PHY_ID_BCM5401 0x60008050 2926#define TG3_PHY_ID_BCM5401 0x60008050
2814#define PHY_ID_BCM5411 0x60008070 2927#define TG3_PHY_ID_BCM5411 0x60008070
2815#define PHY_ID_BCM5701 0x60008110 2928#define TG3_PHY_ID_BCM5701 0x60008110
2816#define PHY_ID_BCM5703 0x60008160 2929#define TG3_PHY_ID_BCM5703 0x60008160
2817#define PHY_ID_BCM5704 0x60008190 2930#define TG3_PHY_ID_BCM5704 0x60008190
2818#define PHY_ID_BCM5705 0x600081a0 2931#define TG3_PHY_ID_BCM5705 0x600081a0
2819#define PHY_ID_BCM5750 0x60008180 2932#define TG3_PHY_ID_BCM5750 0x60008180
2820#define PHY_ID_BCM5752 0x60008100 2933#define TG3_PHY_ID_BCM5752 0x60008100
2821#define PHY_ID_BCM5714 0x60008340 2934#define TG3_PHY_ID_BCM5714 0x60008340
2822#define PHY_ID_BCM5780 0x60008350 2935#define TG3_PHY_ID_BCM5780 0x60008350
2823#define PHY_ID_BCM5755 0xbc050cc0 2936#define TG3_PHY_ID_BCM5755 0xbc050cc0
2824#define PHY_ID_BCM5787 0xbc050ce0 2937#define TG3_PHY_ID_BCM5787 0xbc050ce0
2825#define PHY_ID_BCM5756 0xbc050ed0 2938#define TG3_PHY_ID_BCM5756 0xbc050ed0
2826#define PHY_ID_BCM5784 0xbc050fa0 2939#define TG3_PHY_ID_BCM5784 0xbc050fa0
2827#define PHY_ID_BCM5761 0xbc050fd0 2940#define TG3_PHY_ID_BCM5761 0xbc050fd0
2828#define PHY_ID_BCM5906 0xdc00ac40 2941#define TG3_PHY_ID_BCM5718C 0x5c0d8a00
2829#define PHY_ID_BCM8002 0x60010140 2942#define TG3_PHY_ID_BCM5718S 0xbc050ff0
2830#define PHY_ID_INVALID 0xffffffff 2943#define TG3_PHY_ID_BCM57765 0x5c0d8a40
2831#define PHY_ID_REV_MASK 0x0000000f 2944#define TG3_PHY_ID_BCM5906 0xdc00ac40
2832#define PHY_REV_BCM5401_B0 0x1 2945#define TG3_PHY_ID_BCM8002 0x60010140
2833#define PHY_REV_BCM5401_B2 0x3 2946#define TG3_PHY_ID_INVALID 0xffffffff
2834#define PHY_REV_BCM5401_C0 0x6 2947
2835#define PHY_REV_BCM5411_X0 0x1 /* Found on Netgear GA302T */ 2948#define PHY_ID_RTL8211C 0x001cc910
2836#define TG3_PHY_ID_BCM50610 0x143bd60 2949#define PHY_ID_RTL8201E 0x00008200
2837#define TG3_PHY_ID_BCMAC131 0x143bc70 2950
2838#define TG3_PHY_ID_RTL8211C 0x001cc910 2951#define TG3_PHY_ID_REV_MASK 0x0000000f
2839#define TG3_PHY_ID_RTL8201E 0x00008200 2952#define TG3_PHY_REV_BCM5401_B0 0x1
2840#define TG3_PHY_ID_BCM57780 0x03625d90 2953
2841#define TG3_PHY_OUI_MASK 0xfffffc00 2954 /* This macro assumes the passed PHY ID is
2842#define TG3_PHY_OUI_1 0x00206000 2955 * already masked with TG3_PHY_ID_MASK.
2843#define TG3_PHY_OUI_2 0x0143bc00 2956 */
2844#define TG3_PHY_OUI_3 0x03625c00 2957#define TG3_KNOWN_PHY_ID(X) \
2958 ((X) == TG3_PHY_ID_BCM5400 || (X) == TG3_PHY_ID_BCM5401 || \
2959 (X) == TG3_PHY_ID_BCM5411 || (X) == TG3_PHY_ID_BCM5701 || \
2960 (X) == TG3_PHY_ID_BCM5703 || (X) == TG3_PHY_ID_BCM5704 || \
2961 (X) == TG3_PHY_ID_BCM5705 || (X) == TG3_PHY_ID_BCM5750 || \
2962 (X) == TG3_PHY_ID_BCM5752 || (X) == TG3_PHY_ID_BCM5714 || \
2963 (X) == TG3_PHY_ID_BCM5780 || (X) == TG3_PHY_ID_BCM5787 || \
2964 (X) == TG3_PHY_ID_BCM5755 || (X) == TG3_PHY_ID_BCM5756 || \
2965 (X) == TG3_PHY_ID_BCM5906 || (X) == TG3_PHY_ID_BCM5761 || \
2966 (X) == TG3_PHY_ID_BCM5718C || (X) == TG3_PHY_ID_BCM5718S || \
2967 (X) == TG3_PHY_ID_BCM57765 || (X) == TG3_PHY_ID_BCM8002)
2845 2968
2846 u32 led_ctrl; 2969 u32 led_ctrl;
2847 u32 phy_otp; 2970 u32 phy_otp;
2848 2971
2849 char board_part_number[24]; 2972#define TG3_BPN_SIZE 24
2850#define TG3_VER_SIZE 32 2973 char board_part_number[TG3_BPN_SIZE];
2974#define TG3_VER_SIZE ETHTOOL_FWVERS_LEN
2851 char fw_ver[TG3_VER_SIZE]; 2975 char fw_ver[TG3_VER_SIZE];
2852 u32 nic_sram_data_cfg; 2976 u32 nic_sram_data_cfg;
2853 u32 pci_clock_ctrl; 2977 u32 pci_clock_ctrl;
2854 struct pci_dev *pdev_peer; 2978 struct pci_dev *pdev_peer;
2855 2979
2856 /* This macro assumes the passed PHY ID is already masked
2857 * with PHY_ID_MASK.
2858 */
2859#define KNOWN_PHY_ID(X) \
2860 ((X) == PHY_ID_BCM5400 || (X) == PHY_ID_BCM5401 || \
2861 (X) == PHY_ID_BCM5411 || (X) == PHY_ID_BCM5701 || \
2862 (X) == PHY_ID_BCM5703 || (X) == PHY_ID_BCM5704 || \
2863 (X) == PHY_ID_BCM5705 || (X) == PHY_ID_BCM5750 || \
2864 (X) == PHY_ID_BCM5752 || (X) == PHY_ID_BCM5714 || \
2865 (X) == PHY_ID_BCM5780 || (X) == PHY_ID_BCM5787 || \
2866 (X) == PHY_ID_BCM5755 || (X) == PHY_ID_BCM5756 || \
2867 (X) == PHY_ID_BCM5906 || (X) == PHY_ID_BCM5761 || \
2868 (X) == PHY_ID_BCM8002)
2869
2870 struct tg3_hw_stats *hw_stats; 2980 struct tg3_hw_stats *hw_stats;
2871 dma_addr_t stats_mapping; 2981 dma_addr_t stats_mapping;
2872 struct work_struct reset_task; 2982 struct work_struct reset_task;