1
2
3
4#ifndef _IGC_REGS_H_
5#define _IGC_REGS_H_
6
7
8#define IGC_CTRL 0x00000
9#define IGC_STATUS 0x00008
10#define IGC_EECD 0x00010
11#define IGC_CTRL_EXT 0x00018
12#define IGC_MDIC 0x00020
13#define IGC_MDICNFG 0x00E04
14#define IGC_CONNSW 0x00034
15#define IGC_I225_PHPM 0x00E14
16
17
18#define IGC_RXPBS 0x02404
19#define IGC_TXPBS 0x03404
20#define IGC_TDFH 0x03410
21#define IGC_TDFT 0x03418
22#define IGC_TDFHS 0x03420
23#define IGC_TDFTS 0x03428
24#define IGC_TDFPC 0x03430
25
26
27#define IGC_EERD 0x12014
28#define IGC_EEWR 0x12018
29
30
31#define IGC_FCAL 0x00028
32#define IGC_FCAH 0x0002C
33#define IGC_FCT 0x00030
34#define IGC_FCTTV 0x00170
35#define IGC_FCRTL 0x02160
36#define IGC_FCRTH 0x02168
37#define IGC_FCRTV 0x02460
38#define IGC_FCSTS 0x02464
39
40
41#define IGC_GCR 0x05B00
42
43
44#define IGC_SW_FW_SYNC 0x05B5C
45#define IGC_SWSM 0x05B50
46#define IGC_FWSM 0x05B54
47
48
49#define IGC_FACTPS 0x05B30
50
51
52#define IGC_EICS 0x01520
53#define IGC_EIMS 0x01524
54#define IGC_EIMC 0x01528
55#define IGC_EIAC 0x0152C
56#define IGC_EIAM 0x01530
57#define IGC_ICR 0x01500
58#define IGC_ICS 0x01504
59#define IGC_IMS 0x01508
60#define IGC_IMC 0x0150C
61#define IGC_IAM 0x01510
62
63#define IGC_EITR(_n) (0x01680 + (0x4 * (_n)))
64
65#define IGC_IVAR0 0x01700
66#define IGC_IVAR_MISC 0x01740
67#define IGC_GPIE 0x01514
68
69
70#define IGC_ICRXPTC 0x04104
71#define IGC_ICRXATC 0x04108
72#define IGC_ICTXPTC 0x0410C
73#define IGC_ICTXATC 0x04110
74#define IGC_ICTXQEC 0x04118
75#define IGC_ICTXQMTC 0x0411C
76#define IGC_ICRXDMTC 0x04120
77#define IGC_ICRXOC 0x04124
78
79#define IGC_CBTMPC 0x0402C
80#define IGC_HTDPMC 0x0403C
81#define IGC_CBRMPC 0x040FC
82#define IGC_RPTHC 0x04104
83#define IGC_HGPTC 0x04118
84#define IGC_HTCBDPC 0x04124
85
86
87#define IGC_PBACL 0x05B68
88
89
90#define IGC_MRQC 0x05818
91
92
93#define IGC_ETQF(_n) (0x05CB0 + (4 * (_n)))
94
95
96#define IGC_ETQF_FILTER_ENABLE BIT(26)
97#define IGC_ETQF_QUEUE_ENABLE BIT(31)
98#define IGC_ETQF_QUEUE_SHIFT 16
99#define IGC_ETQF_QUEUE_MASK 0x00070000
100#define IGC_ETQF_ETYPE_MASK 0x0000FFFF
101
102
103#define IGC_RETA(_i) (0x05C00 + ((_i) * 4))
104
105#define IGC_RSSRK(_i) (0x05C80 + ((_i) * 4))
106
107
108#define IGC_RCTL 0x00100
109#define IGC_SRRCTL(_n) (0x0C00C + ((_n) * 0x40))
110#define IGC_PSRTYPE(_i) (0x05480 + ((_i) * 4))
111#define IGC_RDBAL(_n) (0x0C000 + ((_n) * 0x40))
112#define IGC_RDBAH(_n) (0x0C004 + ((_n) * 0x40))
113#define IGC_RDLEN(_n) (0x0C008 + ((_n) * 0x40))
114#define IGC_RDH(_n) (0x0C010 + ((_n) * 0x40))
115#define IGC_RDT(_n) (0x0C018 + ((_n) * 0x40))
116#define IGC_RXDCTL(_n) (0x0C028 + ((_n) * 0x40))
117#define IGC_RQDPC(_n) (0x0C030 + ((_n) * 0x40))
118#define IGC_RXCSUM 0x05000
119#define IGC_RLPML 0x05004
120#define IGC_RFCTL 0x05008
121#define IGC_MTA 0x05200
122#define IGC_UTA 0x0A000
123#define IGC_RAL(_n) (0x05400 + ((_n) * 0x08))
124#define IGC_RAH(_n) (0x05404 + ((_n) * 0x08))
125#define IGC_VLAPQF 0x055B0
126
127
128#define IGC_TCTL 0x00400
129#define IGC_TIPG 0x00410
130#define IGC_TDBAL(_n) (0x0E000 + ((_n) * 0x40))
131#define IGC_TDBAH(_n) (0x0E004 + ((_n) * 0x40))
132#define IGC_TDLEN(_n) (0x0E008 + ((_n) * 0x40))
133#define IGC_TDH(_n) (0x0E010 + ((_n) * 0x40))
134#define IGC_TDT(_n) (0x0E018 + ((_n) * 0x40))
135#define IGC_TXDCTL(_n) (0x0E028 + ((_n) * 0x40))
136
137
138#define IGC_MMDAC 13
139#define IGC_MMDAAD 14
140
141
142#define IGC_PQGPTC(_n) (0x010014 + (0x100 * (_n)))
143
144
145#define IGC_CRCERRS 0x04000
146#define IGC_ALGNERRC 0x04004
147#define IGC_SYMERRS 0x04008
148#define IGC_RXERRC 0x0400C
149#define IGC_MPC 0x04010
150#define IGC_SCC 0x04014
151#define IGC_ECOL 0x04018
152#define IGC_MCC 0x0401C
153#define IGC_LATECOL 0x04020
154#define IGC_COLC 0x04028
155#define IGC_DC 0x04030
156#define IGC_TNCRS 0x04034
157#define IGC_SEC 0x04038
158#define IGC_CEXTERR 0x0403C
159#define IGC_RLEC 0x04040
160#define IGC_XONRXC 0x04048
161#define IGC_XONTXC 0x0404C
162#define IGC_XOFFRXC 0x04050
163#define IGC_XOFFTXC 0x04054
164#define IGC_FCRUC 0x04058
165#define IGC_PRC64 0x0405C
166#define IGC_PRC127 0x04060
167#define IGC_PRC255 0x04064
168#define IGC_PRC511 0x04068
169#define IGC_PRC1023 0x0406C
170#define IGC_PRC1522 0x04070
171#define IGC_GPRC 0x04074
172#define IGC_BPRC 0x04078
173#define IGC_MPRC 0x0407C
174#define IGC_GPTC 0x04080
175#define IGC_GORCL 0x04088
176#define IGC_GORCH 0x0408C
177#define IGC_GOTCL 0x04090
178#define IGC_GOTCH 0x04094
179#define IGC_RNBC 0x040A0
180#define IGC_RUC 0x040A4
181#define IGC_RFC 0x040A8
182#define IGC_ROC 0x040AC
183#define IGC_RJC 0x040B0
184#define IGC_MGTPRC 0x040B4
185#define IGC_MGTPDC 0x040B8
186#define IGC_MGTPTC 0x040BC
187#define IGC_TORL 0x040C0
188#define IGC_TORH 0x040C4
189#define IGC_TOTL 0x040C8
190#define IGC_TOTH 0x040CC
191#define IGC_TPR 0x040D0
192#define IGC_TPT 0x040D4
193#define IGC_PTC64 0x040D8
194#define IGC_PTC127 0x040DC
195#define IGC_PTC255 0x040E0
196#define IGC_PTC511 0x040E4
197#define IGC_PTC1023 0x040E8
198#define IGC_PTC1522 0x040EC
199#define IGC_MPTC 0x040F0
200#define IGC_BPTC 0x040F4
201#define IGC_TSCTC 0x040F8
202#define IGC_TSCTFC 0x040FC
203#define IGC_IAC 0x04100
204#define IGC_ICTXPTC 0x0410C
205#define IGC_ICTXATC 0x04110
206#define IGC_ICTXQEC 0x04118
207#define IGC_ICTXQMTC 0x0411C
208#define IGC_RPTHC 0x04104
209#define IGC_HGPTC 0x04118
210#define IGC_RXDMTC 0x04120
211#define IGC_HGORCL 0x04128
212#define IGC_HGORCH 0x0412C
213#define IGC_HGOTCL 0x04130
214#define IGC_HGOTCH 0x04134
215#define IGC_LENERRS 0x04138
216#define IGC_HRMPC 0x0A018
217
218
219#define IGC_TSICR 0x0B66C
220#define IGC_TSIM 0x0B674
221#define IGC_TSAUXC 0x0B640
222#define IGC_TSYNCRXCTL 0x0B620
223#define IGC_TSYNCTXCTL 0x0B614
224#define IGC_TSYNCRXCFG 0x05F50
225#define IGC_TSSDP 0x0003C
226
227#define IGC_IMIR(_i) (0x05A80 + ((_i) * 4))
228#define IGC_IMIREXT(_i) (0x05AA0 + ((_i) * 4))
229
230#define IGC_FTQF(_n) (0x059E0 + (4 * (_n)))
231
232#define IGC_RXPBS 0x02404
233
234
235#define IGC_SYSTIML 0x0B600
236#define IGC_SYSTIMH 0x0B604
237#define IGC_SYSTIMR 0x0B6F8
238#define IGC_TIMINCA 0x0B608
239
240#define IGC_RXSTMPL 0x0B624
241#define IGC_RXSTMPH 0x0B628
242#define IGC_TXSTMPL 0x0B618
243#define IGC_TXSTMPH 0x0B61C
244
245
246#define IGC_MANC 0x05820
247
248
249#define IGC_SRWR 0x12018
250
251
252#define IGC_WUC 0x05800
253#define IGC_WUFC 0x05808
254#define IGC_WUS 0x05810
255#define IGC_WUPL 0x05900
256
257
258#define IGC_WUPM_REG(_i) (0x05A00 + ((_i) * 4))
259
260
261struct igc_hw;
262u32 igc_rd32(struct igc_hw *hw, u32 reg);
263
264
265#define wr32(reg, val) \
266do { \
267 u8 __iomem *hw_addr = READ_ONCE((hw)->hw_addr); \
268 if (!IGC_REMOVED(hw_addr)) \
269 writel((val), &hw_addr[(reg)]); \
270} while (0)
271
272#define rd32(reg) (igc_rd32(hw, reg))
273
274#define wrfl() ((void)rd32(IGC_STATUS))
275
276#define array_wr32(reg, offset, value) \
277 wr32((reg) + ((offset) << 2), (value))
278
279#define array_rd32(reg, offset) (igc_rd32(hw, (reg) + ((offset) << 2)))
280
281#endif
282