1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /****************************************************************************** |
3 | * |
4 | * Copyright(c) 2009 - 2014 Intel Corporation. All rights reserved. |
5 | * Copyright(c) 2016-2017 Intel Deutschland GmbH |
6 | *****************************************************************************/ |
7 | |
8 | #if !defined(__IWLWIFI_DEVICE_TRACE_IO) || defined(TRACE_HEADER_MULTI_READ) |
9 | #define __IWLWIFI_DEVICE_TRACE_IO |
10 | |
11 | #include <linux/tracepoint.h> |
12 | #include <linux/pci.h> |
13 | |
14 | #undef TRACE_SYSTEM |
15 | #define TRACE_SYSTEM iwlwifi_io |
16 | |
17 | TRACE_EVENT(iwlwifi_dev_ioread32, |
18 | TP_PROTO(const struct device *dev, u32 offs, u32 val), |
19 | TP_ARGS(dev, offs, val), |
20 | TP_STRUCT__entry( |
21 | DEV_ENTRY |
22 | __field(u32, offs) |
23 | __field(u32, val) |
24 | ), |
25 | TP_fast_assign( |
26 | DEV_ASSIGN; |
27 | __entry->offs = offs; |
28 | __entry->val = val; |
29 | ), |
30 | TP_printk("[%s] read io[%#x] = %#x" , |
31 | __get_str(dev), __entry->offs, __entry->val) |
32 | ); |
33 | |
34 | TRACE_EVENT(iwlwifi_dev_iowrite8, |
35 | TP_PROTO(const struct device *dev, u32 offs, u8 val), |
36 | TP_ARGS(dev, offs, val), |
37 | TP_STRUCT__entry( |
38 | DEV_ENTRY |
39 | __field(u32, offs) |
40 | __field(u8, val) |
41 | ), |
42 | TP_fast_assign( |
43 | DEV_ASSIGN; |
44 | __entry->offs = offs; |
45 | __entry->val = val; |
46 | ), |
47 | TP_printk("[%s] write io[%#x] = %#x)" , |
48 | __get_str(dev), __entry->offs, __entry->val) |
49 | ); |
50 | |
51 | TRACE_EVENT(iwlwifi_dev_iowrite32, |
52 | TP_PROTO(const struct device *dev, u32 offs, u32 val), |
53 | TP_ARGS(dev, offs, val), |
54 | TP_STRUCT__entry( |
55 | DEV_ENTRY |
56 | __field(u32, offs) |
57 | __field(u32, val) |
58 | ), |
59 | TP_fast_assign( |
60 | DEV_ASSIGN; |
61 | __entry->offs = offs; |
62 | __entry->val = val; |
63 | ), |
64 | TP_printk("[%s] write io[%#x] = %#x)" , |
65 | __get_str(dev), __entry->offs, __entry->val) |
66 | ); |
67 | |
68 | TRACE_EVENT(iwlwifi_dev_iowrite64, |
69 | TP_PROTO(const struct device *dev, u64 offs, u64 val), |
70 | TP_ARGS(dev, offs, val), |
71 | TP_STRUCT__entry( |
72 | DEV_ENTRY |
73 | __field(u64, offs) |
74 | __field(u64, val) |
75 | ), |
76 | TP_fast_assign( |
77 | DEV_ASSIGN; |
78 | __entry->offs = offs; |
79 | __entry->val = val; |
80 | ), |
81 | TP_printk("[%s] write io[%llu] = %llu)" , |
82 | __get_str(dev), __entry->offs, __entry->val) |
83 | ); |
84 | |
85 | TRACE_EVENT(iwlwifi_dev_iowrite_prph32, |
86 | TP_PROTO(const struct device *dev, u32 offs, u32 val), |
87 | TP_ARGS(dev, offs, val), |
88 | TP_STRUCT__entry( |
89 | DEV_ENTRY |
90 | __field(u32, offs) |
91 | __field(u32, val) |
92 | ), |
93 | TP_fast_assign( |
94 | DEV_ASSIGN; |
95 | __entry->offs = offs; |
96 | __entry->val = val; |
97 | ), |
98 | TP_printk("[%s] write PRPH[%#x] = %#x)" , |
99 | __get_str(dev), __entry->offs, __entry->val) |
100 | ); |
101 | |
102 | TRACE_EVENT(iwlwifi_dev_iowrite_prph64, |
103 | TP_PROTO(const struct device *dev, u64 offs, u64 val), |
104 | TP_ARGS(dev, offs, val), |
105 | TP_STRUCT__entry( |
106 | DEV_ENTRY |
107 | __field(u64, offs) |
108 | __field(u64, val) |
109 | ), |
110 | TP_fast_assign( |
111 | DEV_ASSIGN; |
112 | __entry->offs = offs; |
113 | __entry->val = val; |
114 | ), |
115 | TP_printk("[%s] write PRPH[%llu] = %llu)" , |
116 | __get_str(dev), __entry->offs, __entry->val) |
117 | ); |
118 | |
119 | TRACE_EVENT(iwlwifi_dev_ioread_prph32, |
120 | TP_PROTO(const struct device *dev, u32 offs, u32 val), |
121 | TP_ARGS(dev, offs, val), |
122 | TP_STRUCT__entry( |
123 | DEV_ENTRY |
124 | __field(u32, offs) |
125 | __field(u32, val) |
126 | ), |
127 | TP_fast_assign( |
128 | DEV_ASSIGN; |
129 | __entry->offs = offs; |
130 | __entry->val = val; |
131 | ), |
132 | TP_printk("[%s] read PRPH[%#x] = %#x" , |
133 | __get_str(dev), __entry->offs, __entry->val) |
134 | ); |
135 | |
136 | TRACE_EVENT(iwlwifi_dev_irq, |
137 | TP_PROTO(const struct device *dev), |
138 | TP_ARGS(dev), |
139 | TP_STRUCT__entry( |
140 | DEV_ENTRY |
141 | ), |
142 | TP_fast_assign( |
143 | DEV_ASSIGN; |
144 | ), |
145 | /* TP_printk("") doesn't compile */ |
146 | TP_printk("%d" , 0) |
147 | ); |
148 | |
149 | TRACE_EVENT(iwlwifi_dev_irq_msix, |
150 | TP_PROTO(const struct device *dev, struct msix_entry *msix_entry, |
151 | bool defirq, u32 inta_fh, u32 inta_hw), |
152 | TP_ARGS(dev, msix_entry, defirq, inta_fh, inta_hw), |
153 | TP_STRUCT__entry( |
154 | DEV_ENTRY |
155 | __field(u32, entry) |
156 | __field(u8, defirq) |
157 | __field(u32, inta_fh) |
158 | __field(u32, inta_hw) |
159 | ), |
160 | TP_fast_assign( |
161 | DEV_ASSIGN; |
162 | __entry->entry = msix_entry->entry; |
163 | __entry->defirq = defirq; |
164 | __entry->inta_fh = inta_fh; |
165 | __entry->inta_hw = inta_hw; |
166 | ), |
167 | TP_printk("entry:%d defirq:%d fh:0x%x, hw:0x%x" , |
168 | __entry->entry, __entry->defirq, |
169 | __entry->inta_fh, __entry->inta_hw) |
170 | ); |
171 | |
172 | TRACE_EVENT(iwlwifi_dev_ict_read, |
173 | TP_PROTO(const struct device *dev, u32 index, u32 value), |
174 | TP_ARGS(dev, index, value), |
175 | TP_STRUCT__entry( |
176 | DEV_ENTRY |
177 | __field(u32, index) |
178 | __field(u32, value) |
179 | ), |
180 | TP_fast_assign( |
181 | DEV_ASSIGN; |
182 | __entry->index = index; |
183 | __entry->value = value; |
184 | ), |
185 | TP_printk("[%s] read ict[%d] = %#.8x" , |
186 | __get_str(dev), __entry->index, __entry->value) |
187 | ); |
188 | #endif /* __IWLWIFI_DEVICE_TRACE_IO */ |
189 | |
190 | #undef TRACE_INCLUDE_PATH |
191 | #define TRACE_INCLUDE_PATH . |
192 | #undef TRACE_INCLUDE_FILE |
193 | #define TRACE_INCLUDE_FILE iwl-devtrace-io |
194 | #include <trace/define_trace.h> |
195 | |