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