29 #ifndef _E1000_REGS_H_
30 #define _E1000_REGS_H_
32 #define E1000_CTRL 0x00000
33 #define E1000_STATUS 0x00008
34 #define E1000_EECD 0x00010
35 #define E1000_EERD 0x00014
36 #define E1000_CTRL_EXT 0x00018
37 #define E1000_MDIC 0x00020
38 #define E1000_SCTL 0x00024
39 #define E1000_FCAL 0x00028
40 #define E1000_FCAH 0x0002C
41 #define E1000_FCT 0x00030
42 #define E1000_CONNSW 0x00034
43 #define E1000_VET 0x00038
44 #define E1000_ICR 0x000C0
45 #define E1000_ITR 0x000C4
46 #define E1000_ICS 0x000C8
47 #define E1000_IMS 0x000D0
48 #define E1000_IMC 0x000D8
49 #define E1000_IAM 0x000E0
50 #define E1000_RCTL 0x00100
51 #define E1000_FCTTV 0x00170
52 #define E1000_TXCW 0x00178
53 #define E1000_EICR 0x01580
54 #define E1000_EITR(_n) (0x01680 + (0x4 * (_n)))
55 #define E1000_EICS 0x01520
56 #define E1000_EIMS 0x01524
57 #define E1000_EIMC 0x01528
58 #define E1000_EIAC 0x0152C
59 #define E1000_EIAM 0x01530
60 #define E1000_GPIE 0x01514
61 #define E1000_IVAR0 0x01700
62 #define E1000_IVAR_MISC 0x01740
63 #define E1000_TCTL 0x00400
64 #define E1000_TCTL_EXT 0x00404
65 #define E1000_TIPG 0x00410
66 #define E1000_AIT 0x00458
67 #define E1000_LEDCTL 0x00E00
68 #define E1000_PBA 0x01000
69 #define E1000_PBS 0x01008
70 #define E1000_EEMNGCTL 0x01010
71 #define E1000_EEWR 0x0102C
72 #define E1000_I2CCMD 0x01028
73 #define E1000_FRTIMER 0x01048
74 #define E1000_TCPTIMER 0x0104C
75 #define E1000_FCRTL 0x02160
76 #define E1000_FCRTH 0x02168
77 #define E1000_RDFPCQ(_n) (0x02430 + (0x4 * (_n)))
78 #define E1000_FCRTV 0x02460
88 #define E1000_RDBAL(_n) ((_n) < 4 ? (0x02800 + ((_n) * 0x100)) \
89 : (0x0C000 + ((_n) * 0x40)))
90 #define E1000_RDBAH(_n) ((_n) < 4 ? (0x02804 + ((_n) * 0x100)) \
91 : (0x0C004 + ((_n) * 0x40)))
92 #define E1000_RDLEN(_n) ((_n) < 4 ? (0x02808 + ((_n) * 0x100)) \
93 : (0x0C008 + ((_n) * 0x40)))
94 #define E1000_SRRCTL(_n) ((_n) < 4 ? (0x0280C + ((_n) * 0x100)) \
95 : (0x0C00C + ((_n) * 0x40)))
96 #define E1000_RDH(_n) ((_n) < 4 ? (0x02810 + ((_n) * 0x100)) \
97 : (0x0C010 + ((_n) * 0x40)))
98 #define E1000_RDT(_n) ((_n) < 4 ? (0x02818 + ((_n) * 0x100)) \
99 : (0x0C018 + ((_n) * 0x40)))
100 #define E1000_RXDCTL(_n) ((_n) < 4 ? (0x02828 + ((_n) * 0x100)) \
101 : (0x0C028 + ((_n) * 0x40)))
102 #define E1000_TDBAL(_n) ((_n) < 4 ? (0x03800 + ((_n) * 0x100)) \
103 : (0x0E000 + ((_n) * 0x40)))
104 #define E1000_TDBAH(_n) ((_n) < 4 ? (0x03804 + ((_n) * 0x100)) \
105 : (0x0E004 + ((_n) * 0x40)))
106 #define E1000_TDLEN(_n) ((_n) < 4 ? (0x03808 + ((_n) * 0x100)) \
107 : (0x0E008 + ((_n) * 0x40)))
108 #define E1000_TDH(_n) ((_n) < 4 ? (0x03810 + ((_n) * 0x100)) \
109 : (0x0E010 + ((_n) * 0x40)))
110 #define E1000_TDT(_n) ((_n) < 4 ? (0x03818 + ((_n) * 0x100)) \
111 : (0x0E018 + ((_n) * 0x40)))
112 #define E1000_TXDCTL(_n) ((_n) < 4 ? (0x03828 + ((_n) * 0x100)) \
113 : (0x0E028 + ((_n) * 0x40)))
114 #define E1000_TARC(_n) (0x03840 + (_n << 8))
115 #define E1000_DCA_TXCTRL(_n) (0x03814 + (_n << 8))
116 #define E1000_DCA_RXCTRL(_n) (0x02814 + (_n << 8))
117 #define E1000_TDWBAL(_n) ((_n) < 4 ? (0x03838 + ((_n) * 0x100)) \
118 : (0x0E038 + ((_n) * 0x40)))
119 #define E1000_TDWBAH(_n) ((_n) < 4 ? (0x0383C + ((_n) * 0x100)) \
120 : (0x0E03C + ((_n) * 0x40)))
121 #define E1000_TDFH 0x03410
122 #define E1000_TDFT 0x03418
123 #define E1000_TDFHS 0x03420
124 #define E1000_TDFPC 0x03430
125 #define E1000_DTXCTL 0x03590
126 #define E1000_CRCERRS 0x04000
127 #define E1000_ALGNERRC 0x04004
128 #define E1000_SYMERRS 0x04008
129 #define E1000_RXERRC 0x0400C
130 #define E1000_MPC 0x04010
131 #define E1000_SCC 0x04014
132 #define E1000_ECOL 0x04018
133 #define E1000_MCC 0x0401C
134 #define E1000_LATECOL 0x04020
135 #define E1000_COLC 0x04028
136 #define E1000_DC 0x04030
137 #define E1000_TNCRS 0x04034
138 #define E1000_SEC 0x04038
139 #define E1000_CEXTERR 0x0403C
140 #define E1000_RLEC 0x04040
141 #define E1000_XONRXC 0x04048
142 #define E1000_XONTXC 0x0404C
143 #define E1000_XOFFRXC 0x04050
144 #define E1000_XOFFTXC 0x04054
145 #define E1000_FCRUC 0x04058
146 #define E1000_PRC64 0x0405C
147 #define E1000_PRC127 0x04060
148 #define E1000_PRC255 0x04064
149 #define E1000_PRC511 0x04068
150 #define E1000_PRC1023 0x0406C
151 #define E1000_PRC1522 0x04070
152 #define E1000_GPRC 0x04074
153 #define E1000_BPRC 0x04078
154 #define E1000_MPRC 0x0407C
155 #define E1000_GPTC 0x04080
156 #define E1000_GORCL 0x04088
157 #define E1000_GORCH 0x0408C
158 #define E1000_GOTCL 0x04090
159 #define E1000_GOTCH 0x04094
160 #define E1000_RNBC 0x040A0
161 #define E1000_RUC 0x040A4
162 #define E1000_RFC 0x040A8
163 #define E1000_ROC 0x040AC
164 #define E1000_RJC 0x040B0
165 #define E1000_MGTPRC 0x040B4
166 #define E1000_MGTPDC 0x040B8
167 #define E1000_MGTPTC 0x040BC
168 #define E1000_TORL 0x040C0
169 #define E1000_TORH 0x040C4
170 #define E1000_TOTL 0x040C8
171 #define E1000_TOTH 0x040CC
172 #define E1000_TPR 0x040D0
173 #define E1000_TPT 0x040D4
174 #define E1000_PTC64 0x040D8
175 #define E1000_PTC127 0x040DC
176 #define E1000_PTC255 0x040E0
177 #define E1000_PTC511 0x040E4
178 #define E1000_PTC1023 0x040E8
179 #define E1000_PTC1522 0x040EC
180 #define E1000_MPTC 0x040F0
181 #define E1000_BPTC 0x040F4
182 #define E1000_TSCTC 0x040F8
183 #define E1000_TSCTFC 0x040FC
184 #define E1000_IAC 0x04100
186 #define E1000_ICRXPTC 0x04104
188 #define E1000_ICRXATC 0x04108
190 #define E1000_ICTXPTC 0x0410C
192 #define E1000_ICTXATC 0x04110
194 #define E1000_ICTXQEC 0x04118
196 #define E1000_ICTXQMTC 0x0411C
198 #define E1000_ICRXDMTC 0x04120
199 #define E1000_ICRXOC 0x04124
200 #define E1000_PCS_CFG0 0x04200
201 #define E1000_PCS_LCTL 0x04208
202 #define E1000_PCS_LSTAT 0x0420C
203 #define E1000_CBTMPC 0x0402C
204 #define E1000_HTDPMC 0x0403C
205 #define E1000_CBRMPC 0x040FC
206 #define E1000_RPTHC 0x04104
207 #define E1000_HGPTC 0x04118
208 #define E1000_HTCBDPC 0x04124
209 #define E1000_HGORCL 0x04128
210 #define E1000_HGORCH 0x0412C
211 #define E1000_HGOTCL 0x04130
212 #define E1000_HGOTCH 0x04134
213 #define E1000_LENERRS 0x04138
214 #define E1000_SCVPC 0x04228
215 #define E1000_PCS_ANADV 0x04218
216 #define E1000_PCS_LPAB 0x0421C
217 #define E1000_PCS_NPTX 0x04220
218 #define E1000_PCS_LPABNP 0x04224
219 #define E1000_RXCSUM 0x05000
220 #define E1000_RLPML 0x05004
221 #define E1000_RFCTL 0x05008
222 #define E1000_MTA 0x05200
223 #define E1000_RA 0x05400
224 #define E1000_RA2 0x054E0
225 #define E1000_RAL(_i) (((_i) <= 15) ? (0x05400 + ((_i) * 8)) : \
226 (0x054E0 + ((_i - 16) * 8)))
227 #define E1000_RAH(_i) (((_i) <= 15) ? (0x05404 + ((_i) * 8)) : \
228 (0x054E4 + ((_i - 16) * 8)))
229 #define E1000_VFTA 0x05600
230 #define E1000_VMD_CTL 0x0581C
231 #define E1000_WUC 0x05800
232 #define E1000_WUFC 0x05808
233 #define E1000_WUS 0x05810
234 #define E1000_MANC 0x05820
235 #define E1000_IPAV 0x05838
236 #define E1000_WUPL 0x05900
237 #define E1000_HOST_IF 0x08800
239 #define E1000_MANC2H 0x05860
240 #define E1000_SW_FW_SYNC 0x05B5C
241 #define E1000_CCMCTL 0x05B48
242 #define E1000_GIOCTL 0x05B44
243 #define E1000_SCCTL 0x05B4C
244 #define E1000_FACTPS 0x05B30
245 #define E1000_SWSM 0x05B50
246 #define E1000_FWSM 0x05B54
247 #define E1000_DCA_ID 0x05B70
248 #define E1000_DCA_CTRL 0x05B74
249 #define E1000_HICR 0x08F00
252 #define E1000_MRQC 0x05818
253 #define E1000_IMIR(_i) (0x05A80 + ((_i) * 4))
254 #define E1000_IMIREXT(_i) (0x05AA0 + ((_i) * 4))
255 #define E1000_IMIRVP 0x05AC0
257 #define E1000_MSIXBM(_i) (0x01600 + ((_i) * 4))
259 #define E1000_MSIXTADD(_i) (0x0C000 + ((_i) * 0x10))
261 #define E1000_MSIXTUADD(_i) (0x0C004 + ((_i) * 0x10))
263 #define E1000_MSIXTMSG(_i) (0x0C008 + ((_i) * 0x10))
265 #define E1000_MSIXVCTRL(_i) (0x0C00C + ((_i) * 0x10))
267 #define E1000_RETA(_i) (0x05C00 + ((_i) * 4))
268 #define E1000_RSSRK(_i) (0x05C80 + ((_i) * 4))
270 #define wr32(reg, value) (writel(value, hw->hw_addr + reg))
271 #define rd32(reg) (readl(hw->hw_addr + reg))
272 #define wrfl() ((void)rd32(E1000_STATUS))
274 #define array_wr32(reg, offset, value) \
275 (writel(value, hw->hw_addr + reg + ((offset) << 2)))
276 #define array_rd32(reg, offset) \
277 (readl(hw->hw_addr + reg + ((offset) << 2)))