1*1b481fc3SMaciej Żenczykowski /* Copyright (c) 2020 Intel Corporation */
2*1b481fc3SMaciej Żenczykowski #include <stdio.h>
3*1b481fc3SMaciej Żenczykowski #include "internal.h"
4*1b481fc3SMaciej Żenczykowski
5*1b481fc3SMaciej Żenczykowski #define RAH_RAH 0x0000FFFF
6*1b481fc3SMaciej Żenczykowski #define RAH_ASEL 0x00010000
7*1b481fc3SMaciej Żenczykowski #define RAH_QSEL 0x000C0000
8*1b481fc3SMaciej Żenczykowski #define RAH_QSEL_EN 0x10000000
9*1b481fc3SMaciej Żenczykowski #define RAH_AV 0x80000000
10*1b481fc3SMaciej Żenczykowski #define RCTL_RXEN 0x00000002
11*1b481fc3SMaciej Żenczykowski #define RCTL_SBP 0x00000004
12*1b481fc3SMaciej Żenczykowski #define RCTL_UPE 0x00000008
13*1b481fc3SMaciej Żenczykowski #define RCTL_MPE 0x00000010
14*1b481fc3SMaciej Żenczykowski #define RCTL_LPE 0x00000020
15*1b481fc3SMaciej Żenczykowski #define RCTL_LBM 0x000000C0
16*1b481fc3SMaciej Żenczykowski #define RCTL_LBM_PHY 0x00000000
17*1b481fc3SMaciej Żenczykowski #define RCTL_LBM_MAC 0x00000040
18*1b481fc3SMaciej Żenczykowski #define RCTL_HSEL 0x00000300
19*1b481fc3SMaciej Żenczykowski #define RCTL_HSEL_MULTICAST 0x00000000
20*1b481fc3SMaciej Żenczykowski #define RCTL_HSEL_UNICAST 0x00000100
21*1b481fc3SMaciej Żenczykowski #define RCTL_HSEL_BOTH 0x00000200
22*1b481fc3SMaciej Żenczykowski #define RCTL_MO 0x00003000
23*1b481fc3SMaciej Żenczykowski #define RCTL_MO_47_36 0x00000000
24*1b481fc3SMaciej Żenczykowski #define RCTL_MO_43_32 0x00001000
25*1b481fc3SMaciej Żenczykowski #define RCTL_MO_39_28 0x00002000
26*1b481fc3SMaciej Żenczykowski #define RCTL_BAM 0x00008000
27*1b481fc3SMaciej Żenczykowski #define RCTL_BSIZE 0x00030000
28*1b481fc3SMaciej Żenczykowski #define RCTL_BSIZE_2048 0x00000000
29*1b481fc3SMaciej Żenczykowski #define RCTL_BSIZE_1024 0x00010000
30*1b481fc3SMaciej Żenczykowski #define RCTL_BSIZE_512 0x00020000
31*1b481fc3SMaciej Żenczykowski #define RCTL_VFE 0x00040000
32*1b481fc3SMaciej Żenczykowski #define RCTL_CFIEN 0x00080000
33*1b481fc3SMaciej Żenczykowski #define RCTL_CFI 0x00100000
34*1b481fc3SMaciej Żenczykowski #define RCTL_PSP 0x00200000
35*1b481fc3SMaciej Żenczykowski #define RCTL_DPF 0x00400000
36*1b481fc3SMaciej Żenczykowski #define RCTL_PMCF 0x00800000
37*1b481fc3SMaciej Żenczykowski #define RCTL_SECRC 0x04000000
38*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP0QSEL 0x00000003
39*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP0PBSEL 0x00000004
40*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP0V 0x00000008
41*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP1QSEL 0x00000030
42*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP1PBSEL 0x00000040
43*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP1V 0x00000080
44*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP2QSEL 0x00000300
45*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP2PBSEL 0x00000400
46*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP2V 0x00000800
47*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP3QSEL 0x00003000
48*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP3PBSEL 0x00004000
49*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP3V 0x00008000
50*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP4QSEL 0x00030000
51*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP4PBSEL 0x00040000
52*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP4V 0x00080000
53*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP5QSEL 0x00300000
54*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP5PBSEL 0x00400000
55*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP5V 0x00800000
56*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP6QSEL 0x03000000
57*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP6PBSEL 0x04000000
58*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP6V 0x08000000
59*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP7QSEL 0x30000000
60*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP7PBSEL 0x40000000
61*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP7V 0x80000000
62*1b481fc3SMaciej Żenczykowski #define ETQF_ETYPE 0x0000FFFF
63*1b481fc3SMaciej Żenczykowski #define ETQF_QUEUE 0x00070000
64*1b481fc3SMaciej Żenczykowski #define ETQF_ETYPE_LEN 0x01F00000
65*1b481fc3SMaciej Żenczykowski #define ETQF_ETYPE_LEN_EN 0x02000000
66*1b481fc3SMaciej Żenczykowski #define ETQF_FILTER_EN 0x04000000
67*1b481fc3SMaciej Żenczykowski #define ETQF_IMMEDIATE_INTR 0x20000000
68*1b481fc3SMaciej Żenczykowski #define ETQF_1588_TIMESTAMP 0x40000000
69*1b481fc3SMaciej Żenczykowski #define ETQF_QUEUE_EN 0x80000000
70*1b481fc3SMaciej Żenczykowski
71*1b481fc3SMaciej Żenczykowski #define RAH_QSEL_SHIFT 18
72*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP1QSEL_SHIFT 4
73*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP2QSEL_SHIFT 8
74*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP3QSEL_SHIFT 12
75*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP4QSEL_SHIFT 16
76*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP5QSEL_SHIFT 20
77*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP6QSEL_SHIFT 24
78*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP7QSEL_SHIFT 28
79*1b481fc3SMaciej Żenczykowski #define ETQF_QUEUE_SHIFT 16
80*1b481fc3SMaciej Żenczykowski #define ETQF_ETYPE_LEN_SHIFT 20
81*1b481fc3SMaciej Żenczykowski
bit_to_boolean(u32 val)82*1b481fc3SMaciej Żenczykowski static const char *bit_to_boolean(u32 val)
83*1b481fc3SMaciej Żenczykowski {
84*1b481fc3SMaciej Żenczykowski return val ? "yes" : "no";
85*1b481fc3SMaciej Żenczykowski }
86*1b481fc3SMaciej Żenczykowski
bit_to_enable(u32 val)87*1b481fc3SMaciej Żenczykowski static const char *bit_to_enable(u32 val)
88*1b481fc3SMaciej Żenczykowski {
89*1b481fc3SMaciej Żenczykowski return val ? "enabled" : "disabled";
90*1b481fc3SMaciej Żenczykowski }
91*1b481fc3SMaciej Żenczykowski
bit_to_prio(u32 val)92*1b481fc3SMaciej Żenczykowski static const char *bit_to_prio(u32 val)
93*1b481fc3SMaciej Żenczykowski {
94*1b481fc3SMaciej Żenczykowski return val ? "low" : "high";
95*1b481fc3SMaciej Żenczykowski }
96*1b481fc3SMaciej Żenczykowski
igc_dump_regs(struct ethtool_drvinfo * info __maybe_unused,struct ethtool_regs * regs)97*1b481fc3SMaciej Żenczykowski int igc_dump_regs(struct ethtool_drvinfo *info __maybe_unused,
98*1b481fc3SMaciej Żenczykowski struct ethtool_regs *regs)
99*1b481fc3SMaciej Żenczykowski {
100*1b481fc3SMaciej Żenczykowski u32 reg;
101*1b481fc3SMaciej Żenczykowski int offset, i;
102*1b481fc3SMaciej Żenczykowski u32 *regs_buff = (u32 *)regs->data;
103*1b481fc3SMaciej Żenczykowski u8 version = (u8)(regs->version >> 24);
104*1b481fc3SMaciej Żenczykowski
105*1b481fc3SMaciej Żenczykowski if (version != 2)
106*1b481fc3SMaciej Żenczykowski return -1;
107*1b481fc3SMaciej Żenczykowski
108*1b481fc3SMaciej Żenczykowski for (offset = 0; offset < 24; offset++) {
109*1b481fc3SMaciej Żenczykowski reg = regs_buff[offset];
110*1b481fc3SMaciej Żenczykowski printf("%04d: 0x%08X\n", offset, reg);
111*1b481fc3SMaciej Żenczykowski }
112*1b481fc3SMaciej Żenczykowski
113*1b481fc3SMaciej Żenczykowski offset = 24;
114*1b481fc3SMaciej Żenczykowski
115*1b481fc3SMaciej Żenczykowski reg = regs_buff[offset];
116*1b481fc3SMaciej Żenczykowski printf("%04d: RCTL (Receive Control Register) \n"
117*1b481fc3SMaciej Żenczykowski " Receiver: %s\n"
118*1b481fc3SMaciej Żenczykowski " Stop Bad Packets: %s\n"
119*1b481fc3SMaciej Żenczykowski " Unicast Promiscuous: %s\n"
120*1b481fc3SMaciej Żenczykowski " Multicast Promiscuous: %s\n"
121*1b481fc3SMaciej Żenczykowski " Long Packet Reception: %s\n"
122*1b481fc3SMaciej Żenczykowski " Loopback Model: %s\n"
123*1b481fc3SMaciej Żenczykowski " Hash Select for MTA: %s\n"
124*1b481fc3SMaciej Żenczykowski " Multicast/Unicast Table Offset: %s\n"
125*1b481fc3SMaciej Żenczykowski " Broadcast Accept Mode: %s\n"
126*1b481fc3SMaciej Żenczykowski " Receive Buffer Size: %s\n"
127*1b481fc3SMaciej Żenczykowski " VLAN Filter: %s\n"
128*1b481fc3SMaciej Żenczykowski " Canonical Form Indicator: %s\n"
129*1b481fc3SMaciej Żenczykowski " Canonical Form Indicator Bit: %s\n"
130*1b481fc3SMaciej Żenczykowski " Pad Small Receive Packets: %s\n"
131*1b481fc3SMaciej Żenczykowski " Discard Pause Frames: %s\n"
132*1b481fc3SMaciej Żenczykowski " Pass MAC Control Frames: %s\n"
133*1b481fc3SMaciej Żenczykowski " Strip Ethernet CRC: %s\n",
134*1b481fc3SMaciej Żenczykowski offset,
135*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & RCTL_RXEN),
136*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & RCTL_SBP),
137*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & RCTL_UPE),
138*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & RCTL_MPE),
139*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & RCTL_LPE),
140*1b481fc3SMaciej Żenczykowski (reg & RCTL_LBM) == RCTL_LBM_PHY ? "PHY" :
141*1b481fc3SMaciej Żenczykowski (reg & RCTL_LBM) == RCTL_LBM_MAC ? "MAC" :
142*1b481fc3SMaciej Żenczykowski "undefined",
143*1b481fc3SMaciej Żenczykowski (reg & RCTL_HSEL) == RCTL_HSEL_MULTICAST ? "multicast only" :
144*1b481fc3SMaciej Żenczykowski (reg & RCTL_HSEL) == RCTL_HSEL_UNICAST ? "unicast only" :
145*1b481fc3SMaciej Żenczykowski (reg & RCTL_HSEL) == RCTL_HSEL_BOTH ? "multicast and unicast" :
146*1b481fc3SMaciej Żenczykowski "reserved",
147*1b481fc3SMaciej Żenczykowski (reg & RCTL_MO) == RCTL_MO_47_36 ? "bits [47:36]" :
148*1b481fc3SMaciej Żenczykowski (reg & RCTL_MO) == RCTL_MO_43_32 ? "bits [43:32]" :
149*1b481fc3SMaciej Żenczykowski (reg & RCTL_MO) == RCTL_MO_39_28 ? "bits [39:28]" :
150*1b481fc3SMaciej Żenczykowski "bits [35:24]",
151*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & RCTL_BAM),
152*1b481fc3SMaciej Żenczykowski (reg & RCTL_BSIZE) == RCTL_BSIZE_2048 ? "2048 bytes" :
153*1b481fc3SMaciej Żenczykowski (reg & RCTL_BSIZE) == RCTL_BSIZE_1024 ? "1024 bytes" :
154*1b481fc3SMaciej Żenczykowski (reg & RCTL_BSIZE) == RCTL_BSIZE_512 ? "512 bytes" :
155*1b481fc3SMaciej Żenczykowski "256 bytes",
156*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & RCTL_VFE),
157*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & RCTL_CFIEN),
158*1b481fc3SMaciej Żenczykowski reg & RCTL_CFI ? "discarded" : "accepted",
159*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & RCTL_PSP),
160*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & RCTL_DPF),
161*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & RCTL_PMCF),
162*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & RCTL_SECRC));
163*1b481fc3SMaciej Żenczykowski
164*1b481fc3SMaciej Żenczykowski for (offset = 25; offset < 172; offset++) {
165*1b481fc3SMaciej Żenczykowski reg = regs_buff[offset];
166*1b481fc3SMaciej Żenczykowski printf("%04d: 0x%08X\n", offset, reg);
167*1b481fc3SMaciej Żenczykowski }
168*1b481fc3SMaciej Żenczykowski
169*1b481fc3SMaciej Żenczykowski offset = 172;
170*1b481fc3SMaciej Żenczykowski
171*1b481fc3SMaciej Żenczykowski for (i = 0; i < 16; i++) {
172*1b481fc3SMaciej Żenczykowski reg = regs_buff[offset + i];
173*1b481fc3SMaciej Żenczykowski printf("%04d: RAL (Receive Address Low %02d) \n"
174*1b481fc3SMaciej Żenczykowski " Receive Address Low: %08X\n",
175*1b481fc3SMaciej Żenczykowski offset + i, i,
176*1b481fc3SMaciej Żenczykowski reg);
177*1b481fc3SMaciej Żenczykowski }
178*1b481fc3SMaciej Żenczykowski
179*1b481fc3SMaciej Żenczykowski offset = 188;
180*1b481fc3SMaciej Żenczykowski
181*1b481fc3SMaciej Żenczykowski for (i = 0; i < 16; i++) {
182*1b481fc3SMaciej Żenczykowski reg = regs_buff[offset + i];
183*1b481fc3SMaciej Żenczykowski printf("%04d: RAH (Receive Address High %02d) \n"
184*1b481fc3SMaciej Żenczykowski " Receive Address High: %04X\n"
185*1b481fc3SMaciej Żenczykowski " Address Select: %s\n"
186*1b481fc3SMaciej Żenczykowski " Queue Select: %d\n"
187*1b481fc3SMaciej Żenczykowski " Queue Select Enable: %s\n"
188*1b481fc3SMaciej Żenczykowski " Address Valid: %s\n",
189*1b481fc3SMaciej Żenczykowski offset + i, i,
190*1b481fc3SMaciej Żenczykowski reg & RAH_RAH,
191*1b481fc3SMaciej Żenczykowski reg & RAH_ASEL ? "source" : "destination",
192*1b481fc3SMaciej Żenczykowski (reg & RAH_QSEL) >> RAH_QSEL_SHIFT,
193*1b481fc3SMaciej Żenczykowski bit_to_boolean(reg & RAH_QSEL_EN),
194*1b481fc3SMaciej Żenczykowski bit_to_boolean(reg & RAH_AV));
195*1b481fc3SMaciej Żenczykowski }
196*1b481fc3SMaciej Żenczykowski
197*1b481fc3SMaciej Żenczykowski offset = 204;
198*1b481fc3SMaciej Żenczykowski
199*1b481fc3SMaciej Żenczykowski reg = regs_buff[offset];
200*1b481fc3SMaciej Żenczykowski printf("%04d: VLANPQF (VLAN Priority Queue Filter) \n"
201*1b481fc3SMaciej Żenczykowski " Priority 0 \n"
202*1b481fc3SMaciej Żenczykowski " Queue: %d\n"
203*1b481fc3SMaciej Żenczykowski " Packet Buffer: %s\n"
204*1b481fc3SMaciej Żenczykowski " Valid: %s\n"
205*1b481fc3SMaciej Żenczykowski " Priority 1 \n"
206*1b481fc3SMaciej Żenczykowski " Queue: %d\n"
207*1b481fc3SMaciej Żenczykowski " Packet Buffer: %s\n"
208*1b481fc3SMaciej Żenczykowski " Valid: %s\n"
209*1b481fc3SMaciej Żenczykowski " Priority 2 \n"
210*1b481fc3SMaciej Żenczykowski " Queue: %d\n"
211*1b481fc3SMaciej Żenczykowski " Packet Buffer: %s\n"
212*1b481fc3SMaciej Żenczykowski " Valid: %s\n"
213*1b481fc3SMaciej Żenczykowski " Priority 3 \n"
214*1b481fc3SMaciej Żenczykowski " Queue: %d\n"
215*1b481fc3SMaciej Żenczykowski " Packet Buffer: %s\n"
216*1b481fc3SMaciej Żenczykowski " Valid: %s\n"
217*1b481fc3SMaciej Żenczykowski " Priority 4 \n"
218*1b481fc3SMaciej Żenczykowski " Queue: %d\n"
219*1b481fc3SMaciej Żenczykowski " Packet Buffer: %s\n"
220*1b481fc3SMaciej Żenczykowski " Valid: %s\n"
221*1b481fc3SMaciej Żenczykowski " Priority 5 \n"
222*1b481fc3SMaciej Żenczykowski " Queue: %d\n"
223*1b481fc3SMaciej Żenczykowski " Packet Buffer: %s\n"
224*1b481fc3SMaciej Żenczykowski " Valid: %s\n"
225*1b481fc3SMaciej Żenczykowski " Priority 6 \n"
226*1b481fc3SMaciej Żenczykowski " Queue: %d\n"
227*1b481fc3SMaciej Żenczykowski " Packet Buffer: %s\n"
228*1b481fc3SMaciej Żenczykowski " Valid: %s\n"
229*1b481fc3SMaciej Żenczykowski " Priority 7 \n"
230*1b481fc3SMaciej Żenczykowski " Queue: %d\n"
231*1b481fc3SMaciej Żenczykowski " Packet Buffer: %s\n"
232*1b481fc3SMaciej Żenczykowski " Valid: %s\n",
233*1b481fc3SMaciej Żenczykowski offset,
234*1b481fc3SMaciej Żenczykowski reg & VLANPQF_VP0QSEL,
235*1b481fc3SMaciej Żenczykowski bit_to_prio(reg & VLANPQF_VP0PBSEL),
236*1b481fc3SMaciej Żenczykowski bit_to_boolean(reg & VLANPQF_VLANP0V),
237*1b481fc3SMaciej Żenczykowski (reg & VLANPQF_VP1QSEL) >> VLANPQF_VP1QSEL_SHIFT,
238*1b481fc3SMaciej Żenczykowski bit_to_prio(reg & VLANPQF_VP1PBSEL),
239*1b481fc3SMaciej Żenczykowski bit_to_boolean(reg & VLANPQF_VLANP1V),
240*1b481fc3SMaciej Żenczykowski (reg & VLANPQF_VP2QSEL) >> VLANPQF_VP2QSEL_SHIFT,
241*1b481fc3SMaciej Żenczykowski bit_to_prio(reg & VLANPQF_VP2PBSEL),
242*1b481fc3SMaciej Żenczykowski bit_to_boolean(reg & VLANPQF_VLANP2V),
243*1b481fc3SMaciej Żenczykowski (reg & VLANPQF_VP3QSEL) >> VLANPQF_VP3QSEL_SHIFT,
244*1b481fc3SMaciej Żenczykowski bit_to_prio(reg & VLANPQF_VP3PBSEL),
245*1b481fc3SMaciej Żenczykowski bit_to_boolean(reg & VLANPQF_VLANP3V),
246*1b481fc3SMaciej Żenczykowski (reg & VLANPQF_VP4QSEL) >> VLANPQF_VP4QSEL_SHIFT,
247*1b481fc3SMaciej Żenczykowski bit_to_prio(reg & VLANPQF_VP4PBSEL),
248*1b481fc3SMaciej Żenczykowski bit_to_boolean(reg & VLANPQF_VLANP4V),
249*1b481fc3SMaciej Żenczykowski (reg & VLANPQF_VP5QSEL) >> VLANPQF_VP5QSEL_SHIFT,
250*1b481fc3SMaciej Żenczykowski bit_to_prio(reg & VLANPQF_VP5PBSEL),
251*1b481fc3SMaciej Żenczykowski bit_to_boolean(reg & VLANPQF_VLANP5V),
252*1b481fc3SMaciej Żenczykowski (reg & VLANPQF_VP6QSEL) >> VLANPQF_VP6QSEL_SHIFT,
253*1b481fc3SMaciej Żenczykowski bit_to_prio(reg & VLANPQF_VP6PBSEL),
254*1b481fc3SMaciej Żenczykowski bit_to_boolean(reg & VLANPQF_VLANP6V),
255*1b481fc3SMaciej Żenczykowski (reg & VLANPQF_VP7QSEL) >> VLANPQF_VP7QSEL_SHIFT,
256*1b481fc3SMaciej Żenczykowski bit_to_prio(reg & VLANPQF_VP7PBSEL),
257*1b481fc3SMaciej Żenczykowski bit_to_boolean(reg & VLANPQF_VLANP7V));
258*1b481fc3SMaciej Żenczykowski
259*1b481fc3SMaciej Żenczykowski offset = 205;
260*1b481fc3SMaciej Żenczykowski
261*1b481fc3SMaciej Żenczykowski for (i = 0; i < 8; i++) {
262*1b481fc3SMaciej Żenczykowski reg = regs_buff[offset + i];
263*1b481fc3SMaciej Żenczykowski printf("%04d: ETQF (EType Queue Filter %d) \n"
264*1b481fc3SMaciej Żenczykowski " EType: %04X\n"
265*1b481fc3SMaciej Żenczykowski " EType Length: %d\n"
266*1b481fc3SMaciej Żenczykowski " EType Length Enable: %s\n"
267*1b481fc3SMaciej Żenczykowski " Queue: %d\n"
268*1b481fc3SMaciej Żenczykowski " Queue Enable: %s\n"
269*1b481fc3SMaciej Żenczykowski " Immediate Interrupt: %s\n"
270*1b481fc3SMaciej Żenczykowski " 1588 Time Stamp: %s\n"
271*1b481fc3SMaciej Żenczykowski " Filter Enable: %s\n",
272*1b481fc3SMaciej Żenczykowski offset + i, i,
273*1b481fc3SMaciej Żenczykowski reg & ETQF_ETYPE,
274*1b481fc3SMaciej Żenczykowski (reg & ETQF_ETYPE_LEN) >> ETQF_ETYPE_LEN_SHIFT,
275*1b481fc3SMaciej Żenczykowski bit_to_boolean(reg & ETQF_ETYPE_LEN_EN),
276*1b481fc3SMaciej Żenczykowski (reg & ETQF_QUEUE) >> ETQF_QUEUE_SHIFT,
277*1b481fc3SMaciej Żenczykowski bit_to_boolean(reg & ETQF_QUEUE_EN),
278*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & ETQF_IMMEDIATE_INTR),
279*1b481fc3SMaciej Żenczykowski bit_to_enable(reg & ETQF_1588_TIMESTAMP),
280*1b481fc3SMaciej Żenczykowski bit_to_boolean(reg & ETQF_FILTER_EN));
281*1b481fc3SMaciej Żenczykowski }
282*1b481fc3SMaciej Żenczykowski
283*1b481fc3SMaciej Żenczykowski return 0;
284*1b481fc3SMaciej Żenczykowski }
285