xref: /titanic_44/usr/src/uts/common/io/e1000api/e1000_regs.h (revision 7c5988f936b3be75c91374b25ee25f68beb40878)
175eba5b6SRobert Mustacchi /******************************************************************************
275eba5b6SRobert Mustacchi 
3*7c5988f9SRobert Mustacchi   Copyright (c) 2001-2015, Intel Corporation
475eba5b6SRobert Mustacchi   All rights reserved.
575eba5b6SRobert Mustacchi 
675eba5b6SRobert Mustacchi   Redistribution and use in source and binary forms, with or without
775eba5b6SRobert Mustacchi   modification, are permitted provided that the following conditions are met:
875eba5b6SRobert Mustacchi 
975eba5b6SRobert Mustacchi    1. Redistributions of source code must retain the above copyright notice,
1075eba5b6SRobert Mustacchi       this list of conditions and the following disclaimer.
1175eba5b6SRobert Mustacchi 
1275eba5b6SRobert Mustacchi    2. Redistributions in binary form must reproduce the above copyright
1375eba5b6SRobert Mustacchi       notice, this list of conditions and the following disclaimer in the
1475eba5b6SRobert Mustacchi       documentation and/or other materials provided with the distribution.
1575eba5b6SRobert Mustacchi 
1675eba5b6SRobert Mustacchi    3. Neither the name of the Intel Corporation nor the names of its
1775eba5b6SRobert Mustacchi       contributors may be used to endorse or promote products derived from
1875eba5b6SRobert Mustacchi       this software without specific prior written permission.
1975eba5b6SRobert Mustacchi 
2075eba5b6SRobert Mustacchi   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
2175eba5b6SRobert Mustacchi   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2275eba5b6SRobert Mustacchi   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2375eba5b6SRobert Mustacchi   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
2475eba5b6SRobert Mustacchi   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2575eba5b6SRobert Mustacchi   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2675eba5b6SRobert Mustacchi   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2775eba5b6SRobert Mustacchi   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2875eba5b6SRobert Mustacchi   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2975eba5b6SRobert Mustacchi   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
3075eba5b6SRobert Mustacchi   POSSIBILITY OF SUCH DAMAGE.
3175eba5b6SRobert Mustacchi 
3275eba5b6SRobert Mustacchi ******************************************************************************/
3375eba5b6SRobert Mustacchi /*$FreeBSD$*/
3475eba5b6SRobert Mustacchi 
3575eba5b6SRobert Mustacchi #ifndef _E1000_REGS_H_
3675eba5b6SRobert Mustacchi #define _E1000_REGS_H_
3775eba5b6SRobert Mustacchi 
3875eba5b6SRobert Mustacchi #define E1000_CTRL	0x00000  /* Device Control - RW */
3975eba5b6SRobert Mustacchi #define E1000_CTRL_DUP	0x00004  /* Device Control Duplicate (Shadow) - RW */
4075eba5b6SRobert Mustacchi #define E1000_STATUS	0x00008  /* Device Status - RO */
4175eba5b6SRobert Mustacchi #define E1000_EECD	0x00010  /* EEPROM/Flash Control - RW */
4275eba5b6SRobert Mustacchi #define E1000_EERD	0x00014  /* EEPROM Read - RW */
4375eba5b6SRobert Mustacchi #define E1000_CTRL_EXT	0x00018  /* Extended Device Control - RW */
4475eba5b6SRobert Mustacchi #define E1000_FLA	0x0001C  /* Flash Access - RW */
4575eba5b6SRobert Mustacchi #define E1000_MDIC	0x00020  /* MDI Control - RW */
4675eba5b6SRobert Mustacchi #define E1000_MDICNFG	0x00E04  /* MDI Config - RW */
4775eba5b6SRobert Mustacchi #define E1000_REGISTER_SET_SIZE		0x20000 /* CSR Size */
4875eba5b6SRobert Mustacchi #define E1000_EEPROM_INIT_CTRL_WORD_2	0x0F /* EEPROM Init Ctrl Word 2 */
4975eba5b6SRobert Mustacchi #define E1000_EEPROM_PCIE_CTRL_WORD_2	0x28 /* EEPROM PCIe Ctrl Word 2 */
5075eba5b6SRobert Mustacchi #define E1000_BARCTRL			0x5BBC /* BAR ctrl reg */
5175eba5b6SRobert Mustacchi #define E1000_BARCTRL_FLSIZE		0x0700 /* BAR ctrl Flsize */
5275eba5b6SRobert Mustacchi #define E1000_BARCTRL_CSRSIZE		0x2000 /* BAR ctrl CSR size */
5313485e69SGarrett D'Amore #define E1000_MPHY_ADDR_CTRL	0x0024 /* GbE MPHY Address Control */
5413485e69SGarrett D'Amore #define E1000_MPHY_DATA		0x0E10 /* GBE MPHY Data */
5513485e69SGarrett D'Amore #define E1000_MPHY_STAT		0x0E0C /* GBE MPHY Statistics */
5613485e69SGarrett D'Amore #define E1000_PPHY_CTRL		0x5b48 /* PCIe PHY Control */
5775eba5b6SRobert Mustacchi #define E1000_I350_BARCTRL		0x5BFC /* BAR ctrl reg */
5875eba5b6SRobert Mustacchi #define E1000_I350_DTXMXPKTSZ		0x355C /* Maximum sent packet size reg*/
5975eba5b6SRobert Mustacchi #define E1000_SCTL	0x00024  /* SerDes Control - RW */
6075eba5b6SRobert Mustacchi #define E1000_FCAL	0x00028  /* Flow Control Address Low - RW */
6175eba5b6SRobert Mustacchi #define E1000_FCAH	0x0002C  /* Flow Control Address High -RW */
62c124a83eSRobert Mustacchi #define E1000_FEXT	0x0002C  /* Future Extended - RW */
6375eba5b6SRobert Mustacchi #define E1000_FEXTNVM	0x00028  /* Future Extended NVM - RW */
6475eba5b6SRobert Mustacchi #define E1000_FEXTNVM3	0x0003C  /* Future Extended NVM 3 - RW */
6575eba5b6SRobert Mustacchi #define E1000_FEXTNVM4	0x00024  /* Future Extended NVM 4 - RW */
6675eba5b6SRobert Mustacchi #define E1000_FEXTNVM6	0x00010  /* Future Extended NVM 6 - RW */
6775eba5b6SRobert Mustacchi #define E1000_FEXTNVM7	0x000E4  /* Future Extended NVM 7 - RW */
68*7c5988f9SRobert Mustacchi #define E1000_FEXTNVM9	0x5BB4  /* Future Extended NVM 9 - RW */
69*7c5988f9SRobert Mustacchi #define E1000_FEXTNVM11	0x5BBC  /* Future Extended NVM 11 - RW */
70*7c5988f9SRobert Mustacchi #define E1000_PCIEANACFG	0x00F18 /* PCIE Analog Config */
7175eba5b6SRobert Mustacchi #define E1000_FCT	0x00030  /* Flow Control Type - RW */
7275eba5b6SRobert Mustacchi #define E1000_CONNSW	0x00034  /* Copper/Fiber switch control - RW */
7375eba5b6SRobert Mustacchi #define E1000_VET	0x00038  /* VLAN Ether Type - RW */
7475eba5b6SRobert Mustacchi #define E1000_ICR	0x000C0  /* Interrupt Cause Read - R/clr */
7575eba5b6SRobert Mustacchi #define E1000_ITR	0x000C4  /* Interrupt Throttling Rate - RW */
7675eba5b6SRobert Mustacchi #define E1000_ICS	0x000C8  /* Interrupt Cause Set - WO */
7775eba5b6SRobert Mustacchi #define E1000_IMS	0x000D0  /* Interrupt Mask Set - RW */
7875eba5b6SRobert Mustacchi #define E1000_IMC	0x000D8  /* Interrupt Mask Clear - WO */
7975eba5b6SRobert Mustacchi #define E1000_IAM	0x000E0  /* Interrupt Acknowledge Auto Mask */
8075eba5b6SRobert Mustacchi #define E1000_IVAR	0x000E4  /* Interrupt Vector Allocation Register - RW */
8175eba5b6SRobert Mustacchi #define E1000_SVCR	0x000F0
8275eba5b6SRobert Mustacchi #define E1000_SVT	0x000F4
8375eba5b6SRobert Mustacchi #define E1000_LPIC	0x000FC  /* Low Power IDLE control */
8475eba5b6SRobert Mustacchi #define E1000_RCTL	0x00100  /* Rx Control - RW */
8575eba5b6SRobert Mustacchi #define E1000_FCTTV	0x00170  /* Flow Control Transmit Timer Value - RW */
8675eba5b6SRobert Mustacchi #define E1000_TXCW	0x00178  /* Tx Configuration Word - RW */
8775eba5b6SRobert Mustacchi #define E1000_RXCW	0x00180  /* Rx Configuration Word - RO */
8875eba5b6SRobert Mustacchi #define E1000_PBA_ECC	0x01100  /* PBA ECC Register */
8975eba5b6SRobert Mustacchi #define E1000_EICR	0x01580  /* Ext. Interrupt Cause Read - R/clr */
9075eba5b6SRobert Mustacchi #define E1000_EITR(_n)	(0x01680 + (0x4 * (_n)))
9175eba5b6SRobert Mustacchi #define E1000_EICS	0x01520  /* Ext. Interrupt Cause Set - W0 */
9275eba5b6SRobert Mustacchi #define E1000_EIMS	0x01524  /* Ext. Interrupt Mask Set/Read - RW */
9375eba5b6SRobert Mustacchi #define E1000_EIMC	0x01528  /* Ext. Interrupt Mask Clear - WO */
9475eba5b6SRobert Mustacchi #define E1000_EIAC	0x0152C  /* Ext. Interrupt Auto Clear - RW */
9575eba5b6SRobert Mustacchi #define E1000_EIAM	0x01530  /* Ext. Interrupt Ack Auto Clear Mask - RW */
9675eba5b6SRobert Mustacchi #define E1000_GPIE	0x01514  /* General Purpose Interrupt Enable - RW */
9775eba5b6SRobert Mustacchi #define E1000_IVAR0	0x01700  /* Interrupt Vector Allocation (array) - RW */
9875eba5b6SRobert Mustacchi #define E1000_IVAR_MISC	0x01740 /* IVAR for "other" causes - RW */
9975eba5b6SRobert Mustacchi #define E1000_TCTL	0x00400  /* Tx Control - RW */
10075eba5b6SRobert Mustacchi #define E1000_TCTL_EXT	0x00404  /* Extended Tx Control - RW */
10175eba5b6SRobert Mustacchi #define E1000_TIPG	0x00410  /* Tx Inter-packet gap -RW */
10275eba5b6SRobert Mustacchi #define E1000_TBT	0x00448  /* Tx Burst Timer - RW */
10375eba5b6SRobert Mustacchi #define E1000_AIT	0x00458  /* Adaptive Interframe Spacing Throttle - RW */
10475eba5b6SRobert Mustacchi #define E1000_LEDCTL	0x00E00  /* LED Control - RW */
10513485e69SGarrett D'Amore #define E1000_LEDMUX	0x08130  /* LED MUX Control */
10675eba5b6SRobert Mustacchi #define E1000_EXTCNF_CTRL	0x00F00  /* Extended Configuration Control */
10775eba5b6SRobert Mustacchi #define E1000_EXTCNF_SIZE	0x00F08  /* Extended Configuration Size */
10875eba5b6SRobert Mustacchi #define E1000_PHY_CTRL	0x00F10  /* PHY Control Register in CSR */
10975eba5b6SRobert Mustacchi #define E1000_POEMB	E1000_PHY_CTRL /* PHY OEM Bits */
11075eba5b6SRobert Mustacchi #define E1000_PBA	0x01000  /* Packet Buffer Allocation - RW */
11175eba5b6SRobert Mustacchi #define E1000_PBS	0x01008  /* Packet Buffer Size */
11275eba5b6SRobert Mustacchi #define E1000_PBECCSTS	0x0100C  /* Packet Buffer ECC Status - RW */
113*7c5988f9SRobert Mustacchi #define E1000_IOSFPC	0x00F28  /* TX corrupted data  */
11475eba5b6SRobert Mustacchi #define E1000_EEMNGCTL	0x01010  /* MNG EEprom Control */
115*7c5988f9SRobert Mustacchi #define E1000_EEMNGCTL_I210	0x01010  /* i210 MNG EEprom Mode Control */
11675eba5b6SRobert Mustacchi #define E1000_EEARBC	0x01024  /* EEPROM Auto Read Bus Control */
117c124a83eSRobert Mustacchi #define E1000_EEARBC_I210	0x12024 /* EEPROM Auto Read Bus Control */
11875eba5b6SRobert Mustacchi #define E1000_FLASHT	0x01028  /* FLASH Timer Register */
11975eba5b6SRobert Mustacchi #define E1000_EEWR	0x0102C  /* EEPROM Write Register - RW */
12075eba5b6SRobert Mustacchi #define E1000_FLSWCTL	0x01030  /* FLASH control register */
12175eba5b6SRobert Mustacchi #define E1000_FLSWDATA	0x01034  /* FLASH data register */
12275eba5b6SRobert Mustacchi #define E1000_FLSWCNT	0x01038  /* FLASH Access Counter */
12375eba5b6SRobert Mustacchi #define E1000_FLOP	0x0103C  /* FLASH Opcode Register */
12475eba5b6SRobert Mustacchi #define E1000_I2CCMD	0x01028  /* SFPI2C Command Register - RW */
12575eba5b6SRobert Mustacchi #define E1000_I2CPARAMS	0x0102C /* SFPI2C Parameters Register - RW */
12675eba5b6SRobert Mustacchi #define E1000_I2CBB_EN	0x00000100  /* I2C - Bit Bang Enable */
12775eba5b6SRobert Mustacchi #define E1000_I2C_CLK_OUT	0x00000200  /* I2C- Clock */
12875eba5b6SRobert Mustacchi #define E1000_I2C_DATA_OUT	0x00000400  /* I2C- Data Out */
12975eba5b6SRobert Mustacchi #define E1000_I2C_DATA_OE_N	0x00000800  /* I2C- Data Output Enable */
13075eba5b6SRobert Mustacchi #define E1000_I2C_DATA_IN	0x00001000  /* I2C- Data In */
13175eba5b6SRobert Mustacchi #define E1000_I2C_CLK_OE_N	0x00002000  /* I2C- Clock Output Enable */
13275eba5b6SRobert Mustacchi #define E1000_I2C_CLK_IN	0x00004000  /* I2C- Clock In */
13375eba5b6SRobert Mustacchi #define E1000_I2C_CLK_STRETCH_DIS	0x00008000 /* I2C- Dis Clk Stretching */
13475eba5b6SRobert Mustacchi #define E1000_WDSTP	0x01040  /* Watchdog Setup - RW */
13575eba5b6SRobert Mustacchi #define E1000_SWDSTS	0x01044  /* SW Device Status - RW */
13675eba5b6SRobert Mustacchi #define E1000_FRTIMER	0x01048  /* Free Running Timer - RW */
13775eba5b6SRobert Mustacchi #define E1000_TCPTIMER	0x0104C  /* TCP Timer - RW */
13875eba5b6SRobert Mustacchi #define E1000_VPDDIAG	0x01060  /* VPD Diagnostic - RO */
13975eba5b6SRobert Mustacchi #define E1000_ICR_V2	0x01500  /* Intr Cause - new location - RC */
14075eba5b6SRobert Mustacchi #define E1000_ICS_V2	0x01504  /* Intr Cause Set - new location - WO */
14175eba5b6SRobert Mustacchi #define E1000_IMS_V2	0x01508  /* Intr Mask Set/Read - new location - RW */
14275eba5b6SRobert Mustacchi #define E1000_IMC_V2	0x0150C  /* Intr Mask Clear - new location - WO */
14375eba5b6SRobert Mustacchi #define E1000_IAM_V2	0x01510  /* Intr Ack Auto Mask - new location - RW */
14475eba5b6SRobert Mustacchi #define E1000_ERT	0x02008  /* Early Rx Threshold - RW */
14575eba5b6SRobert Mustacchi #define E1000_FCRTL	0x02160  /* Flow Control Receive Threshold Low - RW */
14675eba5b6SRobert Mustacchi #define E1000_FCRTH	0x02168  /* Flow Control Receive Threshold High - RW */
14775eba5b6SRobert Mustacchi #define E1000_PSRCTL	0x02170  /* Packet Split Receive Control - RW */
14875eba5b6SRobert Mustacchi #define E1000_RDFH	0x02410  /* Rx Data FIFO Head - RW */
14975eba5b6SRobert Mustacchi #define E1000_RDFT	0x02418  /* Rx Data FIFO Tail - RW */
15075eba5b6SRobert Mustacchi #define E1000_RDFHS	0x02420  /* Rx Data FIFO Head Saved - RW */
15175eba5b6SRobert Mustacchi #define E1000_RDFTS	0x02428  /* Rx Data FIFO Tail Saved - RW */
15275eba5b6SRobert Mustacchi #define E1000_RDFPC	0x02430  /* Rx Data FIFO Packet Count - RW */
15375eba5b6SRobert Mustacchi #define E1000_PBRTH	0x02458  /* PB Rx Arbitration Threshold - RW */
15475eba5b6SRobert Mustacchi #define E1000_FCRTV	0x02460  /* Flow Control Refresh Timer Value - RW */
15575eba5b6SRobert Mustacchi /* Split and Replication Rx Control - RW */
15675eba5b6SRobert Mustacchi #define E1000_RDPUMB	0x025CC  /* DMA Rx Descriptor uC Mailbox - RW */
15775eba5b6SRobert Mustacchi #define E1000_RDPUAD	0x025D0  /* DMA Rx Descriptor uC Addr Command - RW */
15875eba5b6SRobert Mustacchi #define E1000_RDPUWD	0x025D4  /* DMA Rx Descriptor uC Data Write - RW */
15975eba5b6SRobert Mustacchi #define E1000_RDPURD	0x025D8  /* DMA Rx Descriptor uC Data Read - RW */
16075eba5b6SRobert Mustacchi #define E1000_RDPUCTL	0x025DC  /* DMA Rx Descriptor uC Control - RW */
16175eba5b6SRobert Mustacchi #define E1000_PBDIAG	0x02458  /* Packet Buffer Diagnostic - RW */
16275eba5b6SRobert Mustacchi #define E1000_RXPBS	0x02404  /* Rx Packet Buffer Size - RW */
16375eba5b6SRobert Mustacchi #define E1000_IRPBS	0x02404 /* Same as RXPBS, renamed for newer Si - RW */
16475eba5b6SRobert Mustacchi #define E1000_PBRWAC	0x024E8 /* Rx packet buffer wrap around counter - RO */
16575eba5b6SRobert Mustacchi #define E1000_RDTR	0x02820  /* Rx Delay Timer - RW */
16675eba5b6SRobert Mustacchi #define E1000_RADV	0x0282C  /* Rx Interrupt Absolute Delay Timer - RW */
16713485e69SGarrett D'Amore #define E1000_EMIADD	0x10     /* Extended Memory Indirect Address */
16813485e69SGarrett D'Amore #define E1000_EMIDATA	0x11     /* Extended Memory Indirect Data */
16975eba5b6SRobert Mustacchi #define E1000_SRWR		0x12018  /* Shadow Ram Write Register - RW */
17075eba5b6SRobert Mustacchi #define E1000_I210_FLMNGCTL	0x12038
17175eba5b6SRobert Mustacchi #define E1000_I210_FLMNGDATA	0x1203C
17275eba5b6SRobert Mustacchi #define E1000_I210_FLMNGCNT	0x12040
17375eba5b6SRobert Mustacchi 
17475eba5b6SRobert Mustacchi #define E1000_I210_FLSWCTL	0x12048
17575eba5b6SRobert Mustacchi #define E1000_I210_FLSWDATA	0x1204C
17675eba5b6SRobert Mustacchi #define E1000_I210_FLSWCNT	0x12050
17775eba5b6SRobert Mustacchi 
17875eba5b6SRobert Mustacchi #define E1000_I210_FLA		0x1201C
17975eba5b6SRobert Mustacchi 
18075eba5b6SRobert Mustacchi #define E1000_INVM_DATA_REG(_n)	(0x12120 + 4*(_n))
18175eba5b6SRobert Mustacchi #define E1000_INVM_SIZE		64 /* Number of INVM Data Registers */
18275eba5b6SRobert Mustacchi 
18375eba5b6SRobert Mustacchi /* QAV Tx mode control register */
18475eba5b6SRobert Mustacchi #define E1000_I210_TQAVCTRL	0x3570
18575eba5b6SRobert Mustacchi 
18675eba5b6SRobert Mustacchi /* QAV Tx mode control register bitfields masks */
18775eba5b6SRobert Mustacchi /* QAV enable */
18875eba5b6SRobert Mustacchi #define E1000_TQAVCTRL_MODE			(1 << 0)
18975eba5b6SRobert Mustacchi /* Fetching arbitration type */
19075eba5b6SRobert Mustacchi #define E1000_TQAVCTRL_FETCH_ARB		(1 << 4)
19175eba5b6SRobert Mustacchi /* Fetching timer enable */
19275eba5b6SRobert Mustacchi #define E1000_TQAVCTRL_FETCH_TIMER_ENABLE	(1 << 5)
19375eba5b6SRobert Mustacchi /* Launch arbitration type */
19475eba5b6SRobert Mustacchi #define E1000_TQAVCTRL_LAUNCH_ARB		(1 << 8)
19575eba5b6SRobert Mustacchi /* Launch timer enable */
19675eba5b6SRobert Mustacchi #define E1000_TQAVCTRL_LAUNCH_TIMER_ENABLE	(1 << 9)
19775eba5b6SRobert Mustacchi /* SP waits for SR enable */
19875eba5b6SRobert Mustacchi #define E1000_TQAVCTRL_SP_WAIT_SR		(1 << 10)
19975eba5b6SRobert Mustacchi /* Fetching timer correction */
20075eba5b6SRobert Mustacchi #define E1000_TQAVCTRL_FETCH_TIMER_DELTA_OFFSET	16
20175eba5b6SRobert Mustacchi #define E1000_TQAVCTRL_FETCH_TIMER_DELTA	\
20275eba5b6SRobert Mustacchi 			(0xFFFF << E1000_TQAVCTRL_FETCH_TIMER_DELTA_OFFSET)
20375eba5b6SRobert Mustacchi 
20475eba5b6SRobert Mustacchi /* High credit registers where _n can be 0 or 1. */
20575eba5b6SRobert Mustacchi #define E1000_I210_TQAVHC(_n)			(0x300C + 0x40 * (_n))
20675eba5b6SRobert Mustacchi 
20775eba5b6SRobert Mustacchi /* Queues fetch arbitration priority control register */
20875eba5b6SRobert Mustacchi #define E1000_I210_TQAVARBCTRL			0x3574
20975eba5b6SRobert Mustacchi /* Queues priority masks where _n and _p can be 0-3. */
210*7c5988f9SRobert Mustacchi #define E1000_TQAVARBCTRL_QUEUE_PRI(_n, _p)	((_p) << (2 * (_n)))
21175eba5b6SRobert Mustacchi /* QAV Tx mode control registers where _n can be 0 or 1. */
21275eba5b6SRobert Mustacchi #define E1000_I210_TQAVCC(_n)			(0x3004 + 0x40 * (_n))
21375eba5b6SRobert Mustacchi 
21475eba5b6SRobert Mustacchi /* QAV Tx mode control register bitfields masks */
21575eba5b6SRobert Mustacchi #define E1000_TQAVCC_IDLE_SLOPE		0xFFFF /* Idle slope */
21675eba5b6SRobert Mustacchi #define E1000_TQAVCC_KEEP_CREDITS	(1 << 30) /* Keep credits opt enable */
21775eba5b6SRobert Mustacchi #define E1000_TQAVCC_QUEUE_MODE		(1 << 31) /* SP vs. SR Tx mode */
21875eba5b6SRobert Mustacchi 
21975eba5b6SRobert Mustacchi /* Good transmitted packets counter registers */
22075eba5b6SRobert Mustacchi #define E1000_PQGPTC(_n)		(0x010014 + (0x100 * (_n)))
22175eba5b6SRobert Mustacchi 
22275eba5b6SRobert Mustacchi /* Queues packet buffer size masks where _n can be 0-3 and _s 0-63 [kB] */
223*7c5988f9SRobert Mustacchi #define E1000_I210_TXPBS_SIZE(_n, _s)	((_s) << (6 * (_n)))
22475eba5b6SRobert Mustacchi 
22513485e69SGarrett D'Amore #define E1000_MMDAC			13 /* MMD Access Control */
22613485e69SGarrett D'Amore #define E1000_MMDAAD			14 /* MMD Access Address/Data */
22713485e69SGarrett D'Amore 
22875eba5b6SRobert Mustacchi /* Convenience macros
22975eba5b6SRobert Mustacchi  *
23075eba5b6SRobert Mustacchi  * Note: "_n" is the queue number of the register to be written to.
23175eba5b6SRobert Mustacchi  *
23275eba5b6SRobert Mustacchi  * Example usage:
23375eba5b6SRobert Mustacchi  * E1000_RDBAL_REG(current_rx_queue)
23475eba5b6SRobert Mustacchi  */
23575eba5b6SRobert Mustacchi #define E1000_RDBAL(_n)	((_n) < 4 ? (0x02800 + ((_n) * 0x100)) : \
23675eba5b6SRobert Mustacchi 			 (0x0C000 + ((_n) * 0x40)))
23775eba5b6SRobert Mustacchi #define E1000_RDBAH(_n)	((_n) < 4 ? (0x02804 + ((_n) * 0x100)) : \
23875eba5b6SRobert Mustacchi 			 (0x0C004 + ((_n) * 0x40)))
23975eba5b6SRobert Mustacchi #define E1000_RDLEN(_n)	((_n) < 4 ? (0x02808 + ((_n) * 0x100)) : \
24075eba5b6SRobert Mustacchi 			 (0x0C008 + ((_n) * 0x40)))
24175eba5b6SRobert Mustacchi #define E1000_SRRCTL(_n)	((_n) < 4 ? (0x0280C + ((_n) * 0x100)) : \
24275eba5b6SRobert Mustacchi 				 (0x0C00C + ((_n) * 0x40)))
24375eba5b6SRobert Mustacchi #define E1000_RDH(_n)	((_n) < 4 ? (0x02810 + ((_n) * 0x100)) : \
24475eba5b6SRobert Mustacchi 			 (0x0C010 + ((_n) * 0x40)))
24575eba5b6SRobert Mustacchi #define E1000_RXCTL(_n)	((_n) < 4 ? (0x02814 + ((_n) * 0x100)) : \
24675eba5b6SRobert Mustacchi 			 (0x0C014 + ((_n) * 0x40)))
24775eba5b6SRobert Mustacchi #define E1000_DCA_RXCTRL(_n)	E1000_RXCTL(_n)
24875eba5b6SRobert Mustacchi #define E1000_RDT(_n)	((_n) < 4 ? (0x02818 + ((_n) * 0x100)) : \
24975eba5b6SRobert Mustacchi 			 (0x0C018 + ((_n) * 0x40)))
25075eba5b6SRobert Mustacchi #define E1000_RXDCTL(_n)	((_n) < 4 ? (0x02828 + ((_n) * 0x100)) : \
25175eba5b6SRobert Mustacchi 				 (0x0C028 + ((_n) * 0x40)))
25275eba5b6SRobert Mustacchi #define E1000_RQDPC(_n)	((_n) < 4 ? (0x02830 + ((_n) * 0x100)) : \
25375eba5b6SRobert Mustacchi 			 (0x0C030 + ((_n) * 0x40)))
25475eba5b6SRobert Mustacchi #define E1000_TDBAL(_n)	((_n) < 4 ? (0x03800 + ((_n) * 0x100)) : \
25575eba5b6SRobert Mustacchi 			 (0x0E000 + ((_n) * 0x40)))
25675eba5b6SRobert Mustacchi #define E1000_TDBAH(_n)	((_n) < 4 ? (0x03804 + ((_n) * 0x100)) : \
25775eba5b6SRobert Mustacchi 			 (0x0E004 + ((_n) * 0x40)))
25875eba5b6SRobert Mustacchi #define E1000_TDLEN(_n)	((_n) < 4 ? (0x03808 + ((_n) * 0x100)) : \
25975eba5b6SRobert Mustacchi 			 (0x0E008 + ((_n) * 0x40)))
26075eba5b6SRobert Mustacchi #define E1000_TDH(_n)	((_n) < 4 ? (0x03810 + ((_n) * 0x100)) : \
26175eba5b6SRobert Mustacchi 			 (0x0E010 + ((_n) * 0x40)))
26275eba5b6SRobert Mustacchi #define E1000_TXCTL(_n)	((_n) < 4 ? (0x03814 + ((_n) * 0x100)) : \
26375eba5b6SRobert Mustacchi 			 (0x0E014 + ((_n) * 0x40)))
26475eba5b6SRobert Mustacchi #define E1000_DCA_TXCTRL(_n) E1000_TXCTL(_n)
26575eba5b6SRobert Mustacchi #define E1000_TDT(_n)	((_n) < 4 ? (0x03818 + ((_n) * 0x100)) : \
26675eba5b6SRobert Mustacchi 			 (0x0E018 + ((_n) * 0x40)))
26775eba5b6SRobert Mustacchi #define E1000_TXDCTL(_n)	((_n) < 4 ? (0x03828 + ((_n) * 0x100)) : \
26875eba5b6SRobert Mustacchi 				 (0x0E028 + ((_n) * 0x40)))
26975eba5b6SRobert Mustacchi #define E1000_TDWBAL(_n)	((_n) < 4 ? (0x03838 + ((_n) * 0x100)) : \
27075eba5b6SRobert Mustacchi 				 (0x0E038 + ((_n) * 0x40)))
27175eba5b6SRobert Mustacchi #define E1000_TDWBAH(_n)	((_n) < 4 ? (0x0383C + ((_n) * 0x100)) : \
27275eba5b6SRobert Mustacchi 				 (0x0E03C + ((_n) * 0x40)))
27375eba5b6SRobert Mustacchi #define E1000_TARC(_n)		(0x03840 + ((_n) * 0x100))
27475eba5b6SRobert Mustacchi #define E1000_RSRPD		0x02C00  /* Rx Small Packet Detect - RW */
27575eba5b6SRobert Mustacchi #define E1000_RAID		0x02C08  /* Receive Ack Interrupt Delay - RW */
27675eba5b6SRobert Mustacchi #define E1000_TXDMAC		0x03000  /* Tx DMA Control - RW */
27775eba5b6SRobert Mustacchi #define E1000_KABGTXD		0x03004  /* AFE Band Gap Transmit Ref Data */
27875eba5b6SRobert Mustacchi #define E1000_PSRTYPE(_i)	(0x05480 + ((_i) * 4))
27975eba5b6SRobert Mustacchi #define E1000_RAL(_i)		(((_i) <= 15) ? (0x05400 + ((_i) * 8)) : \
28075eba5b6SRobert Mustacchi 				 (0x054E0 + ((_i - 16) * 8)))
28175eba5b6SRobert Mustacchi #define E1000_RAH(_i)		(((_i) <= 15) ? (0x05404 + ((_i) * 8)) : \
28275eba5b6SRobert Mustacchi 				 (0x054E4 + ((_i - 16) * 8)))
28375eba5b6SRobert Mustacchi #define E1000_SHRAL(_i)		(0x05438 + ((_i) * 8))
28475eba5b6SRobert Mustacchi #define E1000_SHRAH(_i)		(0x0543C + ((_i) * 8))
28575eba5b6SRobert Mustacchi #define E1000_IP4AT_REG(_i)	(0x05840 + ((_i) * 8))
28675eba5b6SRobert Mustacchi #define E1000_IP6AT_REG(_i)	(0x05880 + ((_i) * 4))
28775eba5b6SRobert Mustacchi #define E1000_WUPM_REG(_i)	(0x05A00 + ((_i) * 4))
28875eba5b6SRobert Mustacchi #define E1000_FFMT_REG(_i)	(0x09000 + ((_i) * 8))
28975eba5b6SRobert Mustacchi #define E1000_FFVT_REG(_i)	(0x09800 + ((_i) * 8))
29075eba5b6SRobert Mustacchi #define E1000_FFLT_REG(_i)	(0x05F00 + ((_i) * 8))
29175eba5b6SRobert Mustacchi #define E1000_PBSLAC		0x03100  /* Pkt Buffer Slave Access Control */
29275eba5b6SRobert Mustacchi #define E1000_PBSLAD(_n)	(0x03110 + (0x4 * (_n)))  /* Pkt Buffer DWORD */
29375eba5b6SRobert Mustacchi #define E1000_TXPBS		0x03404  /* Tx Packet Buffer Size - RW */
29475eba5b6SRobert Mustacchi /* Same as TXPBS, renamed for newer Si - RW */
29575eba5b6SRobert Mustacchi #define E1000_ITPBS		0x03404
29675eba5b6SRobert Mustacchi #define E1000_TDFH		0x03410  /* Tx Data FIFO Head - RW */
29775eba5b6SRobert Mustacchi #define E1000_TDFT		0x03418  /* Tx Data FIFO Tail - RW */
29875eba5b6SRobert Mustacchi #define E1000_TDFHS		0x03420  /* Tx Data FIFO Head Saved - RW */
29975eba5b6SRobert Mustacchi #define E1000_TDFTS		0x03428  /* Tx Data FIFO Tail Saved - RW */
30075eba5b6SRobert Mustacchi #define E1000_TDFPC		0x03430  /* Tx Data FIFO Packet Count - RW */
30175eba5b6SRobert Mustacchi #define E1000_TDPUMB		0x0357C  /* DMA Tx Desc uC Mail Box - RW */
30275eba5b6SRobert Mustacchi #define E1000_TDPUAD		0x03580  /* DMA Tx Desc uC Addr Command - RW */
30375eba5b6SRobert Mustacchi #define E1000_TDPUWD		0x03584  /* DMA Tx Desc uC Data Write - RW */
30475eba5b6SRobert Mustacchi #define E1000_TDPURD		0x03588  /* DMA Tx Desc uC Data  Read  - RW */
30575eba5b6SRobert Mustacchi #define E1000_TDPUCTL		0x0358C  /* DMA Tx Desc uC Control - RW */
30675eba5b6SRobert Mustacchi #define E1000_DTXCTL		0x03590  /* DMA Tx Control - RW */
30775eba5b6SRobert Mustacchi #define E1000_DTXTCPFLGL	0x0359C /* DMA Tx Control flag low - RW */
30875eba5b6SRobert Mustacchi #define E1000_DTXTCPFLGH	0x035A0 /* DMA Tx Control flag high - RW */
30975eba5b6SRobert Mustacchi /* DMA Tx Max Total Allow Size Reqs - RW */
31075eba5b6SRobert Mustacchi #define E1000_DTXMXSZRQ		0x03540
31175eba5b6SRobert Mustacchi #define E1000_TIDV	0x03820  /* Tx Interrupt Delay Value - RW */
31275eba5b6SRobert Mustacchi #define E1000_TADV	0x0382C  /* Tx Interrupt Absolute Delay Val - RW */
31375eba5b6SRobert Mustacchi #define E1000_TSPMT	0x03830  /* TCP Segmentation PAD & Min Threshold - RW */
31475eba5b6SRobert Mustacchi #define E1000_CRCERRS	0x04000  /* CRC Error Count - R/clr */
31575eba5b6SRobert Mustacchi #define E1000_ALGNERRC	0x04004  /* Alignment Error Count - R/clr */
31675eba5b6SRobert Mustacchi #define E1000_SYMERRS	0x04008  /* Symbol Error Count - R/clr */
31775eba5b6SRobert Mustacchi #define E1000_RXERRC	0x0400C  /* Receive Error Count - R/clr */
31875eba5b6SRobert Mustacchi #define E1000_MPC	0x04010  /* Missed Packet Count - R/clr */
31975eba5b6SRobert Mustacchi #define E1000_SCC	0x04014  /* Single Collision Count - R/clr */
32075eba5b6SRobert Mustacchi #define E1000_ECOL	0x04018  /* Excessive Collision Count - R/clr */
32175eba5b6SRobert Mustacchi #define E1000_MCC	0x0401C  /* Multiple Collision Count - R/clr */
32275eba5b6SRobert Mustacchi #define E1000_LATECOL	0x04020  /* Late Collision Count - R/clr */
32375eba5b6SRobert Mustacchi #define E1000_COLC	0x04028  /* Collision Count - R/clr */
32475eba5b6SRobert Mustacchi #define E1000_DC	0x04030  /* Defer Count - R/clr */
32575eba5b6SRobert Mustacchi #define E1000_TNCRS	0x04034  /* Tx-No CRS - R/clr */
32675eba5b6SRobert Mustacchi #define E1000_SEC	0x04038  /* Sequence Error Count - R/clr */
32775eba5b6SRobert Mustacchi #define E1000_CEXTERR	0x0403C  /* Carrier Extension Error Count - R/clr */
32875eba5b6SRobert Mustacchi #define E1000_RLEC	0x04040  /* Receive Length Error Count - R/clr */
32975eba5b6SRobert Mustacchi #define E1000_XONRXC	0x04048  /* XON Rx Count - R/clr */
33075eba5b6SRobert Mustacchi #define E1000_XONTXC	0x0404C  /* XON Tx Count - R/clr */
33175eba5b6SRobert Mustacchi #define E1000_XOFFRXC	0x04050  /* XOFF Rx Count - R/clr */
33275eba5b6SRobert Mustacchi #define E1000_XOFFTXC	0x04054  /* XOFF Tx Count - R/clr */
33375eba5b6SRobert Mustacchi #define E1000_FCRUC	0x04058  /* Flow Control Rx Unsupported Count- R/clr */
33475eba5b6SRobert Mustacchi #define E1000_PRC64	0x0405C  /* Packets Rx (64 bytes) - R/clr */
33575eba5b6SRobert Mustacchi #define E1000_PRC127	0x04060  /* Packets Rx (65-127 bytes) - R/clr */
33675eba5b6SRobert Mustacchi #define E1000_PRC255	0x04064  /* Packets Rx (128-255 bytes) - R/clr */
33775eba5b6SRobert Mustacchi #define E1000_PRC511	0x04068  /* Packets Rx (255-511 bytes) - R/clr */
33875eba5b6SRobert Mustacchi #define E1000_PRC1023	0x0406C  /* Packets Rx (512-1023 bytes) - R/clr */
33975eba5b6SRobert Mustacchi #define E1000_PRC1522	0x04070  /* Packets Rx (1024-1522 bytes) - R/clr */
34075eba5b6SRobert Mustacchi #define E1000_GPRC	0x04074  /* Good Packets Rx Count - R/clr */
34175eba5b6SRobert Mustacchi #define E1000_BPRC	0x04078  /* Broadcast Packets Rx Count - R/clr */
34275eba5b6SRobert Mustacchi #define E1000_MPRC	0x0407C  /* Multicast Packets Rx Count - R/clr */
34375eba5b6SRobert Mustacchi #define E1000_GPTC	0x04080  /* Good Packets Tx Count - R/clr */
34475eba5b6SRobert Mustacchi #define E1000_GORCL	0x04088  /* Good Octets Rx Count Low - R/clr */
34575eba5b6SRobert Mustacchi #define E1000_GORCH	0x0408C  /* Good Octets Rx Count High - R/clr */
34675eba5b6SRobert Mustacchi #define E1000_GOTCL	0x04090  /* Good Octets Tx Count Low - R/clr */
34775eba5b6SRobert Mustacchi #define E1000_GOTCH	0x04094  /* Good Octets Tx Count High - R/clr */
34875eba5b6SRobert Mustacchi #define E1000_RNBC	0x040A0  /* Rx No Buffers Count - R/clr */
34975eba5b6SRobert Mustacchi #define E1000_RUC	0x040A4  /* Rx Undersize Count - R/clr */
35075eba5b6SRobert Mustacchi #define E1000_RFC	0x040A8  /* Rx Fragment Count - R/clr */
35175eba5b6SRobert Mustacchi #define E1000_ROC	0x040AC  /* Rx Oversize Count - R/clr */
35275eba5b6SRobert Mustacchi #define E1000_RJC	0x040B0  /* Rx Jabber Count - R/clr */
35375eba5b6SRobert Mustacchi #define E1000_MGTPRC	0x040B4  /* Management Packets Rx Count - R/clr */
35475eba5b6SRobert Mustacchi #define E1000_MGTPDC	0x040B8  /* Management Packets Dropped Count - R/clr */
35575eba5b6SRobert Mustacchi #define E1000_MGTPTC	0x040BC  /* Management Packets Tx Count - R/clr */
35675eba5b6SRobert Mustacchi #define E1000_TORL	0x040C0  /* Total Octets Rx Low - R/clr */
35775eba5b6SRobert Mustacchi #define E1000_TORH	0x040C4  /* Total Octets Rx High - R/clr */
35875eba5b6SRobert Mustacchi #define E1000_TOTL	0x040C8  /* Total Octets Tx Low - R/clr */
35975eba5b6SRobert Mustacchi #define E1000_TOTH	0x040CC  /* Total Octets Tx High - R/clr */
36075eba5b6SRobert Mustacchi #define E1000_TPR	0x040D0  /* Total Packets Rx - R/clr */
36175eba5b6SRobert Mustacchi #define E1000_TPT	0x040D4  /* Total Packets Tx - R/clr */
36275eba5b6SRobert Mustacchi #define E1000_PTC64	0x040D8  /* Packets Tx (64 bytes) - R/clr */
36375eba5b6SRobert Mustacchi #define E1000_PTC127	0x040DC  /* Packets Tx (65-127 bytes) - R/clr */
36475eba5b6SRobert Mustacchi #define E1000_PTC255	0x040E0  /* Packets Tx (128-255 bytes) - R/clr */
36575eba5b6SRobert Mustacchi #define E1000_PTC511	0x040E4  /* Packets Tx (256-511 bytes) - R/clr */
36675eba5b6SRobert Mustacchi #define E1000_PTC1023	0x040E8  /* Packets Tx (512-1023 bytes) - R/clr */
36775eba5b6SRobert Mustacchi #define E1000_PTC1522	0x040EC  /* Packets Tx (1024-1522 Bytes) - R/clr */
36875eba5b6SRobert Mustacchi #define E1000_MPTC	0x040F0  /* Multicast Packets Tx Count - R/clr */
36975eba5b6SRobert Mustacchi #define E1000_BPTC	0x040F4  /* Broadcast Packets Tx Count - R/clr */
37075eba5b6SRobert Mustacchi #define E1000_TSCTC	0x040F8  /* TCP Segmentation Context Tx - R/clr */
37175eba5b6SRobert Mustacchi #define E1000_TSCTFC	0x040FC  /* TCP Segmentation Context Tx Fail - R/clr */
37275eba5b6SRobert Mustacchi #define E1000_IAC	0x04100  /* Interrupt Assertion Count */
37375eba5b6SRobert Mustacchi #define E1000_ICRXPTC	0x04104  /* Interrupt Cause Rx Pkt Timer Expire Count */
37475eba5b6SRobert Mustacchi #define E1000_ICRXATC	0x04108  /* Interrupt Cause Rx Abs Timer Expire Count */
37575eba5b6SRobert Mustacchi #define E1000_ICTXPTC	0x0410C  /* Interrupt Cause Tx Pkt Timer Expire Count */
37675eba5b6SRobert Mustacchi #define E1000_ICTXATC	0x04110  /* Interrupt Cause Tx Abs Timer Expire Count */
37775eba5b6SRobert Mustacchi #define E1000_ICTXQEC	0x04118  /* Interrupt Cause Tx Queue Empty Count */
37875eba5b6SRobert Mustacchi #define E1000_ICTXQMTC	0x0411C  /* Interrupt Cause Tx Queue Min Thresh Count */
37975eba5b6SRobert Mustacchi #define E1000_ICRXDMTC	0x04120  /* Interrupt Cause Rx Desc Min Thresh Count */
38075eba5b6SRobert Mustacchi #define E1000_ICRXOC	0x04124  /* Interrupt Cause Receiver Overrun Count */
38175eba5b6SRobert Mustacchi #define E1000_CRC_OFFSET	0x05F50  /* CRC Offset register */
38275eba5b6SRobert Mustacchi 
38375eba5b6SRobert Mustacchi #define E1000_VFGPRC	0x00F10
38475eba5b6SRobert Mustacchi #define E1000_VFGORC	0x00F18
38575eba5b6SRobert Mustacchi #define E1000_VFMPRC	0x00F3C
38675eba5b6SRobert Mustacchi #define E1000_VFGPTC	0x00F14
38775eba5b6SRobert Mustacchi #define E1000_VFGOTC	0x00F34
38875eba5b6SRobert Mustacchi #define E1000_VFGOTLBC	0x00F50
38975eba5b6SRobert Mustacchi #define E1000_VFGPTLBC	0x00F44
39075eba5b6SRobert Mustacchi #define E1000_VFGORLBC	0x00F48
39175eba5b6SRobert Mustacchi #define E1000_VFGPRLBC	0x00F40
39275eba5b6SRobert Mustacchi /* Virtualization statistical counters */
39375eba5b6SRobert Mustacchi #define E1000_PFVFGPRC(_n)	(0x010010 + (0x100 * (_n)))
39475eba5b6SRobert Mustacchi #define E1000_PFVFGPTC(_n)	(0x010014 + (0x100 * (_n)))
39575eba5b6SRobert Mustacchi #define E1000_PFVFGORC(_n)	(0x010018 + (0x100 * (_n)))
39675eba5b6SRobert Mustacchi #define E1000_PFVFGOTC(_n)	(0x010034 + (0x100 * (_n)))
39775eba5b6SRobert Mustacchi #define E1000_PFVFMPRC(_n)	(0x010038 + (0x100 * (_n)))
39875eba5b6SRobert Mustacchi #define E1000_PFVFGPRLBC(_n)	(0x010040 + (0x100 * (_n)))
39975eba5b6SRobert Mustacchi #define E1000_PFVFGPTLBC(_n)	(0x010044 + (0x100 * (_n)))
40075eba5b6SRobert Mustacchi #define E1000_PFVFGORLBC(_n)	(0x010048 + (0x100 * (_n)))
40175eba5b6SRobert Mustacchi #define E1000_PFVFGOTLBC(_n)	(0x010050 + (0x100 * (_n)))
40275eba5b6SRobert Mustacchi 
40375eba5b6SRobert Mustacchi /* LinkSec */
40475eba5b6SRobert Mustacchi #define E1000_LSECTXUT		0x04300  /* Tx Untagged Pkt Cnt */
40575eba5b6SRobert Mustacchi #define E1000_LSECTXPKTE	0x04304  /* Encrypted Tx Pkts Cnt */
40675eba5b6SRobert Mustacchi #define E1000_LSECTXPKTP	0x04308  /* Protected Tx Pkt Cnt */
40775eba5b6SRobert Mustacchi #define E1000_LSECTXOCTE	0x0430C  /* Encrypted Tx Octets Cnt */
40875eba5b6SRobert Mustacchi #define E1000_LSECTXOCTP	0x04310  /* Protected Tx Octets Cnt */
40975eba5b6SRobert Mustacchi #define E1000_LSECRXUT		0x04314  /* Untagged non-Strict Rx Pkt Cnt */
41075eba5b6SRobert Mustacchi #define E1000_LSECRXOCTD	0x0431C  /* Rx Octets Decrypted Count */
41175eba5b6SRobert Mustacchi #define E1000_LSECRXOCTV	0x04320  /* Rx Octets Validated */
41275eba5b6SRobert Mustacchi #define E1000_LSECRXBAD		0x04324  /* Rx Bad Tag */
41375eba5b6SRobert Mustacchi #define E1000_LSECRXNOSCI	0x04328  /* Rx Packet No SCI Count */
41475eba5b6SRobert Mustacchi #define E1000_LSECRXUNSCI	0x0432C  /* Rx Packet Unknown SCI Count */
41575eba5b6SRobert Mustacchi #define E1000_LSECRXUNCH	0x04330  /* Rx Unchecked Packets Count */
41675eba5b6SRobert Mustacchi #define E1000_LSECRXDELAY	0x04340  /* Rx Delayed Packet Count */
41775eba5b6SRobert Mustacchi #define E1000_LSECRXLATE	0x04350  /* Rx Late Packets Count */
41875eba5b6SRobert Mustacchi #define E1000_LSECRXOK(_n)	(0x04360 + (0x04 * (_n))) /* Rx Pkt OK Cnt */
41975eba5b6SRobert Mustacchi #define E1000_LSECRXINV(_n)	(0x04380 + (0x04 * (_n))) /* Rx Invalid Cnt */
42075eba5b6SRobert Mustacchi #define E1000_LSECRXNV(_n)	(0x043A0 + (0x04 * (_n))) /* Rx Not Valid Cnt */
42175eba5b6SRobert Mustacchi #define E1000_LSECRXUNSA	0x043C0  /* Rx Unused SA Count */
42275eba5b6SRobert Mustacchi #define E1000_LSECRXNUSA	0x043D0  /* Rx Not Using SA Count */
42375eba5b6SRobert Mustacchi #define E1000_LSECTXCAP		0x0B000  /* Tx Capabilities Register - RO */
42475eba5b6SRobert Mustacchi #define E1000_LSECRXCAP		0x0B300  /* Rx Capabilities Register - RO */
42575eba5b6SRobert Mustacchi #define E1000_LSECTXCTRL	0x0B004  /* Tx Control - RW */
42675eba5b6SRobert Mustacchi #define E1000_LSECRXCTRL	0x0B304  /* Rx Control - RW */
42775eba5b6SRobert Mustacchi #define E1000_LSECTXSCL		0x0B008  /* Tx SCI Low - RW */
42875eba5b6SRobert Mustacchi #define E1000_LSECTXSCH		0x0B00C  /* Tx SCI High - RW */
42975eba5b6SRobert Mustacchi #define E1000_LSECTXSA		0x0B010  /* Tx SA0 - RW */
43075eba5b6SRobert Mustacchi #define E1000_LSECTXPN0		0x0B018  /* Tx SA PN 0 - RW */
43175eba5b6SRobert Mustacchi #define E1000_LSECTXPN1		0x0B01C  /* Tx SA PN 1 - RW */
43275eba5b6SRobert Mustacchi #define E1000_LSECRXSCL		0x0B3D0  /* Rx SCI Low - RW */
43375eba5b6SRobert Mustacchi #define E1000_LSECRXSCH		0x0B3E0  /* Rx SCI High - RW */
43475eba5b6SRobert Mustacchi /* LinkSec Tx 128-bit Key 0 - WO */
43575eba5b6SRobert Mustacchi #define E1000_LSECTXKEY0(_n)	(0x0B020 + (0x04 * (_n)))
43675eba5b6SRobert Mustacchi /* LinkSec Tx 128-bit Key 1 - WO */
43775eba5b6SRobert Mustacchi #define E1000_LSECTXKEY1(_n)	(0x0B030 + (0x04 * (_n)))
43875eba5b6SRobert Mustacchi #define E1000_LSECRXSA(_n)	(0x0B310 + (0x04 * (_n))) /* Rx SAs - RW */
43975eba5b6SRobert Mustacchi #define E1000_LSECRXPN(_n)	(0x0B330 + (0x04 * (_n))) /* Rx SAs - RW */
44075eba5b6SRobert Mustacchi /* LinkSec Rx Keys  - where _n is the SA no. and _m the 4 dwords of the 128 bit
44175eba5b6SRobert Mustacchi  * key - RW.
44275eba5b6SRobert Mustacchi  */
44375eba5b6SRobert Mustacchi #define E1000_LSECRXKEY(_n, _m)	(0x0B350 + (0x10 * (_n)) + (0x04 * (_m)))
44475eba5b6SRobert Mustacchi 
44575eba5b6SRobert Mustacchi #define E1000_SSVPC		0x041A0 /* Switch Security Violation Pkt Cnt */
44675eba5b6SRobert Mustacchi #define E1000_IPSCTRL		0xB430  /* IpSec Control Register */
44775eba5b6SRobert Mustacchi #define E1000_IPSRXCMD		0x0B408 /* IPSec Rx Command Register - RW */
44875eba5b6SRobert Mustacchi #define E1000_IPSRXIDX		0x0B400 /* IPSec Rx Index - RW */
44975eba5b6SRobert Mustacchi /* IPSec Rx IPv4/v6 Address - RW */
45075eba5b6SRobert Mustacchi #define E1000_IPSRXIPADDR(_n)	(0x0B420 + (0x04 * (_n)))
45175eba5b6SRobert Mustacchi /* IPSec Rx 128-bit Key - RW */
45275eba5b6SRobert Mustacchi #define E1000_IPSRXKEY(_n)	(0x0B410 + (0x04 * (_n)))
45375eba5b6SRobert Mustacchi #define E1000_IPSRXSALT		0x0B404  /* IPSec Rx Salt - RW */
45475eba5b6SRobert Mustacchi #define E1000_IPSRXSPI		0x0B40C  /* IPSec Rx SPI - RW */
45575eba5b6SRobert Mustacchi /* IPSec Tx 128-bit Key - RW */
45675eba5b6SRobert Mustacchi #define E1000_IPSTXKEY(_n)	(0x0B460 + (0x04 * (_n)))
45775eba5b6SRobert Mustacchi #define E1000_IPSTXSALT		0x0B454  /* IPSec Tx Salt - RW */
45875eba5b6SRobert Mustacchi #define E1000_IPSTXIDX		0x0B450  /* IPSec Tx SA IDX - RW */
45975eba5b6SRobert Mustacchi #define E1000_PCS_CFG0	0x04200  /* PCS Configuration 0 - RW */
46075eba5b6SRobert Mustacchi #define E1000_PCS_LCTL	0x04208  /* PCS Link Control - RW */
46175eba5b6SRobert Mustacchi #define E1000_PCS_LSTAT	0x0420C  /* PCS Link Status - RO */
46275eba5b6SRobert Mustacchi #define E1000_CBTMPC	0x0402C  /* Circuit Breaker Tx Packet Count */
46375eba5b6SRobert Mustacchi #define E1000_HTDPMC	0x0403C  /* Host Transmit Discarded Packets */
46475eba5b6SRobert Mustacchi #define E1000_CBRDPC	0x04044  /* Circuit Breaker Rx Dropped Count */
46575eba5b6SRobert Mustacchi #define E1000_CBRMPC	0x040FC  /* Circuit Breaker Rx Packet Count */
46675eba5b6SRobert Mustacchi #define E1000_RPTHC	0x04104  /* Rx Packets To Host */
46775eba5b6SRobert Mustacchi #define E1000_HGPTC	0x04118  /* Host Good Packets Tx Count */
46875eba5b6SRobert Mustacchi #define E1000_HTCBDPC	0x04124  /* Host Tx Circuit Breaker Dropped Count */
46975eba5b6SRobert Mustacchi #define E1000_HGORCL	0x04128  /* Host Good Octets Received Count Low */
47075eba5b6SRobert Mustacchi #define E1000_HGORCH	0x0412C  /* Host Good Octets Received Count High */
47175eba5b6SRobert Mustacchi #define E1000_HGOTCL	0x04130  /* Host Good Octets Transmit Count Low */
47275eba5b6SRobert Mustacchi #define E1000_HGOTCH	0x04134  /* Host Good Octets Transmit Count High */
47375eba5b6SRobert Mustacchi #define E1000_LENERRS	0x04138  /* Length Errors Count */
47475eba5b6SRobert Mustacchi #define E1000_SCVPC	0x04228  /* SerDes/SGMII Code Violation Pkt Count */
47575eba5b6SRobert Mustacchi #define E1000_HRMPC	0x0A018  /* Header Redirection Missed Packet Count */
47675eba5b6SRobert Mustacchi #define E1000_PCS_ANADV	0x04218  /* AN advertisement - RW */
47775eba5b6SRobert Mustacchi #define E1000_PCS_LPAB	0x0421C  /* Link Partner Ability - RW */
47875eba5b6SRobert Mustacchi #define E1000_PCS_NPTX	0x04220  /* AN Next Page Transmit - RW */
47975eba5b6SRobert Mustacchi #define E1000_PCS_LPABNP	0x04224 /* Link Partner Ability Next Pg - RW */
48075eba5b6SRobert Mustacchi #define E1000_RXCSUM	0x05000  /* Rx Checksum Control - RW */
48175eba5b6SRobert Mustacchi #define E1000_RLPML	0x05004  /* Rx Long Packet Max Length */
48275eba5b6SRobert Mustacchi #define E1000_RFCTL	0x05008  /* Receive Filter Control*/
48375eba5b6SRobert Mustacchi #define E1000_MTA	0x05200  /* Multicast Table Array - RW Array */
48475eba5b6SRobert Mustacchi #define E1000_RA	0x05400  /* Receive Address - RW Array */
48575eba5b6SRobert Mustacchi #define E1000_RA2	0x054E0  /* 2nd half of Rx address array - RW Array */
48675eba5b6SRobert Mustacchi #define E1000_VFTA	0x05600  /* VLAN Filter Table Array - RW Array */
48775eba5b6SRobert Mustacchi #define E1000_VT_CTL	0x0581C  /* VMDq Control - RW */
48875eba5b6SRobert Mustacchi #define E1000_CIAA	0x05B88  /* Config Indirect Access Address - RW */
48975eba5b6SRobert Mustacchi #define E1000_CIAD	0x05B8C  /* Config Indirect Access Data - RW */
49075eba5b6SRobert Mustacchi #define E1000_VFQA0	0x0B000  /* VLAN Filter Queue Array 0 - RW Array */
49175eba5b6SRobert Mustacchi #define E1000_VFQA1	0x0B200  /* VLAN Filter Queue Array 1 - RW Array */
49275eba5b6SRobert Mustacchi #define E1000_WUC	0x05800  /* Wakeup Control - RW */
49375eba5b6SRobert Mustacchi #define E1000_WUFC	0x05808  /* Wakeup Filter Control - RW */
49475eba5b6SRobert Mustacchi #define E1000_WUS	0x05810  /* Wakeup Status - RO */
49575eba5b6SRobert Mustacchi #define E1000_MANC	0x05820  /* Management Control - RW */
49675eba5b6SRobert Mustacchi #define E1000_IPAV	0x05838  /* IP Address Valid - RW */
49775eba5b6SRobert Mustacchi #define E1000_IP4AT	0x05840  /* IPv4 Address Table - RW Array */
49875eba5b6SRobert Mustacchi #define E1000_IP6AT	0x05880  /* IPv6 Address Table - RW Array */
49975eba5b6SRobert Mustacchi #define E1000_WUPL	0x05900  /* Wakeup Packet Length - RW */
50075eba5b6SRobert Mustacchi #define E1000_WUPM	0x05A00  /* Wakeup Packet Memory - RO A */
50175eba5b6SRobert Mustacchi #define E1000_PBACL	0x05B68  /* MSIx PBA Clear - Read/Write 1's to clear */
50275eba5b6SRobert Mustacchi #define E1000_FFLT	0x05F00  /* Flexible Filter Length Table - RW Array */
50375eba5b6SRobert Mustacchi #define E1000_HOST_IF	0x08800  /* Host Interface */
50475eba5b6SRobert Mustacchi #define E1000_HIBBA	0x8F40   /* Host Interface Buffer Base Address */
50575eba5b6SRobert Mustacchi /* Flexible Host Filter Table */
50675eba5b6SRobert Mustacchi #define E1000_FHFT(_n)	(0x09000 + ((_n) * 0x100))
50775eba5b6SRobert Mustacchi /* Ext Flexible Host Filter Table */
50875eba5b6SRobert Mustacchi #define E1000_FHFT_EXT(_n)	(0x09A00 + ((_n) * 0x100))
50975eba5b6SRobert Mustacchi 
51075eba5b6SRobert Mustacchi 
51175eba5b6SRobert Mustacchi #define E1000_KMRNCTRLSTA	0x00034 /* MAC-PHY interface - RW */
51275eba5b6SRobert Mustacchi #define E1000_MANC2H		0x05860 /* Management Control To Host - RW */
51375eba5b6SRobert Mustacchi /* Management Decision Filters */
51475eba5b6SRobert Mustacchi #define E1000_MDEF(_n)		(0x05890 + (4 * (_n)))
51575eba5b6SRobert Mustacchi #define E1000_SW_FW_SYNC	0x05B5C /* SW-FW Synchronization - RW */
51675eba5b6SRobert Mustacchi #define E1000_CCMCTL	0x05B48 /* CCM Control Register */
51775eba5b6SRobert Mustacchi #define E1000_GIOCTL	0x05B44 /* GIO Analog Control Register */
51875eba5b6SRobert Mustacchi #define E1000_SCCTL	0x05B4C /* PCIc PLL Configuration Register */
51975eba5b6SRobert Mustacchi #define E1000_GCR	0x05B00 /* PCI-Ex Control */
52075eba5b6SRobert Mustacchi #define E1000_GCR2	0x05B64 /* PCI-Ex Control #2 */
52175eba5b6SRobert Mustacchi #define E1000_GSCL_1	0x05B10 /* PCI-Ex Statistic Control #1 */
52275eba5b6SRobert Mustacchi #define E1000_GSCL_2	0x05B14 /* PCI-Ex Statistic Control #2 */
52375eba5b6SRobert Mustacchi #define E1000_GSCL_3	0x05B18 /* PCI-Ex Statistic Control #3 */
52475eba5b6SRobert Mustacchi #define E1000_GSCL_4	0x05B1C /* PCI-Ex Statistic Control #4 */
52575eba5b6SRobert Mustacchi #define E1000_FACTPS	0x05B30 /* Function Active and Power State to MNG */
52675eba5b6SRobert Mustacchi #define E1000_SWSM	0x05B50 /* SW Semaphore */
52775eba5b6SRobert Mustacchi #define E1000_FWSM	0x05B54 /* FW Semaphore */
52875eba5b6SRobert Mustacchi /* Driver-only SW semaphore (not used by BOOT agents) */
52975eba5b6SRobert Mustacchi #define E1000_SWSM2	0x05B58
53075eba5b6SRobert Mustacchi #define E1000_DCA_ID	0x05B70 /* DCA Requester ID Information - RO */
53175eba5b6SRobert Mustacchi #define E1000_DCA_CTRL	0x05B74 /* DCA Control - RW */
53275eba5b6SRobert Mustacchi #define E1000_UFUSE	0x05B78 /* UFUSE - RO */
53375eba5b6SRobert Mustacchi #define E1000_FFLT_DBG	0x05F04 /* Debug Register */
53475eba5b6SRobert Mustacchi #define E1000_HICR	0x08F00 /* Host Interface Control */
53575eba5b6SRobert Mustacchi #define E1000_FWSTS	0x08F0C /* FW Status */
53675eba5b6SRobert Mustacchi 
53775eba5b6SRobert Mustacchi /* RSS registers */
53875eba5b6SRobert Mustacchi #define E1000_CPUVEC	0x02C10 /* CPU Vector Register - RW */
53975eba5b6SRobert Mustacchi #define E1000_MRQC	0x05818 /* Multiple Receive Control - RW */
54075eba5b6SRobert Mustacchi #define E1000_IMIR(_i)	(0x05A80 + ((_i) * 4))  /* Immediate Interrupt */
54175eba5b6SRobert Mustacchi #define E1000_IMIREXT(_i)	(0x05AA0 + ((_i) * 4)) /* Immediate INTR Ext*/
54275eba5b6SRobert Mustacchi #define E1000_IMIRVP		0x05AC0 /* Immediate INT Rx VLAN Priority -RW */
54375eba5b6SRobert Mustacchi #define E1000_MSIXBM(_i)	(0x01600 + ((_i) * 4)) /* MSI-X Alloc Reg -RW */
54475eba5b6SRobert Mustacchi #define E1000_RETA(_i)	(0x05C00 + ((_i) * 4)) /* Redirection Table - RW */
54575eba5b6SRobert Mustacchi #define E1000_RSSRK(_i)	(0x05C80 + ((_i) * 4)) /* RSS Random Key - RW */
54675eba5b6SRobert Mustacchi #define E1000_RSSIM	0x05864 /* RSS Interrupt Mask */
54775eba5b6SRobert Mustacchi #define E1000_RSSIR	0x05868 /* RSS Interrupt Request */
54875eba5b6SRobert Mustacchi /* VT Registers */
54975eba5b6SRobert Mustacchi #define E1000_SWPBS	0x03004 /* Switch Packet Buffer Size - RW */
55075eba5b6SRobert Mustacchi #define E1000_MBVFICR	0x00C80 /* Mailbox VF Cause - RWC */
55175eba5b6SRobert Mustacchi #define E1000_MBVFIMR	0x00C84 /* Mailbox VF int Mask - RW */
55275eba5b6SRobert Mustacchi #define E1000_VFLRE	0x00C88 /* VF Register Events - RWC */
55375eba5b6SRobert Mustacchi #define E1000_VFRE	0x00C8C /* VF Receive Enables */
55475eba5b6SRobert Mustacchi #define E1000_VFTE	0x00C90 /* VF Transmit Enables */
55575eba5b6SRobert Mustacchi #define E1000_QDE	0x02408 /* Queue Drop Enable - RW */
55675eba5b6SRobert Mustacchi #define E1000_DTXSWC	0x03500 /* DMA Tx Switch Control - RW */
55775eba5b6SRobert Mustacchi #define E1000_WVBR	0x03554 /* VM Wrong Behavior - RWS */
55875eba5b6SRobert Mustacchi #define E1000_RPLOLR	0x05AF0 /* Replication Offload - RW */
55975eba5b6SRobert Mustacchi #define E1000_UTA	0x0A000 /* Unicast Table Array - RW */
560*7c5988f9SRobert Mustacchi #define E1000_IOVCTL	0x05BBC /* IOV Control Register */
56175eba5b6SRobert Mustacchi #define E1000_VMRCTL	0X05D80 /* Virtual Mirror Rule Control */
56275eba5b6SRobert Mustacchi #define E1000_VMRVLAN	0x05D90 /* Virtual Mirror Rule VLAN */
56375eba5b6SRobert Mustacchi #define E1000_VMRVM	0x05DA0 /* Virtual Mirror Rule VM */
56475eba5b6SRobert Mustacchi #define E1000_MDFB	0x03558 /* Malicious Driver free block */
56575eba5b6SRobert Mustacchi #define E1000_LVMMC	0x03548 /* Last VM Misbehavior cause */
56675eba5b6SRobert Mustacchi #define E1000_TXSWC	0x05ACC /* Tx Switch Control */
56775eba5b6SRobert Mustacchi #define E1000_SCCRL	0x05DB0 /* Storm Control Control */
56875eba5b6SRobert Mustacchi #define E1000_BSCTRH	0x05DB8 /* Broadcast Storm Control Threshold */
56975eba5b6SRobert Mustacchi #define E1000_MSCTRH	0x05DBC /* Multicast Storm Control Threshold */
57075eba5b6SRobert Mustacchi /* These act per VF so an array friendly macro is used */
57175eba5b6SRobert Mustacchi #define E1000_V2PMAILBOX(_n)	(0x00C40 + (4 * (_n)))
57275eba5b6SRobert Mustacchi #define E1000_P2VMAILBOX(_n)	(0x00C00 + (4 * (_n)))
57375eba5b6SRobert Mustacchi #define E1000_VMBMEM(_n)	(0x00800 + (64 * (_n)))
57475eba5b6SRobert Mustacchi #define E1000_VFVMBMEM(_n)	(0x00800 + (_n))
57575eba5b6SRobert Mustacchi #define E1000_VMOLR(_n)		(0x05AD0 + (4 * (_n)))
57675eba5b6SRobert Mustacchi /* VLAN Virtual Machine Filter - RW */
57775eba5b6SRobert Mustacchi #define E1000_VLVF(_n)		(0x05D00 + (4 * (_n)))
57875eba5b6SRobert Mustacchi #define E1000_VMVIR(_n)		(0x03700 + (4 * (_n)))
57975eba5b6SRobert Mustacchi #define E1000_DVMOLR(_n)	(0x0C038 + (0x40 * (_n))) /* DMA VM offload */
58075eba5b6SRobert Mustacchi #define E1000_VTCTRL(_n)	(0x10000 + (0x100 * (_n))) /* VT Control */
58175eba5b6SRobert Mustacchi #define E1000_TSYNCRXCTL	0x0B620 /* Rx Time Sync Control register - RW */
58275eba5b6SRobert Mustacchi #define E1000_TSYNCTXCTL	0x0B614 /* Tx Time Sync Control register - RW */
58375eba5b6SRobert Mustacchi #define E1000_TSYNCRXCFG	0x05F50 /* Time Sync Rx Configuration - RW */
58475eba5b6SRobert Mustacchi #define E1000_RXSTMPL	0x0B624 /* Rx timestamp Low - RO */
58575eba5b6SRobert Mustacchi #define E1000_RXSTMPH	0x0B628 /* Rx timestamp High - RO */
58675eba5b6SRobert Mustacchi #define E1000_RXSATRL	0x0B62C /* Rx timestamp attribute low - RO */
58775eba5b6SRobert Mustacchi #define E1000_RXSATRH	0x0B630 /* Rx timestamp attribute high - RO */
58875eba5b6SRobert Mustacchi #define E1000_TXSTMPL	0x0B618 /* Tx timestamp value Low - RO */
58975eba5b6SRobert Mustacchi #define E1000_TXSTMPH	0x0B61C /* Tx timestamp value High - RO */
59075eba5b6SRobert Mustacchi #define E1000_SYSTIML	0x0B600 /* System time register Low - RO */
59175eba5b6SRobert Mustacchi #define E1000_SYSTIMH	0x0B604 /* System time register High - RO */
59275eba5b6SRobert Mustacchi #define E1000_TIMINCA	0x0B608 /* Increment attributes register - RW */
59375eba5b6SRobert Mustacchi #define E1000_TIMADJL	0x0B60C /* Time sync time adjustment offset Low - RW */
59475eba5b6SRobert Mustacchi #define E1000_TIMADJH	0x0B610 /* Time sync time adjustment offset High - RW */
59575eba5b6SRobert Mustacchi #define E1000_TSAUXC	0x0B640 /* Timesync Auxiliary Control register */
596*7c5988f9SRobert Mustacchi #define	E1000_SYSSTMPL	0x0B648 /* HH Timesync system stamp low register */
597*7c5988f9SRobert Mustacchi #define	E1000_SYSSTMPH	0x0B64C /* HH Timesync system stamp hi register */
598*7c5988f9SRobert Mustacchi #define	E1000_PLTSTMPL	0x0B640 /* HH Timesync platform stamp low register */
599*7c5988f9SRobert Mustacchi #define	E1000_PLTSTMPH	0x0B644 /* HH Timesync platform stamp hi register */
60075eba5b6SRobert Mustacchi #define E1000_SYSTIMR	0x0B6F8 /* System time register Residue */
60175eba5b6SRobert Mustacchi #define E1000_TSICR	0x0B66C /* Interrupt Cause Register */
60275eba5b6SRobert Mustacchi #define E1000_TSIM	0x0B674 /* Interrupt Mask Register */
60375eba5b6SRobert Mustacchi #define E1000_RXMTRL	0x0B634 /* Time sync Rx EtherType and Msg Type - RW */
60475eba5b6SRobert Mustacchi #define E1000_RXUDP	0x0B638 /* Time Sync Rx UDP Port - RW */
60575eba5b6SRobert Mustacchi 
60675eba5b6SRobert Mustacchi /* Filtering Registers */
60775eba5b6SRobert Mustacchi #define E1000_SAQF(_n)	(0x05980 + (4 * (_n))) /* Source Address Queue Fltr */
60875eba5b6SRobert Mustacchi #define E1000_DAQF(_n)	(0x059A0 + (4 * (_n))) /* Dest Address Queue Fltr */
60975eba5b6SRobert Mustacchi #define E1000_SPQF(_n)	(0x059C0 + (4 * (_n))) /* Source Port Queue Fltr */
61075eba5b6SRobert Mustacchi #define E1000_FTQF(_n)	(0x059E0 + (4 * (_n))) /* 5-tuple Queue Fltr */
61175eba5b6SRobert Mustacchi #define E1000_TTQF(_n)	(0x059E0 + (4 * (_n))) /* 2-tuple Queue Fltr */
61275eba5b6SRobert Mustacchi #define E1000_SYNQF(_n)	(0x055FC + (4 * (_n))) /* SYN Packet Queue Fltr */
61375eba5b6SRobert Mustacchi #define E1000_ETQF(_n)	(0x05CB0 + (4 * (_n))) /* EType Queue Fltr */
61475eba5b6SRobert Mustacchi 
61575eba5b6SRobert Mustacchi #define E1000_RTTDCS	0x3600 /* Reedtown Tx Desc plane control and status */
61675eba5b6SRobert Mustacchi #define E1000_RTTPCS	0x3474 /* Reedtown Tx Packet Plane control and status */
61775eba5b6SRobert Mustacchi #define E1000_RTRPCS	0x2474 /* Rx packet plane control and status */
61875eba5b6SRobert Mustacchi #define E1000_RTRUP2TC	0x05AC4 /* Rx User Priority to Traffic Class */
61975eba5b6SRobert Mustacchi #define E1000_RTTUP2TC	0x0418 /* Transmit User Priority to Traffic Class */
62075eba5b6SRobert Mustacchi /* Tx Desc plane TC Rate-scheduler config */
62175eba5b6SRobert Mustacchi #define E1000_RTTDTCRC(_n)	(0x3610 + ((_n) * 4))
62275eba5b6SRobert Mustacchi /* Tx Packet plane TC Rate-Scheduler Config */
62375eba5b6SRobert Mustacchi #define E1000_RTTPTCRC(_n)	(0x3480 + ((_n) * 4))
62475eba5b6SRobert Mustacchi /* Rx Packet plane TC Rate-Scheduler Config */
62575eba5b6SRobert Mustacchi #define E1000_RTRPTCRC(_n)	(0x2480 + ((_n) * 4))
62675eba5b6SRobert Mustacchi /* Tx Desc Plane TC Rate-Scheduler Status */
62775eba5b6SRobert Mustacchi #define E1000_RTTDTCRS(_n)	(0x3630 + ((_n) * 4))
62875eba5b6SRobert Mustacchi /* Tx Desc Plane TC Rate-Scheduler MMW */
62975eba5b6SRobert Mustacchi #define E1000_RTTDTCRM(_n)	(0x3650 + ((_n) * 4))
63075eba5b6SRobert Mustacchi /* Tx Packet plane TC Rate-Scheduler Status */
63175eba5b6SRobert Mustacchi #define E1000_RTTPTCRS(_n)	(0x34A0 + ((_n) * 4))
63275eba5b6SRobert Mustacchi /* Tx Packet plane TC Rate-scheduler MMW */
63375eba5b6SRobert Mustacchi #define E1000_RTTPTCRM(_n)	(0x34C0 + ((_n) * 4))
63475eba5b6SRobert Mustacchi /* Rx Packet plane TC Rate-Scheduler Status */
63575eba5b6SRobert Mustacchi #define E1000_RTRPTCRS(_n)	(0x24A0 + ((_n) * 4))
63675eba5b6SRobert Mustacchi /* Rx Packet plane TC Rate-Scheduler MMW */
63775eba5b6SRobert Mustacchi #define E1000_RTRPTCRM(_n)	(0x24C0 + ((_n) * 4))
63875eba5b6SRobert Mustacchi /* Tx Desc plane VM Rate-Scheduler MMW*/
63975eba5b6SRobert Mustacchi #define E1000_RTTDVMRM(_n)	(0x3670 + ((_n) * 4))
64075eba5b6SRobert Mustacchi /* Tx BCN Rate-Scheduler MMW */
64175eba5b6SRobert Mustacchi #define E1000_RTTBCNRM(_n)	(0x3690 + ((_n) * 4))
64275eba5b6SRobert Mustacchi #define E1000_RTTDQSEL	0x3604  /* Tx Desc Plane Queue Select */
64375eba5b6SRobert Mustacchi #define E1000_RTTDVMRC	0x3608  /* Tx Desc Plane VM Rate-Scheduler Config */
64475eba5b6SRobert Mustacchi #define E1000_RTTDVMRS	0x360C  /* Tx Desc Plane VM Rate-Scheduler Status */
64575eba5b6SRobert Mustacchi #define E1000_RTTBCNRC	0x36B0  /* Tx BCN Rate-Scheduler Config */
64675eba5b6SRobert Mustacchi #define E1000_RTTBCNRS	0x36B4  /* Tx BCN Rate-Scheduler Status */
64775eba5b6SRobert Mustacchi #define E1000_RTTBCNCR	0xB200  /* Tx BCN Control Register */
64875eba5b6SRobert Mustacchi #define E1000_RTTBCNTG	0x35A4  /* Tx BCN Tagging */
64975eba5b6SRobert Mustacchi #define E1000_RTTBCNCP	0xB208  /* Tx BCN Congestion point */
65075eba5b6SRobert Mustacchi #define E1000_RTRBCNCR	0xB20C  /* Rx BCN Control Register */
65175eba5b6SRobert Mustacchi #define E1000_RTTBCNRD	0x36B8  /* Tx BCN Rate Drift */
65275eba5b6SRobert Mustacchi #define E1000_PFCTOP	0x1080  /* Priority Flow Control Type and Opcode */
65375eba5b6SRobert Mustacchi #define E1000_RTTBCNIDX	0xB204  /* Tx BCN Congestion Point */
65475eba5b6SRobert Mustacchi #define E1000_RTTBCNACH	0x0B214 /* Tx BCN Control High */
65575eba5b6SRobert Mustacchi #define E1000_RTTBCNACL	0x0B210 /* Tx BCN Control Low */
65675eba5b6SRobert Mustacchi 
65775eba5b6SRobert Mustacchi /* DMA Coalescing registers */
65875eba5b6SRobert Mustacchi #define E1000_DMACR	0x02508 /* Control Register */
65975eba5b6SRobert Mustacchi #define E1000_DMCTXTH	0x03550 /* Transmit Threshold */
66075eba5b6SRobert Mustacchi #define E1000_DMCTLX	0x02514 /* Time to Lx Request */
66175eba5b6SRobert Mustacchi #define E1000_DMCRTRH	0x05DD0 /* Receive Packet Rate Threshold */
66275eba5b6SRobert Mustacchi #define E1000_DMCCNT	0x05DD4 /* Current Rx Count */
66375eba5b6SRobert Mustacchi #define E1000_FCRTC	0x02170 /* Flow Control Rx high watermark */
66475eba5b6SRobert Mustacchi #define E1000_PCIEMISC	0x05BB8 /* PCIE misc config register */
66575eba5b6SRobert Mustacchi 
66675eba5b6SRobert Mustacchi /* PCIe Parity Status Register */
66775eba5b6SRobert Mustacchi #define E1000_PCIEERRSTS	0x05BA8
66875eba5b6SRobert Mustacchi 
66975eba5b6SRobert Mustacchi #define E1000_PROXYS	0x5F64 /* Proxying Status */
67075eba5b6SRobert Mustacchi #define E1000_PROXYFC	0x5F60 /* Proxying Filter Control */
67175eba5b6SRobert Mustacchi /* Thermal sensor configuration and status registers */
67275eba5b6SRobert Mustacchi #define E1000_THMJT	0x08100 /* Junction Temperature */
67375eba5b6SRobert Mustacchi #define E1000_THLOWTC	0x08104 /* Low Threshold Control */
67475eba5b6SRobert Mustacchi #define E1000_THMIDTC	0x08108 /* Mid Threshold Control */
67575eba5b6SRobert Mustacchi #define E1000_THHIGHTC	0x0810C /* High Threshold Control */
67675eba5b6SRobert Mustacchi #define E1000_THSTAT	0x08110 /* Thermal Sensor Status */
67775eba5b6SRobert Mustacchi 
67875eba5b6SRobert Mustacchi /* Energy Efficient Ethernet "EEE" registers */
67975eba5b6SRobert Mustacchi #define E1000_IPCNFG	0x0E38 /* Internal PHY Configuration */
68075eba5b6SRobert Mustacchi #define E1000_LTRC	0x01A0 /* Latency Tolerance Reporting Control */
68175eba5b6SRobert Mustacchi #define E1000_EEER	0x0E30 /* Energy Efficient Ethernet "EEE"*/
68275eba5b6SRobert Mustacchi #define E1000_EEE_SU	0x0E34 /* EEE Setup */
68375eba5b6SRobert Mustacchi #define E1000_TLPIC	0x4148 /* EEE Tx LPI Count - TLPIC */
68475eba5b6SRobert Mustacchi #define E1000_RLPIC	0x414C /* EEE Rx LPI Count - RLPIC */
68575eba5b6SRobert Mustacchi 
68675eba5b6SRobert Mustacchi /* OS2BMC Registers */
68775eba5b6SRobert Mustacchi #define E1000_B2OSPC	0x08FE0 /* BMC2OS packets sent by BMC */
68875eba5b6SRobert Mustacchi #define E1000_B2OGPRC	0x04158 /* BMC2OS packets received by host */
68975eba5b6SRobert Mustacchi #define E1000_O2BGPTC	0x08FE4 /* OS2BMC packets received by BMC */
69075eba5b6SRobert Mustacchi #define E1000_O2BSPC	0x0415C /* OS2BMC packets transmitted by host */
69175eba5b6SRobert Mustacchi 
69275eba5b6SRobert Mustacchi #define E1000_DOBFFCTL	0x3F24 /* DMA OBFF Control Register */
69375eba5b6SRobert Mustacchi 
69475eba5b6SRobert Mustacchi 
69575eba5b6SRobert Mustacchi #endif
696