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