iPXE
drivers
net
igbvf
igbvf_defines.h
Go to the documentation of this file.
1
/*******************************************************************************
2
3
Intel(R) 82576 Virtual Function Linux driver
4
Copyright(c) 1999 - 2008 Intel Corporation.
5
6
This program is free software; you can redistribute it and/or modify it
7
under the terms and conditions of the GNU General Public License,
8
version 2, as published by the Free Software Foundation.
9
10
This program is distributed in the hope it will be useful, but WITHOUT
11
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13
more details.
14
15
You should have received a copy of the GNU General Public License along with
16
this program; if not, write to the Free Software Foundation, Inc.,
17
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18
19
The full GNU General Public License is included in this distribution in
20
the file called "COPYING".
21
22
Contact Information:
23
Linux NICS <linux.nics@intel.com>
24
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
25
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
26
27
*******************************************************************************/
28
29
FILE_LICENCE
( GPL2_ONLY );
30
31
#ifndef _IGBVF_DEFINES_H_
32
#define _IGBVF_DEFINES_H_
33
34
/* Number of Transmit and Receive Descriptors must be a multiple of 8 */
35
#define REQ_TX_DESCRIPTOR_MULTIPLE 8
36
#define REQ_RX_DESCRIPTOR_MULTIPLE 8
37
38
/* Definitions for power management and wakeup registers */
39
/* Wake Up Control */
40
#define E1000_WUC_APME 0x00000001
/* APM Enable */
41
#define E1000_WUC_PME_EN 0x00000002
/* PME Enable */
42
#define E1000_WUC_PME_STATUS 0x00000004
/* PME Status */
43
#define E1000_WUC_APMPME 0x00000008
/* Assert PME on APM Wakeup */
44
#define E1000_WUC_LSCWE 0x00000010
/* Link Status wake up enable */
45
#define E1000_WUC_LSCWO 0x00000020
/* Link Status wake up override */
46
#define E1000_WUC_SPM 0x80000000
/* Enable SPM */
47
#define E1000_WUC_PHY_WAKE 0x00000100
/* if PHY supports wakeup */
48
49
/* Wake Up Filter Control */
50
#define E1000_WUFC_LNKC 0x00000001
/* Link Status Change Wakeup Enable */
51
#define E1000_WUFC_MAG 0x00000002
/* Magic Packet Wakeup Enable */
52
#define E1000_WUFC_EX 0x00000004
/* Directed Exact Wakeup Enable */
53
#define E1000_WUFC_MC 0x00000008
/* Directed Multicast Wakeup Enable */
54
#define E1000_WUFC_BC 0x00000010
/* Broadcast Wakeup Enable */
55
#define E1000_WUFC_ARP 0x00000020
/* ARP Request Packet Wakeup Enable */
56
#define E1000_WUFC_IPV4 0x00000040
/* Directed IPv4 Packet Wakeup Enable */
57
#define E1000_WUFC_IPV6 0x00000080
/* Directed IPv6 Packet Wakeup Enable */
58
#define E1000_WUFC_IGNORE_TCO 0x00008000
/* Ignore WakeOn TCO packets */
59
#define E1000_WUFC_FLX0 0x00010000
/* Flexible Filter 0 Enable */
60
#define E1000_WUFC_FLX1 0x00020000
/* Flexible Filter 1 Enable */
61
#define E1000_WUFC_FLX2 0x00040000
/* Flexible Filter 2 Enable */
62
#define E1000_WUFC_FLX3 0x00080000
/* Flexible Filter 3 Enable */
63
#define E1000_WUFC_ALL_FILTERS 0x000F00FF
/* Mask for all wakeup filters */
64
#define E1000_WUFC_FLX_OFFSET 16
/* Offset to the Flexible Filters bits */
65
#define E1000_WUFC_FLX_FILTERS 0x000F0000
/*Mask for the 4 flexible filters */
66
67
/* Wake Up Status */
68
#define E1000_WUS_LNKC E1000_WUFC_LNKC
69
#define E1000_WUS_MAG E1000_WUFC_MAG
70
#define E1000_WUS_EX E1000_WUFC_EX
71
#define E1000_WUS_MC E1000_WUFC_MC
72
#define E1000_WUS_BC E1000_WUFC_BC
73
#define E1000_WUS_ARP E1000_WUFC_ARP
74
#define E1000_WUS_IPV4 E1000_WUFC_IPV4
75
#define E1000_WUS_IPV6 E1000_WUFC_IPV6
76
#define E1000_WUS_FLX0 E1000_WUFC_FLX0
77
#define E1000_WUS_FLX1 E1000_WUFC_FLX1
78
#define E1000_WUS_FLX2 E1000_WUFC_FLX2
79
#define E1000_WUS_FLX3 E1000_WUFC_FLX3
80
#define E1000_WUS_FLX_FILTERS E1000_WUFC_FLX_FILTERS
81
82
/* Wake Up Packet Length */
83
#define E1000_WUPL_LENGTH_MASK 0x0FFF
/* Only the lower 12 bits are valid */
84
85
/* Four Flexible Filters are supported */
86
#define E1000_FLEXIBLE_FILTER_COUNT_MAX 4
87
88
/* Each Flexible Filter is at most 128 (0x80) bytes in length */
89
#define E1000_FLEXIBLE_FILTER_SIZE_MAX 128
90
91
#define E1000_FFLT_SIZE E1000_FLEXIBLE_FILTER_COUNT_MAX
92
#define E1000_FFMT_SIZE E1000_FLEXIBLE_FILTER_SIZE_MAX
93
#define E1000_FFVT_SIZE E1000_FLEXIBLE_FILTER_SIZE_MAX
94
95
/* Extended Device Control */
96
#define E1000_CTRL_EXT_GPI0_EN 0x00000001
/* Maps SDP4 to GPI0 */
97
#define E1000_CTRL_EXT_GPI1_EN 0x00000002
/* Maps SDP5 to GPI1 */
98
#define E1000_CTRL_EXT_PHYINT_EN E1000_CTRL_EXT_GPI1_EN
99
#define E1000_CTRL_EXT_GPI2_EN 0x00000004
/* Maps SDP6 to GPI2 */
100
#define E1000_CTRL_EXT_GPI3_EN 0x00000008
/* Maps SDP7 to GPI3 */
101
/* Reserved (bits 4,5) in >= 82575 */
102
#define E1000_CTRL_EXT_SDP4_DATA 0x00000010
/* Value of SW Definable Pin 4 */
103
#define E1000_CTRL_EXT_SDP5_DATA 0x00000020
/* Value of SW Definable Pin 5 */
104
#define E1000_CTRL_EXT_PHY_INT E1000_CTRL_EXT_SDP5_DATA
105
#define E1000_CTRL_EXT_SDP6_DATA 0x00000040
/* Value of SW Definable Pin 6 */
106
#define E1000_CTRL_EXT_SDP3_DATA 0x00000080
/* Value of SW Definable Pin 3 */
107
/* SDP 4/5 (bits 8,9) are reserved in >= 82575 */
108
#define E1000_CTRL_EXT_SDP4_DIR 0x00000100
/* Direction of SDP4 0=in 1=out */
109
#define E1000_CTRL_EXT_SDP5_DIR 0x00000200
/* Direction of SDP5 0=in 1=out */
110
#define E1000_CTRL_EXT_SDP6_DIR 0x00000400
/* Direction of SDP6 0=in 1=out */
111
#define E1000_CTRL_EXT_SDP3_DIR 0x00000800
/* Direction of SDP3 0=in 1=out */
112
#define E1000_CTRL_EXT_ASDCHK 0x00001000
/* Initiate an ASD sequence */
113
#define E1000_CTRL_EXT_EE_RST 0x00002000
/* Reinitialize from EEPROM */
114
#define E1000_CTRL_EXT_IPS 0x00004000
/* Invert Power State */
115
#define E1000_CTRL_EXT_SPD_BYPS 0x00008000
/* Speed Select Bypass */
116
#define E1000_CTRL_EXT_RO_DIS 0x00020000
/* Relaxed Ordering disable */
117
#define E1000_CTRL_EXT_DMA_DYN_CLK_EN 0x00080000
/* DMA Dynamic Clock Gating */
118
#define E1000_CTRL_EXT_LINK_MODE_MASK 0x00C00000
119
#define E1000_CTRL_EXT_LINK_MODE_GMII 0x00000000
120
#define E1000_CTRL_EXT_LINK_MODE_TBI 0x00C00000
121
#define E1000_CTRL_EXT_LINK_MODE_KMRN 0x00000000
122
#define E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES 0x00C00000
123
#define E1000_CTRL_EXT_LINK_MODE_PCIX_SERDES 0x00800000
124
#define E1000_CTRL_EXT_LINK_MODE_SGMII 0x00800000
125
#define E1000_CTRL_EXT_EIAME 0x01000000
126
#define E1000_CTRL_EXT_IRCA 0x00000001
127
#define E1000_CTRL_EXT_WR_WMARK_MASK 0x03000000
128
#define E1000_CTRL_EXT_WR_WMARK_256 0x00000000
129
#define E1000_CTRL_EXT_WR_WMARK_320 0x01000000
130
#define E1000_CTRL_EXT_WR_WMARK_384 0x02000000
131
#define E1000_CTRL_EXT_WR_WMARK_448 0x03000000
132
#define E1000_CTRL_EXT_CANC 0x04000000
/* Int delay cancellation */
133
#define E1000_CTRL_EXT_DRV_LOAD 0x10000000
/* Driver loaded bit for FW */
134
/* IAME enable bit (27) was removed in >= 82575 */
135
#define E1000_CTRL_EXT_IAME 0x08000000
/* Int acknowledge Auto-mask */
136
#define E1000_CRTL_EXT_PB_PAREN 0x01000000
/* packet buffer parity error
137
* detection enabled */
138
#define E1000_CTRL_EXT_DF_PAREN 0x02000000
/* descriptor FIFO parity
139
* error detection enable */
140
#define E1000_CTRL_EXT_GHOST_PAREN 0x40000000
141
#define E1000_CTRL_EXT_PBA_CLR 0x80000000
/* PBA Clear */
142
#define E1000_I2CCMD_REG_ADDR_SHIFT 16
143
#define E1000_I2CCMD_REG_ADDR 0x00FF0000
144
#define E1000_I2CCMD_PHY_ADDR_SHIFT 24
145
#define E1000_I2CCMD_PHY_ADDR 0x07000000
146
#define E1000_I2CCMD_OPCODE_READ 0x08000000
147
#define E1000_I2CCMD_OPCODE_WRITE 0x00000000
148
#define E1000_I2CCMD_RESET 0x10000000
149
#define E1000_I2CCMD_READY 0x20000000
150
#define E1000_I2CCMD_INTERRUPT_ENA 0x40000000
151
#define E1000_I2CCMD_ERROR 0x80000000
152
#define E1000_MAX_SGMII_PHY_REG_ADDR 255
153
#define E1000_I2CCMD_PHY_TIMEOUT 200
154
155
/* Receive Descriptor bit definitions */
156
#define E1000_RXD_STAT_DD 0x01
/* Descriptor Done */
157
#define E1000_RXD_STAT_EOP 0x02
/* End of Packet */
158
#define E1000_RXD_STAT_IXSM 0x04
/* Ignore checksum */
159
#define E1000_RXD_STAT_VP 0x08
/* IEEE VLAN Packet */
160
#define E1000_RXD_STAT_UDPCS 0x10
/* UDP xsum calculated */
161
#define E1000_RXD_STAT_TCPCS 0x20
/* TCP xsum calculated */
162
#define E1000_RXD_STAT_IPCS 0x40
/* IP xsum calculated */
163
#define E1000_RXD_STAT_PIF 0x80
/* passed in-exact filter */
164
#define E1000_RXD_STAT_CRCV 0x100
/* Speculative CRC Valid */
165
#define E1000_RXD_STAT_IPIDV 0x200
/* IP identification valid */
166
#define E1000_RXD_STAT_UDPV 0x400
/* Valid UDP checksum */
167
#define E1000_RXD_STAT_DYNINT 0x800
/* Pkt caused INT via DYNINT */
168
#define E1000_RXD_STAT_ACK 0x8000
/* ACK Packet indication */
169
#define E1000_RXD_ERR_CE 0x01
/* CRC Error */
170
#define E1000_RXD_ERR_SE 0x02
/* Symbol Error */
171
#define E1000_RXD_ERR_SEQ 0x04
/* Sequence Error */
172
#define E1000_RXD_ERR_CXE 0x10
/* Carrier Extension Error */
173
#define E1000_RXD_ERR_TCPE 0x20
/* TCP/UDP Checksum Error */
174
#define E1000_RXD_ERR_IPE 0x40
/* IP Checksum Error */
175
#define E1000_RXD_ERR_RXE 0x80
/* Rx Data Error */
176
#define E1000_RXD_SPC_VLAN_MASK 0x0FFF
/* VLAN ID is in lower 12 bits */
177
#define E1000_RXD_SPC_PRI_MASK 0xE000
/* Priority is in upper 3 bits */
178
#define E1000_RXD_SPC_PRI_SHIFT 13
179
#define E1000_RXD_SPC_CFI_MASK 0x1000
/* CFI is bit 12 */
180
#define E1000_RXD_SPC_CFI_SHIFT 12
181
182
#define E1000_RXDEXT_STATERR_CE 0x01000000
183
#define E1000_RXDEXT_STATERR_SE 0x02000000
184
#define E1000_RXDEXT_STATERR_SEQ 0x04000000
185
#define E1000_RXDEXT_STATERR_CXE 0x10000000
186
#define E1000_RXDEXT_STATERR_TCPE 0x20000000
187
#define E1000_RXDEXT_STATERR_IPE 0x40000000
188
#define E1000_RXDEXT_STATERR_RXE 0x80000000
189
190
/* mask to determine if packets should be dropped due to frame errors */
191
#define E1000_RXD_ERR_FRAME_ERR_MASK ( \
192
E1000_RXD_ERR_CE | \
193
E1000_RXD_ERR_SE | \
194
E1000_RXD_ERR_SEQ | \
195
E1000_RXD_ERR_CXE | \
196
E1000_RXD_ERR_RXE)
197
198
/* Same mask, but for extended and packet split descriptors */
199
#define E1000_RXDEXT_ERR_FRAME_ERR_MASK ( \
200
E1000_RXDEXT_STATERR_CE | \
201
E1000_RXDEXT_STATERR_SE | \
202
E1000_RXDEXT_STATERR_SEQ | \
203
E1000_RXDEXT_STATERR_CXE | \
204
E1000_RXDEXT_STATERR_RXE)
205
206
#define E1000_MRQC_ENABLE_MASK 0x00000007
207
#define E1000_MRQC_ENABLE_RSS_2Q 0x00000001
208
#define E1000_MRQC_ENABLE_RSS_INT 0x00000004
209
#define E1000_MRQC_RSS_FIELD_MASK 0xFFFF0000
210
#define E1000_MRQC_RSS_FIELD_IPV4_TCP 0x00010000
211
#define E1000_MRQC_RSS_FIELD_IPV4 0x00020000
212
#define E1000_MRQC_RSS_FIELD_IPV6_TCP_EX 0x00040000
213
#define E1000_MRQC_RSS_FIELD_IPV6_EX 0x00080000
214
#define E1000_MRQC_RSS_FIELD_IPV6 0x00100000
215
#define E1000_MRQC_RSS_FIELD_IPV6_TCP 0x00200000
216
217
#define E1000_RXDPS_HDRSTAT_HDRSP 0x00008000
218
#define E1000_RXDPS_HDRSTAT_HDRLEN_MASK 0x000003FF
219
220
/* Management Control */
221
#define E1000_MANC_SMBUS_EN 0x00000001
/* SMBus Enabled - RO */
222
#define E1000_MANC_ASF_EN 0x00000002
/* ASF Enabled - RO */
223
#define E1000_MANC_R_ON_FORCE 0x00000004
/* Reset on Force TCO - RO */
224
#define E1000_MANC_RMCP_EN 0x00000100
/* Enable RCMP 026Fh Filtering */
225
#define E1000_MANC_0298_EN 0x00000200
/* Enable RCMP 0298h Filtering */
226
#define E1000_MANC_IPV4_EN 0x00000400
/* Enable IPv4 */
227
#define E1000_MANC_IPV6_EN 0x00000800
/* Enable IPv6 */
228
#define E1000_MANC_SNAP_EN 0x00001000
/* Accept LLC/SNAP */
229
#define E1000_MANC_ARP_EN 0x00002000
/* Enable ARP Request Filtering */
230
/* Enable Neighbor Discovery Filtering */
231
#define E1000_MANC_NEIGHBOR_EN 0x00004000
232
#define E1000_MANC_ARP_RES_EN 0x00008000
/* Enable ARP response Filtering */
233
#define E1000_MANC_TCO_RESET 0x00010000
/* TCO Reset Occurred */
234
#define E1000_MANC_RCV_TCO_EN 0x00020000
/* Receive TCO Packets Enabled */
235
#define E1000_MANC_REPORT_STATUS 0x00040000
/* Status Reporting Enabled */
236
#define E1000_MANC_RCV_ALL 0x00080000
/* Receive All Enabled */
237
#define E1000_MANC_BLK_PHY_RST_ON_IDE 0x00040000
/* Block phy resets */
238
/* Enable MAC address filtering */
239
#define E1000_MANC_EN_MAC_ADDR_FILTER 0x00100000
240
/* Enable MNG packets to host memory */
241
#define E1000_MANC_EN_MNG2HOST 0x00200000
242
/* Enable IP address filtering */
243
#define E1000_MANC_EN_IP_ADDR_FILTER 0x00400000
244
#define E1000_MANC_EN_XSUM_FILTER 0x00800000
/* Enable checksum filtering */
245
#define E1000_MANC_BR_EN 0x01000000
/* Enable broadcast filtering */
246
#define E1000_MANC_SMB_REQ 0x01000000
/* SMBus Request */
247
#define E1000_MANC_SMB_GNT 0x02000000
/* SMBus Grant */
248
#define E1000_MANC_SMB_CLK_IN 0x04000000
/* SMBus Clock In */
249
#define E1000_MANC_SMB_DATA_IN 0x08000000
/* SMBus Data In */
250
#define E1000_MANC_SMB_DATA_OUT 0x10000000
/* SMBus Data Out */
251
#define E1000_MANC_SMB_CLK_OUT 0x20000000
/* SMBus Clock Out */
252
253
#define E1000_MANC_SMB_DATA_OUT_SHIFT 28
/* SMBus Data Out Shift */
254
#define E1000_MANC_SMB_CLK_OUT_SHIFT 29
/* SMBus Clock Out Shift */
255
256
/* Receive Control */
257
#define E1000_RCTL_RST 0x00000001
/* Software reset */
258
#define E1000_RCTL_EN 0x00000002
/* enable */
259
#define E1000_RCTL_SBP 0x00000004
/* store bad packet */
260
#define E1000_RCTL_UPE 0x00000008
/* unicast promisc enable */
261
#define E1000_RCTL_MPE 0x00000010
/* multicast promisc enable */
262
#define E1000_RCTL_LPE 0x00000020
/* long packet enable */
263
#define E1000_RCTL_LBM_NO 0x00000000
/* no loopback mode */
264
#define E1000_RCTL_LBM_MAC 0x00000040
/* MAC loopback mode */
265
#define E1000_RCTL_LBM_SLP 0x00000080
/* serial link loopback mode */
266
#define E1000_RCTL_LBM_TCVR 0x000000C0
/* tcvr loopback mode */
267
#define E1000_RCTL_DTYP_MASK 0x00000C00
/* Descriptor type mask */
268
#define E1000_RCTL_DTYP_PS 0x00000400
/* Packet Split descriptor */
269
#define E1000_RCTL_RDMTS_HALF 0x00000000
/* rx desc min thresh size */
270
#define E1000_RCTL_RDMTS_QUAT 0x00000100
/* rx desc min thresh size */
271
#define E1000_RCTL_RDMTS_EIGTH 0x00000200
/* rx desc min thresh size */
272
#define E1000_RCTL_MO_SHIFT 12
/* multicast offset shift */
273
#define E1000_RCTL_MO_0 0x00000000
/* multicast offset 11:0 */
274
#define E1000_RCTL_MO_1 0x00001000
/* multicast offset 12:1 */
275
#define E1000_RCTL_MO_2 0x00002000
/* multicast offset 13:2 */
276
#define E1000_RCTL_MO_3 0x00003000
/* multicast offset 15:4 */
277
#define E1000_RCTL_MDR 0x00004000
/* multicast desc ring 0 */
278
#define E1000_RCTL_BAM 0x00008000
/* broadcast enable */
279
/* these buffer sizes are valid if E1000_RCTL_BSEX is 0 */
280
#define E1000_RCTL_SZ_2048 0x00000000
/* rx buffer size 2048 */
281
#define E1000_RCTL_SZ_1024 0x00010000
/* rx buffer size 1024 */
282
#define E1000_RCTL_SZ_512 0x00020000
/* rx buffer size 512 */
283
#define E1000_RCTL_SZ_256 0x00030000
/* rx buffer size 256 */
284
/* these buffer sizes are valid if E1000_RCTL_BSEX is 1 */
285
#define E1000_RCTL_SZ_16384 0x00010000
/* rx buffer size 16384 */
286
#define E1000_RCTL_SZ_8192 0x00020000
/* rx buffer size 8192 */
287
#define E1000_RCTL_SZ_4096 0x00030000
/* rx buffer size 4096 */
288
#define E1000_RCTL_VFE 0x00040000
/* vlan filter enable */
289
#define E1000_RCTL_CFIEN 0x00080000
/* canonical form enable */
290
#define E1000_RCTL_CFI 0x00100000
/* canonical form indicator */
291
#define E1000_RCTL_DPF 0x00400000
/* discard pause frames */
292
#define E1000_RCTL_PMCF 0x00800000
/* pass MAC control frames */
293
#define E1000_RCTL_BSEX 0x02000000
/* Buffer size extension */
294
#define E1000_RCTL_SECRC 0x04000000
/* Strip Ethernet CRC */
295
#define E1000_RCTL_FLXBUF_MASK 0x78000000
/* Flexible buffer size */
296
#define E1000_RCTL_FLXBUF_SHIFT 27
/* Flexible buffer shift */
297
298
/*
299
* Use byte values for the following shift parameters
300
* Usage:
301
* psrctl |= (((ROUNDUP(value0, 128) >> E1000_PSRCTL_BSIZE0_SHIFT) &
302
* E1000_PSRCTL_BSIZE0_MASK) |
303
* ((ROUNDUP(value1, 1024) >> E1000_PSRCTL_BSIZE1_SHIFT) &
304
* E1000_PSRCTL_BSIZE1_MASK) |
305
* ((ROUNDUP(value2, 1024) << E1000_PSRCTL_BSIZE2_SHIFT) &
306
* E1000_PSRCTL_BSIZE2_MASK) |
307
* ((ROUNDUP(value3, 1024) << E1000_PSRCTL_BSIZE3_SHIFT) |;
308
* E1000_PSRCTL_BSIZE3_MASK))
309
* where value0 = [128..16256], default=256
310
* value1 = [1024..64512], default=4096
311
* value2 = [0..64512], default=4096
312
* value3 = [0..64512], default=0
313
*/
314
315
#define E1000_PSRCTL_BSIZE0_MASK 0x0000007F
316
#define E1000_PSRCTL_BSIZE1_MASK 0x00003F00
317
#define E1000_PSRCTL_BSIZE2_MASK 0x003F0000
318
#define E1000_PSRCTL_BSIZE3_MASK 0x3F000000
319
320
#define E1000_PSRCTL_BSIZE0_SHIFT 7
/* Shift _right_ 7 */
321
#define E1000_PSRCTL_BSIZE1_SHIFT 2
/* Shift _right_ 2 */
322
#define E1000_PSRCTL_BSIZE2_SHIFT 6
/* Shift _left_ 6 */
323
#define E1000_PSRCTL_BSIZE3_SHIFT 14
/* Shift _left_ 14 */
324
325
/* SWFW_SYNC Definitions */
326
#define E1000_SWFW_EEP_SM 0x01
327
#define E1000_SWFW_PHY0_SM 0x02
328
#define E1000_SWFW_PHY1_SM 0x04
329
#define E1000_SWFW_CSR_SM 0x08
330
331
/* FACTPS Definitions */
332
#define E1000_FACTPS_LFS 0x40000000
/* LAN Function Select */
333
/* Device Control */
334
#define E1000_CTRL_FD 0x00000001
/* Full duplex.0=half; 1=full */
335
#define E1000_CTRL_BEM 0x00000002
/* Endian Mode.0=little,1=big */
336
#define E1000_CTRL_PRIOR 0x00000004
/* Priority on PCI. 0=rx,1=fair */
337
#define E1000_CTRL_GIO_MASTER_DISABLE 0x00000004
/*Blocks new Master reqs */
338
#define E1000_CTRL_LRST 0x00000008
/* Link reset. 0=normal,1=reset */
339
#define E1000_CTRL_TME 0x00000010
/* Test mode. 0=normal,1=test */
340
#define E1000_CTRL_SLE 0x00000020
/* Serial Link on 0=dis,1=en */
341
#define E1000_CTRL_ASDE 0x00000020
/* Auto-speed detect enable */
342
#define E1000_CTRL_SLU 0x00000040
/* Set link up (Force Link) */
343
#define E1000_CTRL_ILOS 0x00000080
/* Invert Loss-Of Signal */
344
#define E1000_CTRL_SPD_SEL 0x00000300
/* Speed Select Mask */
345
#define E1000_CTRL_SPD_10 0x00000000
/* Force 10Mb */
346
#define E1000_CTRL_SPD_100 0x00000100
/* Force 100Mb */
347
#define E1000_CTRL_SPD_1000 0x00000200
/* Force 1Gb */
348
#define E1000_CTRL_BEM32 0x00000400
/* Big Endian 32 mode */
349
#define E1000_CTRL_FRCSPD 0x00000800
/* Force Speed */
350
#define E1000_CTRL_FRCDPX 0x00001000
/* Force Duplex */
351
#define E1000_CTRL_D_UD_EN 0x00002000
/* Dock/Undock enable */
352
#define E1000_CTRL_D_UD_POLARITY 0x00004000
/* Defined polarity of Dock/Undock
353
* indication in SDP[0] */
354
#define E1000_CTRL_FORCE_PHY_RESET 0x00008000
/* Reset both PHY ports, through
355
* PHYRST_N pin */
356
#define E1000_CTRL_EXT_LINK_EN 0x00010000
/* enable link status from external
357
* LINK_0 and LINK_1 pins */
358
#define E1000_CTRL_SWDPIN0 0x00040000
/* SWDPIN 0 value */
359
#define E1000_CTRL_SWDPIN1 0x00080000
/* SWDPIN 1 value */
360
#define E1000_CTRL_SWDPIN2 0x00100000
/* SWDPIN 2 value */
361
#define E1000_CTRL_SWDPIN3 0x00200000
/* SWDPIN 3 value */
362
#define E1000_CTRL_SWDPIO0 0x00400000
/* SWDPIN 0 Input or output */
363
#define E1000_CTRL_SWDPIO1 0x00800000
/* SWDPIN 1 input or output */
364
#define E1000_CTRL_SWDPIO2 0x01000000
/* SWDPIN 2 input or output */
365
#define E1000_CTRL_SWDPIO3 0x02000000
/* SWDPIN 3 input or output */
366
#define E1000_CTRL_RST 0x04000000
/* Global reset */
367
#define E1000_CTRL_RFCE 0x08000000
/* Receive Flow Control enable */
368
#define E1000_CTRL_TFCE 0x10000000
/* Transmit flow control enable */
369
#define E1000_CTRL_RTE 0x20000000
/* Routing tag enable */
370
#define E1000_CTRL_VME 0x40000000
/* IEEE VLAN mode enable */
371
#define E1000_CTRL_PHY_RST 0x80000000
/* PHY Reset */
372
#define E1000_CTRL_SW2FW_INT 0x02000000
/* Initiate an interrupt to ME */
373
#define E1000_CTRL_I2C_ENA 0x02000000
/* I2C enable */
374
375
/*
376
* Bit definitions for the Management Data IO (MDIO) and Management Data
377
* Clock (MDC) pins in the Device Control Register.
378
*/
379
#define E1000_CTRL_PHY_RESET_DIR E1000_CTRL_SWDPIO0
380
#define E1000_CTRL_PHY_RESET E1000_CTRL_SWDPIN0
381
#define E1000_CTRL_MDIO_DIR E1000_CTRL_SWDPIO2
382
#define E1000_CTRL_MDIO E1000_CTRL_SWDPIN2
383
#define E1000_CTRL_MDC_DIR E1000_CTRL_SWDPIO3
384
#define E1000_CTRL_MDC E1000_CTRL_SWDPIN3
385
#define E1000_CTRL_PHY_RESET_DIR4 E1000_CTRL_EXT_SDP4_DIR
386
#define E1000_CTRL_PHY_RESET4 E1000_CTRL_EXT_SDP4_DATA
387
388
#define E1000_CONNSW_ENRGSRC 0x4
389
#define E1000_PCS_CFG_PCS_EN 8
390
#define E1000_PCS_LCTL_FLV_LINK_UP 1
391
#define E1000_PCS_LCTL_FSV_10 0
392
#define E1000_PCS_LCTL_FSV_100 2
393
#define E1000_PCS_LCTL_FSV_1000 4
394
#define E1000_PCS_LCTL_FDV_FULL 8
395
#define E1000_PCS_LCTL_FSD 0x10
396
#define E1000_PCS_LCTL_FORCE_LINK 0x20
397
#define E1000_PCS_LCTL_LOW_LINK_LATCH 0x40
398
#define E1000_PCS_LCTL_FORCE_FCTRL 0x80
399
#define E1000_PCS_LCTL_AN_ENABLE 0x10000
400
#define E1000_PCS_LCTL_AN_RESTART 0x20000
401
#define E1000_PCS_LCTL_AN_TIMEOUT 0x40000
402
#define E1000_PCS_LCTL_AN_SGMII_BYPASS 0x80000
403
#define E1000_PCS_LCTL_AN_SGMII_TRIGGER 0x100000
404
#define E1000_PCS_LCTL_FAST_LINK_TIMER 0x1000000
405
#define E1000_PCS_LCTL_LINK_OK_FIX 0x2000000
406
#define E1000_PCS_LCTL_CRS_ON_NI 0x4000000
407
#define E1000_ENABLE_SERDES_LOOPBACK 0x0410
408
409
#define E1000_PCS_LSTS_LINK_OK 1
410
#define E1000_PCS_LSTS_SPEED_10 0
411
#define E1000_PCS_LSTS_SPEED_100 2
412
#define E1000_PCS_LSTS_SPEED_1000 4
413
#define E1000_PCS_LSTS_DUPLEX_FULL 8
414
#define E1000_PCS_LSTS_SYNK_OK 0x10
415
#define E1000_PCS_LSTS_AN_COMPLETE 0x10000
416
#define E1000_PCS_LSTS_AN_PAGE_RX 0x20000
417
#define E1000_PCS_LSTS_AN_TIMED_OUT 0x40000
418
#define E1000_PCS_LSTS_AN_REMOTE_FAULT 0x80000
419
#define E1000_PCS_LSTS_AN_ERROR_RWS 0x100000
420
421
/* Device Status */
422
#define E1000_STATUS_FD 0x00000001
/* Full duplex.0=half,1=full */
423
#define E1000_STATUS_LU 0x00000002
/* Link up.0=no,1=link */
424
#define E1000_STATUS_FUNC_MASK 0x0000000C
/* PCI Function Mask */
425
#define E1000_STATUS_FUNC_SHIFT 2
426
#define E1000_STATUS_FUNC_0 0x00000000
/* Function 0 */
427
#define E1000_STATUS_FUNC_1 0x00000004
/* Function 1 */
428
#define E1000_STATUS_TXOFF 0x00000010
/* transmission paused */
429
#define E1000_STATUS_TBIMODE 0x00000020
/* TBI mode */
430
#define E1000_STATUS_SPEED_MASK 0x000000C0
431
#define E1000_STATUS_SPEED_10 0x00000000
/* Speed 10Mb/s */
432
#define E1000_STATUS_SPEED_100 0x00000040
/* Speed 100Mb/s */
433
#define E1000_STATUS_SPEED_1000 0x00000080
/* Speed 1000Mb/s */
434
#define E1000_STATUS_LAN_INIT_DONE 0x00000200
/* Lan Init Completion by NVM */
435
#define E1000_STATUS_ASDV 0x00000300
/* Auto speed detect value */
436
#define E1000_STATUS_PHYRA 0x00000400
/* PHY Reset Asserted */
437
#define E1000_STATUS_DOCK_CI 0x00000800
/* Change in Dock/Undock state.
438
* Clear on write '0'. */
439
#define E1000_STATUS_GIO_MASTER_ENABLE 0x00080000
/* Master request status */
440
#define E1000_STATUS_MTXCKOK 0x00000400
/* MTX clock running OK */
441
#define E1000_STATUS_PCI66 0x00000800
/* In 66Mhz slot */
442
#define E1000_STATUS_BUS64 0x00001000
/* In 64 bit slot */
443
#define E1000_STATUS_PCIX_MODE 0x00002000
/* PCI-X mode */
444
#define E1000_STATUS_PCIX_SPEED 0x0000C000
/* PCI-X bus speed */
445
#define E1000_STATUS_BMC_SKU_0 0x00100000
/* BMC USB redirect disabled */
446
#define E1000_STATUS_BMC_SKU_1 0x00200000
/* BMC SRAM disabled */
447
#define E1000_STATUS_BMC_SKU_2 0x00400000
/* BMC SDRAM disabled */
448
#define E1000_STATUS_BMC_CRYPTO 0x00800000
/* BMC crypto disabled */
449
#define E1000_STATUS_BMC_LITE 0x01000000
/* BMC external code execution
450
* disabled */
451
#define E1000_STATUS_RGMII_ENABLE 0x02000000
/* RGMII disabled */
452
#define E1000_STATUS_FUSE_8 0x04000000
453
#define E1000_STATUS_FUSE_9 0x08000000
454
#define E1000_STATUS_SERDES0_DIS 0x10000000
/* SERDES disabled on port 0 */
455
#define E1000_STATUS_SERDES1_DIS 0x20000000
/* SERDES disabled on port 1 */
456
457
/* Constants used to interpret the masked PCI-X bus speed. */
458
#define E1000_STATUS_PCIX_SPEED_66 0x00000000
/* PCI-X bus speed 50-66 MHz */
459
#define E1000_STATUS_PCIX_SPEED_100 0x00004000
/* PCI-X bus speed 66-100 MHz */
460
#define E1000_STATUS_PCIX_SPEED_133 0x00008000
/*PCI-X bus speed 100-133 MHz*/
461
462
#define SPEED_10 10
463
#define SPEED_100 100
464
#define SPEED_1000 1000
465
#define HALF_DUPLEX 1
466
#define FULL_DUPLEX 2
467
468
#define PHY_FORCE_TIME 20
469
470
#define ADVERTISE_10_HALF 0x0001
471
#define ADVERTISE_10_FULL 0x0002
472
#define ADVERTISE_100_HALF 0x0004
473
#define ADVERTISE_100_FULL 0x0008
474
#define ADVERTISE_1000_HALF 0x0010
/* Not used, just FYI */
475
#define ADVERTISE_1000_FULL 0x0020
476
477
/* 1000/H is not supported, nor spec-compliant. */
478
#define E1000_ALL_SPEED_DUPLEX (ADVERTISE_10_HALF | ADVERTISE_10_FULL | \
479
ADVERTISE_100_HALF | ADVERTISE_100_FULL | \
480
ADVERTISE_1000_FULL)
481
#define E1000_ALL_NOT_GIG (ADVERTISE_10_HALF | ADVERTISE_10_FULL | \
482
ADVERTISE_100_HALF | ADVERTISE_100_FULL)
483
#define E1000_ALL_100_SPEED (ADVERTISE_100_HALF | ADVERTISE_100_FULL)
484
#define E1000_ALL_10_SPEED (ADVERTISE_10_HALF | ADVERTISE_10_FULL)
485
#define E1000_ALL_FULL_DUPLEX (ADVERTISE_10_FULL | ADVERTISE_100_FULL | \
486
ADVERTISE_1000_FULL)
487
#define E1000_ALL_HALF_DUPLEX (ADVERTISE_10_HALF | ADVERTISE_100_HALF)
488
489
#define AUTONEG_ADVERTISE_SPEED_DEFAULT E1000_ALL_SPEED_DUPLEX
490
491
/* LED Control */
492
#define E1000_LEDCTL_LED0_MODE_MASK 0x0000000F
493
#define E1000_LEDCTL_LED0_MODE_SHIFT 0
494
#define E1000_LEDCTL_LED0_BLINK_RATE 0x00000020
495
#define E1000_LEDCTL_LED0_IVRT 0x00000040
496
#define E1000_LEDCTL_LED0_BLINK 0x00000080
497
#define E1000_LEDCTL_LED1_MODE_MASK 0x00000F00
498
#define E1000_LEDCTL_LED1_MODE_SHIFT 8
499
#define E1000_LEDCTL_LED1_BLINK_RATE 0x00002000
500
#define E1000_LEDCTL_LED1_IVRT 0x00004000
501
#define E1000_LEDCTL_LED1_BLINK 0x00008000
502
#define E1000_LEDCTL_LED2_MODE_MASK 0x000F0000
503
#define E1000_LEDCTL_LED2_MODE_SHIFT 16
504
#define E1000_LEDCTL_LED2_BLINK_RATE 0x00200000
505
#define E1000_LEDCTL_LED2_IVRT 0x00400000
506
#define E1000_LEDCTL_LED2_BLINK 0x00800000
507
#define E1000_LEDCTL_LED3_MODE_MASK 0x0F000000
508
#define E1000_LEDCTL_LED3_MODE_SHIFT 24
509
#define E1000_LEDCTL_LED3_BLINK_RATE 0x20000000
510
#define E1000_LEDCTL_LED3_IVRT 0x40000000
511
#define E1000_LEDCTL_LED3_BLINK 0x80000000
512
513
#define E1000_LEDCTL_MODE_LINK_10_1000 0x0
514
#define E1000_LEDCTL_MODE_LINK_100_1000 0x1
515
#define E1000_LEDCTL_MODE_LINK_UP 0x2
516
#define E1000_LEDCTL_MODE_ACTIVITY 0x3
517
#define E1000_LEDCTL_MODE_LINK_ACTIVITY 0x4
518
#define E1000_LEDCTL_MODE_LINK_10 0x5
519
#define E1000_LEDCTL_MODE_LINK_100 0x6
520
#define E1000_LEDCTL_MODE_LINK_1000 0x7
521
#define E1000_LEDCTL_MODE_PCIX_MODE 0x8
522
#define E1000_LEDCTL_MODE_FULL_DUPLEX 0x9
523
#define E1000_LEDCTL_MODE_COLLISION 0xA
524
#define E1000_LEDCTL_MODE_BUS_SPEED 0xB
525
#define E1000_LEDCTL_MODE_BUS_SIZE 0xC
526
#define E1000_LEDCTL_MODE_PAUSED 0xD
527
#define E1000_LEDCTL_MODE_LED_ON 0xE
528
#define E1000_LEDCTL_MODE_LED_OFF 0xF
529
530
/* Transmit Descriptor bit definitions */
531
#define E1000_TXD_DTYP_D 0x00100000
/* Data Descriptor */
532
#define E1000_TXD_DTYP_C 0x00000000
/* Context Descriptor */
533
#define E1000_TXD_POPTS_SHIFT 8
/* POPTS shift */
534
#define E1000_TXD_POPTS_IXSM 0x01
/* Insert IP checksum */
535
#define E1000_TXD_POPTS_TXSM 0x02
/* Insert TCP/UDP checksum */
536
#define E1000_TXD_CMD_EOP 0x01000000
/* End of Packet */
537
#define E1000_TXD_CMD_IFCS 0x02000000
/* Insert FCS (Ethernet CRC) */
538
#define E1000_TXD_CMD_IC 0x04000000
/* Insert Checksum */
539
#define E1000_TXD_CMD_RS 0x08000000
/* Report Status */
540
#define E1000_TXD_CMD_RPS 0x10000000
/* Report Packet Sent */
541
#define E1000_TXD_CMD_DEXT 0x20000000
/* Descriptor extension (0 = legacy) */
542
#define E1000_TXD_CMD_VLE 0x40000000
/* Add VLAN tag */
543
#define E1000_TXD_CMD_IDE 0x80000000
/* Enable Tidv register */
544
#define E1000_TXD_STAT_DD 0x00000001
/* Descriptor Done */
545
#define E1000_TXD_STAT_EC 0x00000002
/* Excess Collisions */
546
#define E1000_TXD_STAT_LC 0x00000004
/* Late Collisions */
547
#define E1000_TXD_STAT_TU 0x00000008
/* Transmit underrun */
548
#define E1000_TXD_CMD_TCP 0x01000000
/* TCP packet */
549
#define E1000_TXD_CMD_IP 0x02000000
/* IP packet */
550
#define E1000_TXD_CMD_TSE 0x04000000
/* TCP Seg enable */
551
#define E1000_TXD_STAT_TC 0x00000004
/* Tx Underrun */
552
/* Extended desc bits for Linksec and timesync */
553
554
/* Transmit Control */
555
#define E1000_TCTL_RST 0x00000001
/* software reset */
556
#define E1000_TCTL_EN 0x00000002
/* enable tx */
557
#define E1000_TCTL_BCE 0x00000004
/* busy check enable */
558
#define E1000_TCTL_PSP 0x00000008
/* pad short packets */
559
#define E1000_TCTL_CT 0x00000ff0
/* collision threshold */
560
#define E1000_TCTL_COLD 0x003ff000
/* collision distance */
561
#define E1000_TCTL_SWXOFF 0x00400000
/* SW Xoff transmission */
562
#define E1000_TCTL_PBE 0x00800000
/* Packet Burst Enable */
563
#define E1000_TCTL_RTLC 0x01000000
/* Re-transmit on late collision */
564
#define E1000_TCTL_NRTU 0x02000000
/* No Re-transmit on underrun */
565
#define E1000_TCTL_MULR 0x10000000
/* Multiple request support */
566
567
/* Transmit Arbitration Count */
568
#define E1000_TARC0_ENABLE 0x00000400
/* Enable Tx Queue 0 */
569
570
/* SerDes Control */
571
#define E1000_SCTL_DISABLE_SERDES_LOOPBACK 0x0400
572
573
/* Receive Checksum Control */
574
#define E1000_RXCSUM_PCSS_MASK 0x000000FF
/* Packet Checksum Start */
575
#define E1000_RXCSUM_IPOFL 0x00000100
/* IPv4 checksum offload */
576
#define E1000_RXCSUM_TUOFL 0x00000200
/* TCP / UDP checksum offload */
577
#define E1000_RXCSUM_IPV6OFL 0x00000400
/* IPv6 checksum offload */
578
#define E1000_RXCSUM_CRCOFL 0x00000800
/* CRC32 offload enable */
579
#define E1000_RXCSUM_IPPCSE 0x00001000
/* IP payload checksum enable */
580
#define E1000_RXCSUM_PCSD 0x00002000
/* packet checksum disabled */
581
582
/* Header split receive */
583
#define E1000_RFCTL_ISCSI_DIS 0x00000001
584
#define E1000_RFCTL_ISCSI_DWC_MASK 0x0000003E
585
#define E1000_RFCTL_ISCSI_DWC_SHIFT 1
586
#define E1000_RFCTL_NFSW_DIS 0x00000040
587
#define E1000_RFCTL_NFSR_DIS 0x00000080
588
#define E1000_RFCTL_NFS_VER_MASK 0x00000300
589
#define E1000_RFCTL_NFS_VER_SHIFT 8
590
#define E1000_RFCTL_IPV6_DIS 0x00000400
591
#define E1000_RFCTL_IPV6_XSUM_DIS 0x00000800
592
#define E1000_RFCTL_ACK_DIS 0x00001000
593
#define E1000_RFCTL_ACKD_DIS 0x00002000
594
#define E1000_RFCTL_IPFRSP_DIS 0x00004000
595
#define E1000_RFCTL_EXTEN 0x00008000
596
#define E1000_RFCTL_IPV6_EX_DIS 0x00010000
597
#define E1000_RFCTL_NEW_IPV6_EXT_DIS 0x00020000
598
#define E1000_RFCTL_LEF 0x00040000
599
600
/* Collision related configuration parameters */
601
#define E1000_COLLISION_THRESHOLD 15
602
#define E1000_CT_SHIFT 4
603
#define E1000_COLLISION_DISTANCE 63
604
#define E1000_COLD_SHIFT 12
605
606
/* Default values for the transmit IPG register */
607
#define DEFAULT_82543_TIPG_IPGT_FIBER 9
608
#define DEFAULT_82543_TIPG_IPGT_COPPER 8
609
610
#define E1000_TIPG_IPGT_MASK 0x000003FF
611
#define E1000_TIPG_IPGR1_MASK 0x000FFC00
612
#define E1000_TIPG_IPGR2_MASK 0x3FF00000
613
614
#define DEFAULT_82543_TIPG_IPGR1 8
615
#define E1000_TIPG_IPGR1_SHIFT 10
616
617
#define DEFAULT_82543_TIPG_IPGR2 6
618
#define DEFAULT_80003ES2LAN_TIPG_IPGR2 7
619
#define E1000_TIPG_IPGR2_SHIFT 20
620
621
/* Ethertype field values */
622
#define ETHERNET_IEEE_VLAN_TYPE 0x8100
/* 802.3ac packet */
623
624
#define ETHERNET_FCS_SIZE 4
625
#define MAX_JUMBO_FRAME_SIZE 0x3F00
626
627
/* Extended Configuration Control and Size */
628
#define E1000_EXTCNF_CTRL_MDIO_SW_OWNERSHIP 0x00000020
629
#define E1000_EXTCNF_CTRL_LCD_WRITE_ENABLE 0x00000001
630
#define E1000_EXTCNF_CTRL_OEM_WRITE_ENABLE 0x00000008
631
#define E1000_EXTCNF_CTRL_SWFLAG 0x00000020
632
#define E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_MASK 0x00FF0000
633
#define E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_SHIFT 16
634
#define E1000_EXTCNF_CTRL_EXT_CNF_POINTER_MASK 0x0FFF0000
635
#define E1000_EXTCNF_CTRL_EXT_CNF_POINTER_SHIFT 16
636
637
#define E1000_PHY_CTRL_SPD_EN 0x00000001
638
#define E1000_PHY_CTRL_D0A_LPLU 0x00000002
639
#define E1000_PHY_CTRL_NOND0A_LPLU 0x00000004
640
#define E1000_PHY_CTRL_NOND0A_GBE_DISABLE 0x00000008
641
#define E1000_PHY_CTRL_GBE_DISABLE 0x00000040
642
643
#define E1000_KABGTXD_BGSQLBIAS 0x00050000
644
645
/* PBA constants */
646
#define E1000_PBA_6K 0x0006
/* 6KB */
647
#define E1000_PBA_8K 0x0008
/* 8KB */
648
#define E1000_PBA_10K 0x000A
/* 10KB */
649
#define E1000_PBA_12K 0x000C
/* 12KB */
650
#define E1000_PBA_14K 0x000E
/* 14KB */
651
#define E1000_PBA_16K 0x0010
/* 16KB */
652
#define E1000_PBA_18K 0x0012
653
#define E1000_PBA_20K 0x0014
654
#define E1000_PBA_22K 0x0016
655
#define E1000_PBA_24K 0x0018
656
#define E1000_PBA_26K 0x001A
657
#define E1000_PBA_30K 0x001E
658
#define E1000_PBA_32K 0x0020
659
#define E1000_PBA_34K 0x0022
660
#define E1000_PBA_35K 0x0023
661
#define E1000_PBA_38K 0x0026
662
#define E1000_PBA_40K 0x0028
663
#define E1000_PBA_48K 0x0030
/* 48KB */
664
#define E1000_PBA_64K 0x0040
/* 64KB */
665
666
#define E1000_PBS_16K E1000_PBA_16K
667
#define E1000_PBS_24K E1000_PBA_24K
668
669
#define IFS_MAX 80
670
#define IFS_MIN 40
671
#define IFS_RATIO 4
672
#define IFS_STEP 10
673
#define MIN_NUM_XMITS 1000
674
675
/* SW Semaphore Register */
676
#define E1000_SWSM_SMBI 0x00000001
/* Driver Semaphore bit */
677
#define E1000_SWSM_SWESMBI 0x00000002
/* FW Semaphore bit */
678
#define E1000_SWSM_WMNG 0x00000004
/* Wake MNG Clock */
679
#define E1000_SWSM_DRV_LOAD 0x00000008
/* Driver Loaded Bit */
680
681
#define E1000_SWSM2_LOCK 0x00000002
/* Secondary driver semaphore bit */
682
683
/* Interrupt Cause Read */
684
#define E1000_ICR_TXDW 0x00000001
/* Transmit desc written back */
685
#define E1000_ICR_TXQE 0x00000002
/* Transmit Queue empty */
686
#define E1000_ICR_LSC 0x00000004
/* Link Status Change */
687
#define E1000_ICR_RXSEQ 0x00000008
/* rx sequence error */
688
#define E1000_ICR_RXDMT0 0x00000010
/* rx desc min. threshold (0) */
689
#define E1000_ICR_RXO 0x00000040
/* rx overrun */
690
#define E1000_ICR_RXT0 0x00000080
/* rx timer intr (ring 0) */
691
#define E1000_ICR_VMMB 0x00000100
/* VM MB event */
692
#define E1000_ICR_MDAC 0x00000200
/* MDIO access complete */
693
#define E1000_ICR_RXCFG 0x00000400
/* Rx /c/ ordered set */
694
#define E1000_ICR_GPI_EN0 0x00000800
/* GP Int 0 */
695
#define E1000_ICR_GPI_EN1 0x00001000
/* GP Int 1 */
696
#define E1000_ICR_GPI_EN2 0x00002000
/* GP Int 2 */
697
#define E1000_ICR_GPI_EN3 0x00004000
/* GP Int 3 */
698
#define E1000_ICR_TXD_LOW 0x00008000
699
#define E1000_ICR_SRPD 0x00010000
700
#define E1000_ICR_ACK 0x00020000
/* Receive Ack frame */
701
#define E1000_ICR_MNG 0x00040000
/* Manageability event */
702
#define E1000_ICR_DOCK 0x00080000
/* Dock/Undock */
703
#define E1000_ICR_INT_ASSERTED 0x80000000
/* If this bit asserted, the driver
704
* should claim the interrupt */
705
#define E1000_ICR_RXD_FIFO_PAR0 0x00100000
/* Q0 Rx desc FIFO parity error */
706
#define E1000_ICR_TXD_FIFO_PAR0 0x00200000
/* Q0 Tx desc FIFO parity error */
707
#define E1000_ICR_HOST_ARB_PAR 0x00400000
/* host arb read buffer parity err */
708
#define E1000_ICR_PB_PAR 0x00800000
/* packet buffer parity error */
709
#define E1000_ICR_RXD_FIFO_PAR1 0x01000000
/* Q1 Rx desc FIFO parity error */
710
#define E1000_ICR_TXD_FIFO_PAR1 0x02000000
/* Q1 Tx desc FIFO parity error */
711
#define E1000_ICR_ALL_PARITY 0x03F00000
/* all parity error bits */
712
#define E1000_ICR_DSW 0x00000020
/* FW changed the status of DISSW
713
* bit in the FWSM */
714
#define E1000_ICR_PHYINT 0x00001000
/* LAN connected device generates
715
* an interrupt */
716
#define E1000_ICR_DOUTSYNC 0x10000000
/* NIC DMA out of sync */
717
#define E1000_ICR_EPRST 0x00100000
/* ME hardware reset occurs */
718
719
720
/*
721
* This defines the bits that are set in the Interrupt Mask
722
* Set/Read Register. Each bit is documented below:
723
* o RXDMT0 = Receive Descriptor Minimum Threshold hit (ring 0)
724
* o RXSEQ = Receive Sequence Error
725
*/
726
#define POLL_IMS_ENABLE_MASK ( \
727
E1000_IMS_RXDMT0 | \
728
E1000_IMS_RXSEQ)
729
730
/*
731
* This defines the bits that are set in the Interrupt Mask
732
* Set/Read Register. Each bit is documented below:
733
* o RXT0 = Receiver Timer Interrupt (ring 0)
734
* o TXDW = Transmit Descriptor Written Back
735
* o RXDMT0 = Receive Descriptor Minimum Threshold hit (ring 0)
736
* o RXSEQ = Receive Sequence Error
737
* o LSC = Link Status Change
738
*/
739
#define IMS_ENABLE_MASK ( \
740
E1000_IMS_RXT0 | \
741
E1000_IMS_TXDW | \
742
E1000_IMS_RXDMT0 | \
743
E1000_IMS_RXSEQ | \
744
E1000_IMS_LSC)
745
746
/* Interrupt Mask Set */
747
#define E1000_IMS_TXDW E1000_ICR_TXDW
/* Tx desc written back */
748
#define E1000_IMS_TXQE E1000_ICR_TXQE
/* Transmit Queue empty */
749
#define E1000_IMS_LSC E1000_ICR_LSC
/* Link Status Change */
750
#define E1000_IMS_VMMB E1000_ICR_VMMB
/* Mail box activity */
751
#define E1000_IMS_RXSEQ E1000_ICR_RXSEQ
/* rx sequence error */
752
#define E1000_IMS_RXDMT0 E1000_ICR_RXDMT0
/* rx desc min. threshold */
753
#define E1000_IMS_RXO E1000_ICR_RXO
/* rx overrun */
754
#define E1000_IMS_RXT0 E1000_ICR_RXT0
/* rx timer intr */
755
#define E1000_IMS_MDAC E1000_ICR_MDAC
/* MDIO access complete */
756
#define E1000_IMS_RXCFG E1000_ICR_RXCFG
/* Rx /c/ ordered set */
757
#define E1000_IMS_GPI_EN0 E1000_ICR_GPI_EN0
/* GP Int 0 */
758
#define E1000_IMS_GPI_EN1 E1000_ICR_GPI_EN1
/* GP Int 1 */
759
#define E1000_IMS_GPI_EN2 E1000_ICR_GPI_EN2
/* GP Int 2 */
760
#define E1000_IMS_GPI_EN3 E1000_ICR_GPI_EN3
/* GP Int 3 */
761
#define E1000_IMS_TXD_LOW E1000_ICR_TXD_LOW
762
#define E1000_IMS_SRPD E1000_ICR_SRPD
763
#define E1000_IMS_ACK E1000_ICR_ACK
/* Receive Ack frame */
764
#define E1000_IMS_MNG E1000_ICR_MNG
/* Manageability event */
765
#define E1000_IMS_DOCK E1000_ICR_DOCK
/* Dock/Undock */
766
#define E1000_IMS_RXD_FIFO_PAR0 E1000_ICR_RXD_FIFO_PAR0
/* Q0 Rx desc FIFO
767
* parity error */
768
#define E1000_IMS_TXD_FIFO_PAR0 E1000_ICR_TXD_FIFO_PAR0
/* Q0 Tx desc FIFO
769
* parity error */
770
#define E1000_IMS_HOST_ARB_PAR E1000_ICR_HOST_ARB_PAR
/* host arb read buffer
771
* parity error */
772
#define E1000_IMS_PB_PAR E1000_ICR_PB_PAR
/* packet buffer parity
773
* error */
774
#define E1000_IMS_RXD_FIFO_PAR1 E1000_ICR_RXD_FIFO_PAR1
/* Q1 Rx desc FIFO
775
* parity error */
776
#define E1000_IMS_TXD_FIFO_PAR1 E1000_ICR_TXD_FIFO_PAR1
/* Q1 Tx desc FIFO
777
* parity error */
778
#define E1000_IMS_DSW E1000_ICR_DSW
779
#define E1000_IMS_PHYINT E1000_ICR_PHYINT
780
#define E1000_IMS_DOUTSYNC E1000_ICR_DOUTSYNC
/* NIC DMA out of sync */
781
#define E1000_IMS_EPRST E1000_ICR_EPRST
782
783
/* Interrupt Cause Set */
784
#define E1000_ICS_TXDW E1000_ICR_TXDW
/* Tx desc written back */
785
#define E1000_ICS_TXQE E1000_ICR_TXQE
/* Transmit Queue empty */
786
#define E1000_ICS_LSC E1000_ICR_LSC
/* Link Status Change */
787
#define E1000_ICS_RXSEQ E1000_ICR_RXSEQ
/* rx sequence error */
788
#define E1000_ICS_RXDMT0 E1000_ICR_RXDMT0
/* rx desc min. threshold */
789
#define E1000_ICS_RXO E1000_ICR_RXO
/* rx overrun */
790
#define E1000_ICS_RXT0 E1000_ICR_RXT0
/* rx timer intr */
791
#define E1000_ICS_MDAC E1000_ICR_MDAC
/* MDIO access complete */
792
#define E1000_ICS_RXCFG E1000_ICR_RXCFG
/* Rx /c/ ordered set */
793
#define E1000_ICS_GPI_EN0 E1000_ICR_GPI_EN0
/* GP Int 0 */
794
#define E1000_ICS_GPI_EN1 E1000_ICR_GPI_EN1
/* GP Int 1 */
795
#define E1000_ICS_GPI_EN2 E1000_ICR_GPI_EN2
/* GP Int 2 */
796
#define E1000_ICS_GPI_EN3 E1000_ICR_GPI_EN3
/* GP Int 3 */
797
#define E1000_ICS_TXD_LOW E1000_ICR_TXD_LOW
798
#define E1000_ICS_SRPD E1000_ICR_SRPD
799
#define E1000_ICS_ACK E1000_ICR_ACK
/* Receive Ack frame */
800
#define E1000_ICS_MNG E1000_ICR_MNG
/* Manageability event */
801
#define E1000_ICS_DOCK E1000_ICR_DOCK
/* Dock/Undock */
802
#define E1000_ICS_RXD_FIFO_PAR0 E1000_ICR_RXD_FIFO_PAR0
/* Q0 Rx desc FIFO
803
* parity error */
804
#define E1000_ICS_TXD_FIFO_PAR0 E1000_ICR_TXD_FIFO_PAR0
/* Q0 Tx desc FIFO
805
* parity error */
806
#define E1000_ICS_HOST_ARB_PAR E1000_ICR_HOST_ARB_PAR
/* host arb read buffer
807
* parity error */
808
#define E1000_ICS_PB_PAR E1000_ICR_PB_PAR
/* packet buffer parity
809
* error */
810
#define E1000_ICS_RXD_FIFO_PAR1 E1000_ICR_RXD_FIFO_PAR1
/* Q1 Rx desc FIFO
811
* parity error */
812
#define E1000_ICS_TXD_FIFO_PAR1 E1000_ICR_TXD_FIFO_PAR1
/* Q1 Tx desc FIFO
813
* parity error */
814
#define E1000_ICS_DSW E1000_ICR_DSW
815
#define E1000_ICS_DOUTSYNC E1000_ICR_DOUTSYNC
/* NIC DMA out of sync */
816
#define E1000_ICS_PHYINT E1000_ICR_PHYINT
817
#define E1000_ICS_EPRST E1000_ICR_EPRST
818
819
/* Transmit Descriptor Control */
820
#define E1000_TXDCTL_PTHRESH 0x0000003F
/* TXDCTL Prefetch Threshold */
821
#define E1000_TXDCTL_HTHRESH 0x00003F00
/* TXDCTL Host Threshold */
822
#define E1000_TXDCTL_WTHRESH 0x003F0000
/* TXDCTL Writeback Threshold */
823
#define E1000_TXDCTL_GRAN 0x01000000
/* TXDCTL Granularity */
824
#define E1000_TXDCTL_LWTHRESH 0xFE000000
/* TXDCTL Low Threshold */
825
#define E1000_TXDCTL_FULL_TX_DESC_WB 0x01010000
/* GRAN=1, WTHRESH=1 */
826
#define E1000_TXDCTL_MAX_TX_DESC_PREFETCH 0x0100001F
/* GRAN=1, PTHRESH=31 */
827
/* Enable the counting of descriptors still to be processed. */
828
#define E1000_TXDCTL_COUNT_DESC 0x00400000
829
830
/* Flow Control Constants */
831
#define FLOW_CONTROL_ADDRESS_LOW 0x00C28001
832
#define FLOW_CONTROL_ADDRESS_HIGH 0x00000100
833
#define FLOW_CONTROL_TYPE 0x8808
834
835
/* 802.1q VLAN Packet Size */
836
#define VLAN_TAG_SIZE 4
/* 802.3ac tag (not DMA'd) */
837
#define E1000_VLAN_FILTER_TBL_SIZE 128
/* VLAN Filter Table (4096 bits) */
838
839
/* Receive Address */
840
/*
841
* Number of high/low register pairs in the RAR. The RAR (Receive Address
842
* Registers) holds the directed and multicast addresses that we monitor.
843
* Technically, we have 16 spots. However, we reserve one of these spots
844
* (RAR[15]) for our directed address used by controllers with
845
* manageability enabled, allowing us room for 15 multicast addresses.
846
*/
847
#define E1000_RAR_ENTRIES 15
848
#define E1000_RAH_AV 0x80000000
/* Receive descriptor valid */
849
#define E1000_RAL_MAC_ADDR_LEN 4
850
#define E1000_RAH_MAC_ADDR_LEN 2
851
#define E1000_RAH_POOL_MASK 0x03FC0000
852
#define E1000_RAH_POOL_1 0x00040000
853
854
/* Error Codes */
855
#define E1000_SUCCESS 0
856
#define E1000_ERR_NVM 1
857
#define E1000_ERR_PHY 2
858
#define E1000_ERR_CONFIG 3
859
#define E1000_ERR_PARAM 4
860
#define E1000_ERR_MAC_INIT 5
861
#define E1000_ERR_PHY_TYPE 6
862
#define E1000_ERR_RESET 9
863
#define E1000_ERR_MASTER_REQUESTS_PENDING 10
864
#define E1000_ERR_HOST_INTERFACE_COMMAND 11
865
#define E1000_BLK_PHY_RESET 12
866
#define E1000_ERR_SWFW_SYNC 13
867
#define E1000_NOT_IMPLEMENTED 14
868
#define E1000_ERR_MBX 15
869
870
/* Loop limit on how long we wait for auto-negotiation to complete */
871
#define FIBER_LINK_UP_LIMIT 50
872
#define COPPER_LINK_UP_LIMIT 10
873
#define PHY_AUTO_NEG_LIMIT 45
874
#define PHY_FORCE_LIMIT 20
875
/* Number of 100 microseconds we wait for PCI Express master disable */
876
#define MASTER_DISABLE_TIMEOUT 800
877
/* Number of milliseconds we wait for PHY configuration done after MAC reset */
878
#define PHY_CFG_TIMEOUT 100
879
/* Number of 2 milliseconds we wait for acquiring MDIO ownership. */
880
#define MDIO_OWNERSHIP_TIMEOUT 10
881
/* Number of milliseconds for NVM auto read done after MAC reset. */
882
#define AUTO_READ_DONE_TIMEOUT 10
883
884
/* Flow Control */
885
#define E1000_FCRTH_RTH 0x0000FFF8
/* Mask Bits[15:3] for RTH */
886
#define E1000_FCRTH_XFCE 0x80000000
/* External Flow Control Enable */
887
#define E1000_FCRTL_RTL 0x0000FFF8
/* Mask Bits[15:3] for RTL */
888
#define E1000_FCRTL_XONE 0x80000000
/* Enable XON frame transmission */
889
890
/* Transmit Configuration Word */
891
#define E1000_TXCW_FD 0x00000020
/* TXCW full duplex */
892
#define E1000_TXCW_HD 0x00000040
/* TXCW half duplex */
893
#define E1000_TXCW_PAUSE 0x00000080
/* TXCW sym pause request */
894
#define E1000_TXCW_ASM_DIR 0x00000100
/* TXCW astm pause direction */
895
#define E1000_TXCW_PAUSE_MASK 0x00000180
/* TXCW pause request mask */
896
#define E1000_TXCW_RF 0x00003000
/* TXCW remote fault */
897
#define E1000_TXCW_NP 0x00008000
/* TXCW next page */
898
#define E1000_TXCW_CW 0x0000ffff
/* TxConfigWord mask */
899
#define E1000_TXCW_TXC 0x40000000
/* Transmit Config control */
900
#define E1000_TXCW_ANE 0x80000000
/* Auto-neg enable */
901
902
/* Receive Configuration Word */
903
#define E1000_RXCW_CW 0x0000ffff
/* RxConfigWord mask */
904
#define E1000_RXCW_NC 0x04000000
/* Receive config no carrier */
905
#define E1000_RXCW_IV 0x08000000
/* Receive config invalid */
906
#define E1000_RXCW_CC 0x10000000
/* Receive config change */
907
#define E1000_RXCW_C 0x20000000
/* Receive config */
908
#define E1000_RXCW_SYNCH 0x40000000
/* Receive config synch */
909
#define E1000_RXCW_ANC 0x80000000
/* Auto-neg complete */
910
911
912
/* PCI Express Control */
913
#define E1000_GCR_RXD_NO_SNOOP 0x00000001
914
#define E1000_GCR_RXDSCW_NO_SNOOP 0x00000002
915
#define E1000_GCR_RXDSCR_NO_SNOOP 0x00000004
916
#define E1000_GCR_TXD_NO_SNOOP 0x00000008
917
#define E1000_GCR_TXDSCW_NO_SNOOP 0x00000010
918
#define E1000_GCR_TXDSCR_NO_SNOOP 0x00000020
919
#define E1000_GCR_CMPL_TMOUT_MASK 0x0000F000
920
#define E1000_GCR_CMPL_TMOUT_10ms 0x00001000
921
#define E1000_GCR_CMPL_TMOUT_RESEND 0x00010000
922
#define E1000_GCR_CAP_VER2 0x00040000
923
924
#define PCIE_NO_SNOOP_ALL (E1000_GCR_RXD_NO_SNOOP | \
925
E1000_GCR_RXDSCW_NO_SNOOP | \
926
E1000_GCR_RXDSCR_NO_SNOOP | \
927
E1000_GCR_TXD_NO_SNOOP | \
928
E1000_GCR_TXDSCW_NO_SNOOP | \
929
E1000_GCR_TXDSCR_NO_SNOOP)
930
931
/* PHY Control Register */
932
#define MII_CR_SPEED_SELECT_MSB 0x0040
/* bits 6,13: 10=1000, 01=100, 00=10 */
933
#define MII_CR_COLL_TEST_ENABLE 0x0080
/* Collision test enable */
934
#define MII_CR_FULL_DUPLEX 0x0100
/* FDX =1, half duplex =0 */
935
#define MII_CR_RESTART_AUTO_NEG 0x0200
/* Restart auto negotiation */
936
#define MII_CR_ISOLATE 0x0400
/* Isolate PHY from MII */
937
#define MII_CR_POWER_DOWN 0x0800
/* Power down */
938
#define MII_CR_AUTO_NEG_EN 0x1000
/* Auto Neg Enable */
939
#define MII_CR_SPEED_SELECT_LSB 0x2000
/* bits 6,13: 10=1000, 01=100, 00=10 */
940
#define MII_CR_LOOPBACK 0x4000
/* 0 = normal, 1 = loopback */
941
#define MII_CR_RESET 0x8000
/* 0 = normal, 1 = PHY reset */
942
#define MII_CR_SPEED_1000 0x0040
943
#define MII_CR_SPEED_100 0x2000
944
#define MII_CR_SPEED_10 0x0000
945
946
/* PHY Status Register */
947
#define MII_SR_EXTENDED_CAPS 0x0001
/* Extended register capabilities */
948
#define MII_SR_JABBER_DETECT 0x0002
/* Jabber Detected */
949
#define MII_SR_LINK_STATUS 0x0004
/* Link Status 1 = link */
950
#define MII_SR_AUTONEG_CAPS 0x0008
/* Auto Neg Capable */
951
#define MII_SR_REMOTE_FAULT 0x0010
/* Remote Fault Detect */
952
#define MII_SR_AUTONEG_COMPLETE 0x0020
/* Auto Neg Complete */
953
#define MII_SR_PREAMBLE_SUPPRESS 0x0040
/* Preamble may be suppressed */
954
#define MII_SR_EXTENDED_STATUS 0x0100
/* Ext. status info in Reg 0x0F */
955
#define MII_SR_100T2_HD_CAPS 0x0200
/* 100T2 Half Duplex Capable */
956
#define MII_SR_100T2_FD_CAPS 0x0400
/* 100T2 Full Duplex Capable */
957
#define MII_SR_10T_HD_CAPS 0x0800
/* 10T Half Duplex Capable */
958
#define MII_SR_10T_FD_CAPS 0x1000
/* 10T Full Duplex Capable */
959
#define MII_SR_100X_HD_CAPS 0x2000
/* 100X Half Duplex Capable */
960
#define MII_SR_100X_FD_CAPS 0x4000
/* 100X Full Duplex Capable */
961
#define MII_SR_100T4_CAPS 0x8000
/* 100T4 Capable */
962
963
/* Autoneg Advertisement Register */
964
#define NWAY_AR_SELECTOR_FIELD 0x0001
/* indicates IEEE 802.3 CSMA/CD */
965
#define NWAY_AR_10T_HD_CAPS 0x0020
/* 10T Half Duplex Capable */
966
#define NWAY_AR_10T_FD_CAPS 0x0040
/* 10T Full Duplex Capable */
967
#define NWAY_AR_100TX_HD_CAPS 0x0080
/* 100TX Half Duplex Capable */
968
#define NWAY_AR_100TX_FD_CAPS 0x0100
/* 100TX Full Duplex Capable */
969
#define NWAY_AR_100T4_CAPS 0x0200
/* 100T4 Capable */
970
#define NWAY_AR_PAUSE 0x0400
/* Pause operation desired */
971
#define NWAY_AR_ASM_DIR 0x0800
/* Asymmetric Pause Direction bit */
972
#define NWAY_AR_REMOTE_FAULT 0x2000
/* Remote Fault detected */
973
#define NWAY_AR_NEXT_PAGE 0x8000
/* Next Page ability supported */
974
975
/* Link Partner Ability Register (Base Page) */
976
#define NWAY_LPAR_SELECTOR_FIELD 0x0000
/* LP protocol selector field */
977
#define NWAY_LPAR_10T_HD_CAPS 0x0020
/* LP is 10T Half Duplex Capable */
978
#define NWAY_LPAR_10T_FD_CAPS 0x0040
/* LP is 10T Full Duplex Capable */
979
#define NWAY_LPAR_100TX_HD_CAPS 0x0080
/* LP is 100TX Half Duplex Capable */
980
#define NWAY_LPAR_100TX_FD_CAPS 0x0100
/* LP is 100TX Full Duplex Capable */
981
#define NWAY_LPAR_100T4_CAPS 0x0200
/* LP is 100T4 Capable */
982
#define NWAY_LPAR_PAUSE 0x0400
/* LP Pause operation desired */
983
#define NWAY_LPAR_ASM_DIR 0x0800
/* LP Asymmetric Pause Direction bit */
984
#define NWAY_LPAR_REMOTE_FAULT 0x2000
/* LP has detected Remote Fault */
985
#define NWAY_LPAR_ACKNOWLEDGE 0x4000
/* LP has rx'd link code word */
986
#define NWAY_LPAR_NEXT_PAGE 0x8000
/* Next Page ability supported */
987
988
/* Autoneg Expansion Register */
989
#define NWAY_ER_LP_NWAY_CAPS 0x0001
/* LP has Auto Neg Capability */
990
#define NWAY_ER_PAGE_RXD 0x0002
/* LP is 10T Half Duplex Capable */
991
#define NWAY_ER_NEXT_PAGE_CAPS 0x0004
/* LP is 10T Full Duplex Capable */
992
#define NWAY_ER_LP_NEXT_PAGE_CAPS 0x0008
/* LP is 100TX Half Duplex Capable */
993
#define NWAY_ER_PAR_DETECT_FAULT 0x0010
/* LP is 100TX Full Duplex Capable */
994
995
/* 1000BASE-T Control Register */
996
#define CR_1000T_ASYM_PAUSE 0x0080
/* Advertise asymmetric pause bit */
997
#define CR_1000T_HD_CAPS 0x0100
/* Advertise 1000T HD capability */
998
#define CR_1000T_FD_CAPS 0x0200
/* Advertise 1000T FD capability */
999
#define CR_1000T_REPEATER_DTE 0x0400
/* 1=Repeater/switch device port */
1000
/* 0=DTE device */
1001
#define CR_1000T_MS_VALUE 0x0800
/* 1=Configure PHY as Master */
1002
/* 0=Configure PHY as Slave */
1003
#define CR_1000T_MS_ENABLE 0x1000
/* 1=Master/Slave manual config value */
1004
/* 0=Automatic Master/Slave config */
1005
#define CR_1000T_TEST_MODE_NORMAL 0x0000
/* Normal Operation */
1006
#define CR_1000T_TEST_MODE_1 0x2000
/* Transmit Waveform test */
1007
#define CR_1000T_TEST_MODE_2 0x4000
/* Master Transmit Jitter test */
1008
#define CR_1000T_TEST_MODE_3 0x6000
/* Slave Transmit Jitter test */
1009
#define CR_1000T_TEST_MODE_4 0x8000
/* Transmitter Distortion test */
1010
1011
/* 1000BASE-T Status Register */
1012
#define SR_1000T_IDLE_ERROR_CNT 0x00FF
/* Num idle errors since last read */
1013
#define SR_1000T_ASYM_PAUSE_DIR 0x0100
/* LP asymmetric pause direction bit */
1014
#define SR_1000T_LP_HD_CAPS 0x0400
/* LP is 1000T HD capable */
1015
#define SR_1000T_LP_FD_CAPS 0x0800
/* LP is 1000T FD capable */
1016
#define SR_1000T_REMOTE_RX_STATUS 0x1000
/* Remote receiver OK */
1017
#define SR_1000T_LOCAL_RX_STATUS 0x2000
/* Local receiver OK */
1018
#define SR_1000T_MS_CONFIG_RES 0x4000
/* 1=Local Tx is Master, 0=Slave */
1019
#define SR_1000T_MS_CONFIG_FAULT 0x8000
/* Master/Slave config fault */
1020
1021
#define SR_1000T_PHY_EXCESSIVE_IDLE_ERR_COUNT 5
1022
1023
/* PHY 1000 MII Register/Bit Definitions */
1024
/* PHY Registers defined by IEEE */
1025
#define PHY_CONTROL 0x00
/* Control Register */
1026
#define PHY_STATUS 0x01
/* Status Register */
1027
#define PHY_ID1 0x02
/* Phy Id Reg (word 1) */
1028
#define PHY_ID2 0x03
/* Phy Id Reg (word 2) */
1029
#define PHY_AUTONEG_ADV 0x04
/* Autoneg Advertisement */
1030
#define PHY_LP_ABILITY 0x05
/* Link Partner Ability (Base Page) */
1031
#define PHY_AUTONEG_EXP 0x06
/* Autoneg Expansion Reg */
1032
#define PHY_NEXT_PAGE_TX 0x07
/* Next Page Tx */
1033
#define PHY_LP_NEXT_PAGE 0x08
/* Link Partner Next Page */
1034
#define PHY_1000T_CTRL 0x09
/* 1000Base-T Control Reg */
1035
#define PHY_1000T_STATUS 0x0A
/* 1000Base-T Status Reg */
1036
#define PHY_EXT_STATUS 0x0F
/* Extended Status Reg */
1037
1038
#define PHY_CONTROL_LB 0x4000
/* PHY Loopback bit */
1039
1040
/* NVM Control */
1041
#define E1000_EECD_SK 0x00000001
/* NVM Clock */
1042
#define E1000_EECD_CS 0x00000002
/* NVM Chip Select */
1043
#define E1000_EECD_DI 0x00000004
/* NVM Data In */
1044
#define E1000_EECD_DO 0x00000008
/* NVM Data Out */
1045
#define E1000_EECD_FWE_MASK 0x00000030
1046
#define E1000_EECD_FWE_DIS 0x00000010
/* Disable FLASH writes */
1047
#define E1000_EECD_FWE_EN 0x00000020
/* Enable FLASH writes */
1048
#define E1000_EECD_FWE_SHIFT 4
1049
#define E1000_EECD_REQ 0x00000040
/* NVM Access Request */
1050
#define E1000_EECD_GNT 0x00000080
/* NVM Access Grant */
1051
#define E1000_EECD_PRES 0x00000100
/* NVM Present */
1052
#define E1000_EECD_SIZE 0x00000200
/* NVM Size (0=64 word 1=256 word) */
1053
/* NVM Addressing bits based on type 0=small, 1=large */
1054
#define E1000_EECD_ADDR_BITS 0x00000400
1055
#define E1000_EECD_TYPE 0x00002000
/* NVM Type (1-SPI, 0-Microwire) */
1056
#define E1000_NVM_GRANT_ATTEMPTS 1000
/* NVM # attempts to gain grant */
1057
#define E1000_EECD_AUTO_RD 0x00000200
/* NVM Auto Read done */
1058
#define E1000_EECD_SIZE_EX_MASK 0x00007800
/* NVM Size */
1059
#define E1000_EECD_SIZE_EX_SHIFT 11
1060
#define E1000_EECD_NVADDS 0x00018000
/* NVM Address Size */
1061
#define E1000_EECD_SELSHAD 0x00020000
/* Select Shadow RAM */
1062
#define E1000_EECD_INITSRAM 0x00040000
/* Initialize Shadow RAM */
1063
#define E1000_EECD_FLUPD 0x00080000
/* Update FLASH */
1064
#define E1000_EECD_AUPDEN 0x00100000
/* Enable Autonomous FLASH update */
1065
#define E1000_EECD_SHADV 0x00200000
/* Shadow RAM Data Valid */
1066
#define E1000_EECD_SEC1VAL 0x00400000
/* Sector One Valid */
1067
#define E1000_EECD_SECVAL_SHIFT 22
1068
#define E1000_EECD_SEC1VAL_VALID_MASK (E1000_EECD_AUTO_RD | E1000_EECD_PRES)
1069
1070
#define E1000_NVM_SWDPIN0 0x0001
/* SWDPIN 0 NVM Value */
1071
#define E1000_NVM_LED_LOGIC 0x0020
/* Led Logic Word */
1072
#define E1000_NVM_RW_REG_DATA 16
/* Offset to data in NVM read/write regs */
1073
#define E1000_NVM_RW_REG_DONE 2
/* Offset to READ/WRITE done bit */
1074
#define E1000_NVM_RW_REG_START 1
/* Start operation */
1075
#define E1000_NVM_RW_ADDR_SHIFT 2
/* Shift to the address bits */
1076
#define E1000_NVM_POLL_WRITE 1
/* Flag for polling for write complete */
1077
#define E1000_NVM_POLL_READ 0
/* Flag for polling for read complete */
1078
#define E1000_FLASH_UPDATES 2000
1079
1080
/* NVM Word Offsets */
1081
#define NVM_COMPAT 0x0003
1082
#define NVM_ID_LED_SETTINGS 0x0004
1083
#define NVM_VERSION 0x0005
1084
#define NVM_SERDES_AMPLITUDE 0x0006
/* SERDES output amplitude */
1085
#define NVM_PHY_CLASS_WORD 0x0007
1086
#define NVM_INIT_CONTROL1_REG 0x000A
1087
#define NVM_INIT_CONTROL2_REG 0x000F
1088
#define NVM_SWDEF_PINS_CTRL_PORT_1 0x0010
1089
#define NVM_INIT_CONTROL3_PORT_B 0x0014
1090
#define NVM_INIT_3GIO_3 0x001A
1091
#define NVM_SWDEF_PINS_CTRL_PORT_0 0x0020
1092
#define NVM_INIT_CONTROL3_PORT_A 0x0024
1093
#define NVM_CFG 0x0012
1094
#define NVM_FLASH_VERSION 0x0032
1095
#define NVM_ALT_MAC_ADDR_PTR 0x0037
1096
#define NVM_CHECKSUM_REG 0x003F
1097
1098
#define E1000_NVM_CFG_DONE_PORT_0 0x040000
/* MNG config cycle done */
1099
#define E1000_NVM_CFG_DONE_PORT_1 0x080000
/* ...for second port */
1100
1101
/* Mask bits for fields in Word 0x0f of the NVM */
1102
#define NVM_WORD0F_PAUSE_MASK 0x3000
1103
#define NVM_WORD0F_PAUSE 0x1000
1104
#define NVM_WORD0F_ASM_DIR 0x2000
1105
#define NVM_WORD0F_ANE 0x0800
1106
#define NVM_WORD0F_SWPDIO_EXT_MASK 0x00F0
1107
#define NVM_WORD0F_LPLU 0x0001
1108
1109
/* Mask bits for fields in Word 0x1a of the NVM */
1110
#define NVM_WORD1A_ASPM_MASK 0x000C
1111
1112
/* For checksumming, the sum of all words in the NVM should equal 0xBABA. */
1113
#define NVM_SUM 0xBABA
1114
1115
#define NVM_MAC_ADDR_OFFSET 0
1116
#define NVM_PBA_OFFSET_0 8
1117
#define NVM_PBA_OFFSET_1 9
1118
#define NVM_RESERVED_WORD 0xFFFF
1119
#define NVM_PHY_CLASS_A 0x8000
1120
#define NVM_SERDES_AMPLITUDE_MASK 0x000F
1121
#define NVM_SIZE_MASK 0x1C00
1122
#define NVM_SIZE_SHIFT 10
1123
#define NVM_WORD_SIZE_BASE_SHIFT 6
1124
#define NVM_SWDPIO_EXT_SHIFT 4
1125
1126
/* NVM Commands - SPI */
1127
#define NVM_MAX_RETRY_SPI 5000
/* Max wait of 5ms, for RDY signal */
1128
#define NVM_READ_OPCODE_SPI 0x03
/* NVM read opcode */
1129
#define NVM_WRITE_OPCODE_SPI 0x02
/* NVM write opcode */
1130
#define NVM_A8_OPCODE_SPI 0x08
/* opcode bit-3 = address bit-8 */
1131
#define NVM_WREN_OPCODE_SPI 0x06
/* NVM set Write Enable latch */
1132
#define NVM_WRDI_OPCODE_SPI 0x04
/* NVM reset Write Enable latch */
1133
#define NVM_RDSR_OPCODE_SPI 0x05
/* NVM read Status register */
1134
#define NVM_WRSR_OPCODE_SPI 0x01
/* NVM write Status register */
1135
1136
/* SPI NVM Status Register */
1137
#define NVM_STATUS_RDY_SPI 0x01
1138
#define NVM_STATUS_WEN_SPI 0x02
1139
#define NVM_STATUS_BP0_SPI 0x04
1140
#define NVM_STATUS_BP1_SPI 0x08
1141
#define NVM_STATUS_WPEN_SPI 0x80
1142
1143
/* Word definitions for ID LED Settings */
1144
#define ID_LED_RESERVED_0000 0x0000
1145
#define ID_LED_RESERVED_FFFF 0xFFFF
1146
#define ID_LED_DEFAULT ((ID_LED_OFF1_ON2 << 12) | \
1147
(ID_LED_OFF1_OFF2 << 8) | \
1148
(ID_LED_DEF1_DEF2 << 4) | \
1149
(ID_LED_DEF1_DEF2))
1150
#define ID_LED_DEF1_DEF2 0x1
1151
#define ID_LED_DEF1_ON2 0x2
1152
#define ID_LED_DEF1_OFF2 0x3
1153
#define ID_LED_ON1_DEF2 0x4
1154
#define ID_LED_ON1_ON2 0x5
1155
#define ID_LED_ON1_OFF2 0x6
1156
#define ID_LED_OFF1_DEF2 0x7
1157
#define ID_LED_OFF1_ON2 0x8
1158
#define ID_LED_OFF1_OFF2 0x9
1159
1160
#define IGP_ACTIVITY_LED_MASK 0xFFFFF0FF
1161
#define IGP_ACTIVITY_LED_ENABLE 0x0300
1162
#define IGP_LED3_MODE 0x07000000
1163
1164
/* PCI/PCI-X/PCI-EX Config space */
1165
#define PCI_HEADER_TYPE_REGISTER 0x0E
1166
#define PCIE_LINK_STATUS 0x12
1167
#define PCIE_DEVICE_CONTROL2 0x28
1168
1169
#define PCI_HEADER_TYPE_MULTIFUNC 0x80
1170
#define PCIE_LINK_WIDTH_MASK 0x3F0
1171
#define PCIE_LINK_WIDTH_SHIFT 4
1172
#define PCIE_DEVICE_CONTROL2_16ms 0x0005
1173
1174
#ifndef ETH_ADDR_LEN
1175
#define ETH_ADDR_LEN 6
1176
#endif
1177
1178
#define PHY_REVISION_MASK 0xFFFFFFF0
1179
#define MAX_PHY_REG_ADDRESS 0x1F
/* 5 bit address bus (0-0x1F) */
1180
#define MAX_PHY_MULTI_PAGE_REG 0xF
1181
1182
/* Bit definitions for valid PHY IDs. */
1183
/*
1184
* I = Integrated
1185
* E = External
1186
*/
1187
#define M88E1000_E_PHY_ID 0x01410C50
1188
#define M88E1000_I_PHY_ID 0x01410C30
1189
#define M88E1011_I_PHY_ID 0x01410C20
1190
#define IGP01E1000_I_PHY_ID 0x02A80380
1191
#define M88E1011_I_REV_4 0x04
1192
#define M88E1111_I_PHY_ID 0x01410CC0
1193
#define GG82563_E_PHY_ID 0x01410CA0
1194
#define IGP03E1000_E_PHY_ID 0x02A80390
1195
#define IFE_E_PHY_ID 0x02A80330
1196
#define IFE_PLUS_E_PHY_ID 0x02A80320
1197
#define IFE_C_E_PHY_ID 0x02A80310
1198
#define M88_VENDOR 0x0141
1199
1200
/* M88E1000 Specific Registers */
1201
#define M88E1000_PHY_SPEC_CTRL 0x10
/* PHY Specific Control Register */
1202
#define M88E1000_PHY_SPEC_STATUS 0x11
/* PHY Specific Status Register */
1203
#define M88E1000_INT_ENABLE 0x12
/* Interrupt Enable Register */
1204
#define M88E1000_INT_STATUS 0x13
/* Interrupt Status Register */
1205
#define M88E1000_EXT_PHY_SPEC_CTRL 0x14
/* Extended PHY Specific Control */
1206
#define M88E1000_RX_ERR_CNTR 0x15
/* Receive Error Counter */
1207
1208
#define M88E1000_PHY_EXT_CTRL 0x1A
/* PHY extend control register */
1209
#define M88E1000_PHY_PAGE_SELECT 0x1D
/* Reg 29 for page number setting */
1210
#define M88E1000_PHY_GEN_CONTROL 0x1E
/* Its meaning depends on reg 29 */
1211
#define M88E1000_PHY_VCO_REG_BIT8 0x100
/* Bits 8 & 11 are adjusted for */
1212
#define M88E1000_PHY_VCO_REG_BIT11 0x800
/* improved BER performance */
1213
1214
/* M88E1000 PHY Specific Control Register */
1215
#define M88E1000_PSCR_JABBER_DISABLE 0x0001
/* 1=Jabber Function disabled */
1216
#define M88E1000_PSCR_POLARITY_REVERSAL 0x0002
/* 1=Polarity Reverse enabled */
1217
#define M88E1000_PSCR_SQE_TEST 0x0004
/* 1=SQE Test enabled */
1218
/* 1=CLK125 low, 0=CLK125 toggling */
1219
#define M88E1000_PSCR_CLK125_DISABLE 0x0010
1220
#define M88E1000_PSCR_MDI_MANUAL_MODE 0x0000
/* MDI Crossover Mode bits 6:5 */
1221
/* Manual MDI configuration */
1222
#define M88E1000_PSCR_MDIX_MANUAL_MODE 0x0020
/* Manual MDIX configuration */
1223
/* 1000BASE-T: Auto crossover, 100BASE-TX/10BASE-T: MDI Mode */
1224
#define M88E1000_PSCR_AUTO_X_1000T 0x0040
1225
/* Auto crossover enabled all speeds */
1226
#define M88E1000_PSCR_AUTO_X_MODE 0x0060
1227
/*
1228
* 1=Enable Extended 10BASE-T distance (Lower 10BASE-T Rx Threshold
1229
* 0=Normal 10BASE-T Rx Threshold
1230
*/
1231
#define M88E1000_PSCR_EN_10BT_EXT_DIST 0x0080
1232
/* 1=5-bit interface in 100BASE-TX, 0=MII interface in 100BASE-TX */
1233
#define M88E1000_PSCR_MII_5BIT_ENABLE 0x0100
1234
#define M88E1000_PSCR_SCRAMBLER_DISABLE 0x0200
/* 1=Scrambler disable */
1235
#define M88E1000_PSCR_FORCE_LINK_GOOD 0x0400
/* 1=Force link good */
1236
#define M88E1000_PSCR_ASSERT_CRS_ON_TX 0x0800
/* 1=Assert CRS on Tx */
1237
1238
/* M88E1000 PHY Specific Status Register */
1239
#define M88E1000_PSSR_JABBER 0x0001
/* 1=Jabber */
1240
#define M88E1000_PSSR_REV_POLARITY 0x0002
/* 1=Polarity reversed */
1241
#define M88E1000_PSSR_DOWNSHIFT 0x0020
/* 1=Downshifted */
1242
#define M88E1000_PSSR_MDIX 0x0040
/* 1=MDIX; 0=MDI */
1243
/*
1244
* 0 = <50M
1245
* 1 = 50-80M
1246
* 2 = 80-110M
1247
* 3 = 110-140M
1248
* 4 = >140M
1249
*/
1250
#define M88E1000_PSSR_CABLE_LENGTH 0x0380
1251
#define M88E1000_PSSR_LINK 0x0400
/* 1=Link up, 0=Link down */
1252
#define M88E1000_PSSR_SPD_DPLX_RESOLVED 0x0800
/* 1=Speed & Duplex resolved */
1253
#define M88E1000_PSSR_PAGE_RCVD 0x1000
/* 1=Page received */
1254
#define M88E1000_PSSR_DPLX 0x2000
/* 1=Duplex 0=Half Duplex */
1255
#define M88E1000_PSSR_SPEED 0xC000
/* Speed, bits 14:15 */
1256
#define M88E1000_PSSR_10MBS 0x0000
/* 00=10Mbs */
1257
#define M88E1000_PSSR_100MBS 0x4000
/* 01=100Mbs */
1258
#define M88E1000_PSSR_1000MBS 0x8000
/* 10=1000Mbs */
1259
1260
#define M88E1000_PSSR_CABLE_LENGTH_SHIFT 7
1261
1262
/* M88E1000 Extended PHY Specific Control Register */
1263
#define M88E1000_EPSCR_FIBER_LOOPBACK 0x4000
/* 1=Fiber loopback */
1264
/*
1265
* 1 = Lost lock detect enabled.
1266
* Will assert lost lock and bring
1267
* link down if idle not seen
1268
* within 1ms in 1000BASE-T
1269
*/
1270
#define M88E1000_EPSCR_DOWN_NO_IDLE 0x8000
1271
/*
1272
* Number of times we will attempt to autonegotiate before downshifting if we
1273
* are the master
1274
*/
1275
#define M88E1000_EPSCR_MASTER_DOWNSHIFT_MASK 0x0C00
1276
#define M88E1000_EPSCR_MASTER_DOWNSHIFT_1X 0x0000
1277
#define M88E1000_EPSCR_MASTER_DOWNSHIFT_2X 0x0400
1278
#define M88E1000_EPSCR_MASTER_DOWNSHIFT_3X 0x0800
1279
#define M88E1000_EPSCR_MASTER_DOWNSHIFT_4X 0x0C00
1280
/*
1281
* Number of times we will attempt to autonegotiate before downshifting if we
1282
* are the slave
1283
*/
1284
#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK 0x0300
1285
#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_DIS 0x0000
1286
#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_1X 0x0100
1287
#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_2X 0x0200
1288
#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_3X 0x0300
1289
#define M88E1000_EPSCR_TX_CLK_2_5 0x0060
/* 2.5 MHz TX_CLK */
1290
#define M88E1000_EPSCR_TX_CLK_25 0x0070
/* 25 MHz TX_CLK */
1291
#define M88E1000_EPSCR_TX_CLK_0 0x0000
/* NO TX_CLK */
1292
1293
/* M88EC018 Rev 2 specific DownShift settings */
1294
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_MASK 0x0E00
1295
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_1X 0x0000
1296
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_2X 0x0200
1297
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_3X 0x0400
1298
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_4X 0x0600
1299
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_5X 0x0800
1300
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_6X 0x0A00
1301
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_7X 0x0C00
1302
#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_8X 0x0E00
1303
1304
/*
1305
* Bits...
1306
* 15-5: page
1307
* 4-0: register offset
1308
*/
1309
#define GG82563_PAGE_SHIFT 5
1310
#define GG82563_REG(page, reg) \
1311
(((page) << GG82563_PAGE_SHIFT) | ((reg) & MAX_PHY_REG_ADDRESS))
1312
#define GG82563_MIN_ALT_REG 30
1313
1314
/* GG82563 Specific Registers */
1315
#define GG82563_PHY_SPEC_CTRL \
1316
GG82563_REG(0, 16)
/* PHY Specific Control */
1317
#define GG82563_PHY_SPEC_STATUS \
1318
GG82563_REG(0, 17)
/* PHY Specific Status */
1319
#define GG82563_PHY_INT_ENABLE \
1320
GG82563_REG(0, 18)
/* Interrupt Enable */
1321
#define GG82563_PHY_SPEC_STATUS_2 \
1322
GG82563_REG(0, 19)
/* PHY Specific Status 2 */
1323
#define GG82563_PHY_RX_ERR_CNTR \
1324
GG82563_REG(0, 21)
/* Receive Error Counter */
1325
#define GG82563_PHY_PAGE_SELECT \
1326
GG82563_REG(0, 22)
/* Page Select */
1327
#define GG82563_PHY_SPEC_CTRL_2 \
1328
GG82563_REG(0, 26)
/* PHY Specific Control 2 */
1329
#define GG82563_PHY_PAGE_SELECT_ALT \
1330
GG82563_REG(0, 29)
/* Alternate Page Select */
1331
#define GG82563_PHY_TEST_CLK_CTRL \
1332
GG82563_REG(0, 30)
/* Test Clock Control (use reg. 29 to select) */
1333
1334
#define GG82563_PHY_MAC_SPEC_CTRL \
1335
GG82563_REG(2, 21)
/* MAC Specific Control Register */
1336
#define GG82563_PHY_MAC_SPEC_CTRL_2 \
1337
GG82563_REG(2, 26)
/* MAC Specific Control 2 */
1338
1339
#define GG82563_PHY_DSP_DISTANCE \
1340
GG82563_REG(5, 26)
/* DSP Distance */
1341
1342
/* Page 193 - Port Control Registers */
1343
#define GG82563_PHY_KMRN_MODE_CTRL \
1344
GG82563_REG(193, 16)
/* Kumeran Mode Control */
1345
#define GG82563_PHY_PORT_RESET \
1346
GG82563_REG(193, 17)
/* Port Reset */
1347
#define GG82563_PHY_REVISION_ID \
1348
GG82563_REG(193, 18)
/* Revision ID */
1349
#define GG82563_PHY_DEVICE_ID \
1350
GG82563_REG(193, 19)
/* Device ID */
1351
#define GG82563_PHY_PWR_MGMT_CTRL \
1352
GG82563_REG(193, 20)
/* Power Management Control */
1353
#define GG82563_PHY_RATE_ADAPT_CTRL \
1354
GG82563_REG(193, 25)
/* Rate Adaptation Control */
1355
1356
/* Page 194 - KMRN Registers */
1357
#define GG82563_PHY_KMRN_FIFO_CTRL_STAT \
1358
GG82563_REG(194, 16)
/* FIFO's Control/Status */
1359
#define GG82563_PHY_KMRN_CTRL \
1360
GG82563_REG(194, 17)
/* Control */
1361
#define GG82563_PHY_INBAND_CTRL \
1362
GG82563_REG(194, 18)
/* Inband Control */
1363
#define GG82563_PHY_KMRN_DIAGNOSTIC \
1364
GG82563_REG(194, 19)
/* Diagnostic */
1365
#define GG82563_PHY_ACK_TIMEOUTS \
1366
GG82563_REG(194, 20)
/* Acknowledge Timeouts */
1367
#define GG82563_PHY_ADV_ABILITY \
1368
GG82563_REG(194, 21)
/* Advertised Ability */
1369
#define GG82563_PHY_LINK_PARTNER_ADV_ABILITY \
1370
GG82563_REG(194, 23)
/* Link Partner Advertised Ability */
1371
#define GG82563_PHY_ADV_NEXT_PAGE \
1372
GG82563_REG(194, 24)
/* Advertised Next Page */
1373
#define GG82563_PHY_LINK_PARTNER_ADV_NEXT_PAGE \
1374
GG82563_REG(194, 25)
/* Link Partner Advertised Next page */
1375
#define GG82563_PHY_KMRN_MISC \
1376
GG82563_REG(194, 26)
/* Misc. */
1377
1378
/* MDI Control */
1379
#define E1000_MDIC_DATA_MASK 0x0000FFFF
1380
#define E1000_MDIC_REG_MASK 0x001F0000
1381
#define E1000_MDIC_REG_SHIFT 16
1382
#define E1000_MDIC_PHY_MASK 0x03E00000
1383
#define E1000_MDIC_PHY_SHIFT 21
1384
#define E1000_MDIC_OP_WRITE 0x04000000
1385
#define E1000_MDIC_OP_READ 0x08000000
1386
#define E1000_MDIC_READY 0x10000000
1387
#define E1000_MDIC_INT_EN 0x20000000
1388
#define E1000_MDIC_ERROR 0x40000000
1389
1390
/* SerDes Control */
1391
#define E1000_GEN_CTL_READY 0x80000000
1392
#define E1000_GEN_CTL_ADDRESS_SHIFT 8
1393
#define E1000_GEN_POLL_TIMEOUT 640
1394
1395
#endif
/* _IGBVF_DEFINES_H_ */
FILE_LICENCE
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition
compiler.h:896
Generated by
1.14.0