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