diff options
author | Eliot Blennerhassett <eblennerhassett@audioscience.com> | 2011-02-09 23:25:56 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2011-02-10 12:21:36 -0500 |
commit | f0dcad41ac2956851e6b2d31762d1edc61ede949 (patch) | |
tree | 56eabdc12756e6d19b58f7b0ad43b2a13a10df4f /sound/pci/asihpi/hpidebug.h | |
parent | 0a1602c02be606b72003104dbf5f0f8293c42588 (diff) |
ALSA: asihpi - Simplify debug logging.
Log HPI messages and responses in consistent numeric format,
which can be post-processed to get strings.
Signed-off-by: Eliot Blennerhassett <eblennerhassett@audioscience.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/asihpi/hpidebug.h')
-rw-r--r-- | sound/pci/asihpi/hpidebug.h | 323 |
1 files changed, 20 insertions, 303 deletions
diff --git a/sound/pci/asihpi/hpidebug.h b/sound/pci/asihpi/hpidebug.h index a2f0952a99f0..632d7d0840c6 100644 --- a/sound/pci/asihpi/hpidebug.h +++ b/sound/pci/asihpi/hpidebug.h | |||
@@ -37,7 +37,7 @@ enum { HPI_DEBUG_LEVEL_ERROR = 0, /* always log errors */ | |||
37 | #define HPI_DEBUG_LEVEL_DEFAULT HPI_DEBUG_LEVEL_NOTICE | 37 | #define HPI_DEBUG_LEVEL_DEFAULT HPI_DEBUG_LEVEL_NOTICE |
38 | 38 | ||
39 | /* an OS can define an extra flag string that is appended to | 39 | /* an OS can define an extra flag string that is appended to |
40 | the start of each message, eg see hpios_linux.h */ | 40 | the start of each message, eg see linux kernel hpios.h */ |
41 | 41 | ||
42 | #ifdef SOURCEFILE_NAME | 42 | #ifdef SOURCEFILE_NAME |
43 | #define FILE_LINE SOURCEFILE_NAME ":" __stringify(__LINE__) " " | 43 | #define FILE_LINE SOURCEFILE_NAME ":" __stringify(__LINE__) " " |
@@ -45,18 +45,11 @@ enum { HPI_DEBUG_LEVEL_ERROR = 0, /* always log errors */ | |||
45 | #define FILE_LINE __FILE__ ":" __stringify(__LINE__) " " | 45 | #define FILE_LINE __FILE__ ":" __stringify(__LINE__) " " |
46 | #endif | 46 | #endif |
47 | 47 | ||
48 | #if defined(HPI_DEBUG) && defined(_WINDOWS) | ||
49 | #define HPI_DEBUGBREAK() debug_break() | ||
50 | #else | ||
51 | #define HPI_DEBUGBREAK() | ||
52 | #endif | ||
53 | |||
54 | #define HPI_DEBUG_ASSERT(expression) \ | 48 | #define HPI_DEBUG_ASSERT(expression) \ |
55 | do { \ | 49 | do { \ |
56 | if (!(expression)) {\ | 50 | if (!(expression)) { \ |
57 | printk(KERN_ERR FILE_LINE\ | 51 | printk(KERN_ERR FILE_LINE \ |
58 | "ASSERT " __stringify(expression));\ | 52 | "ASSERT " __stringify(expression)); \ |
59 | HPI_DEBUGBREAK();\ | ||
60 | } \ | 53 | } \ |
61 | } while (0) | 54 | } while (0) |
62 | 55 | ||
@@ -78,28 +71,27 @@ void hpi_debug_message(struct hpi_message *phm, char *sz_fileline); | |||
78 | 71 | ||
79 | void hpi_debug_data(u16 *pdata, u32 len); | 72 | void hpi_debug_data(u16 *pdata, u32 len); |
80 | 73 | ||
81 | #define HPI_DEBUG_DATA(pdata, len) \ | 74 | #define HPI_DEBUG_DATA(pdata, len) \ |
82 | do { \ | 75 | do { \ |
83 | if (hpi_debug_level >= HPI_DEBUG_LEVEL_VERBOSE) \ | 76 | if (hpi_debug_level >= HPI_DEBUG_LEVEL_VERBOSE) \ |
84 | hpi_debug_data(pdata, len); \ | 77 | hpi_debug_data(pdata, len); \ |
85 | } while (0) | 78 | } while (0) |
86 | 79 | ||
87 | #define HPI_DEBUG_MESSAGE(level, phm) \ | 80 | #define HPI_DEBUG_MESSAGE(level, phm) \ |
88 | do { \ | 81 | do { \ |
89 | if (hpi_debug_level >= HPI_DEBUG_LEVEL_##level) { \ | 82 | if (hpi_debug_level >= HPI_DEBUG_LEVEL_##level) { \ |
90 | hpi_debug_message(phm,HPI_DEBUG_FLAG_##level \ | 83 | hpi_debug_message(phm,HPI_DEBUG_FLAG_##level \ |
91 | FILE_LINE __stringify(level));\ | 84 | FILE_LINE __stringify(level)); \ |
92 | } \ | 85 | } \ |
93 | } while (0) | 86 | } while (0) |
94 | 87 | ||
95 | #define HPI_DEBUG_RESPONSE(phr) \ | 88 | #define HPI_DEBUG_RESPONSE(phr) \ |
96 | do { \ | 89 | do { \ |
97 | if ((hpi_debug_level >= HPI_DEBUG_LEVEL_DEBUG) && (phr->error))\ | 90 | if (((hpi_debug_level >= HPI_DEBUG_LEVEL_DEBUG) && (phr->error)) ||\ |
98 | HPI_DEBUG_LOG(ERROR, \ | 91 | (hpi_debug_level >= HPI_DEBUG_LEVEL_VERBOSE)) \ |
99 | "HPI response - error# %d\n", \ | 92 | printk(KERN_DEBUG\ |
100 | phr->error); \ | 93 | "HPI_RES%d,%d,%d\n", \ |
101 | else if (hpi_debug_level >= HPI_DEBUG_LEVEL_VERBOSE) \ | 94 | phr->version, phr->error, phr->specific_error); \ |
102 | HPI_DEBUG_LOG(VERBOSE, "HPI response OK\n");\ | ||
103 | } while (0) | 95 | } while (0) |
104 | 96 | ||
105 | #ifndef compile_time_assert | 97 | #ifndef compile_time_assert |
@@ -107,279 +99,4 @@ void hpi_debug_data(u16 *pdata, u32 len); | |||
107 | typedef char msg[(cond) ? 1 : -1] | 99 | typedef char msg[(cond) ? 1 : -1] |
108 | #endif | 100 | #endif |
109 | 101 | ||
110 | /* check that size is exactly some number */ | 102 | #endif /* _HPIDEBUG_H_ */ |
111 | #define function_count_check(sym, size) \ | ||
112 | compile_time_assert((sym##_FUNCTION_COUNT) == (size),\ | ||
113 | strings_match_defs_##sym) | ||
114 | |||
115 | /* These strings should be generated using a macro which defines | ||
116 | the corresponding symbol values. */ | ||
117 | #define HPI_OBJ_STRINGS \ | ||
118 | { \ | ||
119 | "HPI_OBJ_SUBSYSTEM", \ | ||
120 | "HPI_OBJ_ADAPTER", \ | ||
121 | "HPI_OBJ_OSTREAM", \ | ||
122 | "HPI_OBJ_ISTREAM", \ | ||
123 | "HPI_OBJ_MIXER", \ | ||
124 | "HPI_OBJ_NODE", \ | ||
125 | "HPI_OBJ_CONTROL", \ | ||
126 | "HPI_OBJ_NVMEMORY", \ | ||
127 | "HPI_OBJ_DIGITALIO", \ | ||
128 | "HPI_OBJ_WATCHDOG", \ | ||
129 | "HPI_OBJ_CLOCK", \ | ||
130 | "HPI_OBJ_PROFILE", \ | ||
131 | "HPI_OBJ_CONTROLEX" \ | ||
132 | } | ||
133 | |||
134 | #define HPI_SUBSYS_STRINGS \ | ||
135 | { \ | ||
136 | "HPI_SUBSYS_OPEN", \ | ||
137 | "HPI_SUBSYS_GET_VERSION", \ | ||
138 | "HPI_SUBSYS_GET_INFO", \ | ||
139 | "HPI_SUBSYS_FIND_ADAPTERS", \ | ||
140 | "HPI_SUBSYS_CREATE_ADAPTER",\ | ||
141 | "HPI_SUBSYS_CLOSE", \ | ||
142 | "HPI_SUBSYS_DELETE_ADAPTER", \ | ||
143 | "HPI_SUBSYS_DRIVER_LOAD", \ | ||
144 | "HPI_SUBSYS_DRIVER_UNLOAD", \ | ||
145 | "HPI_SUBSYS_READ_PORT_8", \ | ||
146 | "HPI_SUBSYS_WRITE_PORT_8", \ | ||
147 | "HPI_SUBSYS_GET_NUM_ADAPTERS",\ | ||
148 | "HPI_SUBSYS_GET_ADAPTER", \ | ||
149 | "HPI_SUBSYS_SET_NETWORK_INTERFACE"\ | ||
150 | } | ||
151 | function_count_check(HPI_SUBSYS, 14); | ||
152 | |||
153 | #define HPI_ADAPTER_STRINGS \ | ||
154 | { \ | ||
155 | "HPI_ADAPTER_OPEN", \ | ||
156 | "HPI_ADAPTER_CLOSE", \ | ||
157 | "HPI_ADAPTER_GET_INFO", \ | ||
158 | "HPI_ADAPTER_GET_ASSERT", \ | ||
159 | "HPI_ADAPTER_TEST_ASSERT", \ | ||
160 | "HPI_ADAPTER_SET_MODE", \ | ||
161 | "HPI_ADAPTER_GET_MODE", \ | ||
162 | "HPI_ADAPTER_ENABLE_CAPABILITY",\ | ||
163 | "HPI_ADAPTER_SELFTEST", \ | ||
164 | "HPI_ADAPTER_FIND_OBJECT", \ | ||
165 | "HPI_ADAPTER_QUERY_FLASH", \ | ||
166 | "HPI_ADAPTER_START_FLASH", \ | ||
167 | "HPI_ADAPTER_PROGRAM_FLASH", \ | ||
168 | "HPI_ADAPTER_SET_PROPERTY", \ | ||
169 | "HPI_ADAPTER_GET_PROPERTY", \ | ||
170 | "HPI_ADAPTER_ENUM_PROPERTY", \ | ||
171 | "HPI_ADAPTER_MODULE_INFO", \ | ||
172 | "HPI_ADAPTER_DEBUG_READ" \ | ||
173 | } | ||
174 | |||
175 | function_count_check(HPI_ADAPTER, 18); | ||
176 | |||
177 | #define HPI_OSTREAM_STRINGS \ | ||
178 | { \ | ||
179 | "HPI_OSTREAM_OPEN", \ | ||
180 | "HPI_OSTREAM_CLOSE", \ | ||
181 | "HPI_OSTREAM_WRITE", \ | ||
182 | "HPI_OSTREAM_START", \ | ||
183 | "HPI_OSTREAM_STOP", \ | ||
184 | "HPI_OSTREAM_RESET", \ | ||
185 | "HPI_OSTREAM_GET_INFO", \ | ||
186 | "HPI_OSTREAM_QUERY_FORMAT", \ | ||
187 | "HPI_OSTREAM_DATA", \ | ||
188 | "HPI_OSTREAM_SET_VELOCITY", \ | ||
189 | "HPI_OSTREAM_SET_PUNCHINOUT", \ | ||
190 | "HPI_OSTREAM_SINEGEN", \ | ||
191 | "HPI_OSTREAM_ANC_RESET", \ | ||
192 | "HPI_OSTREAM_ANC_GET_INFO", \ | ||
193 | "HPI_OSTREAM_ANC_READ", \ | ||
194 | "HPI_OSTREAM_SET_TIMESCALE",\ | ||
195 | "HPI_OSTREAM_SET_FORMAT", \ | ||
196 | "HPI_OSTREAM_HOSTBUFFER_ALLOC", \ | ||
197 | "HPI_OSTREAM_HOSTBUFFER_FREE", \ | ||
198 | "HPI_OSTREAM_GROUP_ADD",\ | ||
199 | "HPI_OSTREAM_GROUP_GETMAP", \ | ||
200 | "HPI_OSTREAM_GROUP_RESET", \ | ||
201 | "HPI_OSTREAM_HOSTBUFFER_GET_INFO", \ | ||
202 | "HPI_OSTREAM_WAIT_START", \ | ||
203 | } | ||
204 | function_count_check(HPI_OSTREAM, 24); | ||
205 | |||
206 | #define HPI_ISTREAM_STRINGS \ | ||
207 | { \ | ||
208 | "HPI_ISTREAM_OPEN", \ | ||
209 | "HPI_ISTREAM_CLOSE", \ | ||
210 | "HPI_ISTREAM_SET_FORMAT", \ | ||
211 | "HPI_ISTREAM_READ", \ | ||
212 | "HPI_ISTREAM_START", \ | ||
213 | "HPI_ISTREAM_STOP", \ | ||
214 | "HPI_ISTREAM_RESET", \ | ||
215 | "HPI_ISTREAM_GET_INFO", \ | ||
216 | "HPI_ISTREAM_QUERY_FORMAT", \ | ||
217 | "HPI_ISTREAM_ANC_RESET", \ | ||
218 | "HPI_ISTREAM_ANC_GET_INFO", \ | ||
219 | "HPI_ISTREAM_ANC_WRITE", \ | ||
220 | "HPI_ISTREAM_HOSTBUFFER_ALLOC",\ | ||
221 | "HPI_ISTREAM_HOSTBUFFER_FREE", \ | ||
222 | "HPI_ISTREAM_GROUP_ADD", \ | ||
223 | "HPI_ISTREAM_GROUP_GETMAP", \ | ||
224 | "HPI_ISTREAM_GROUP_RESET", \ | ||
225 | "HPI_ISTREAM_HOSTBUFFER_GET_INFO", \ | ||
226 | "HPI_ISTREAM_WAIT_START", \ | ||
227 | } | ||
228 | function_count_check(HPI_ISTREAM, 19); | ||
229 | |||
230 | #define HPI_MIXER_STRINGS \ | ||
231 | { \ | ||
232 | "HPI_MIXER_OPEN", \ | ||
233 | "HPI_MIXER_CLOSE", \ | ||
234 | "HPI_MIXER_GET_INFO", \ | ||
235 | "HPI_MIXER_GET_NODE_INFO", \ | ||
236 | "HPI_MIXER_GET_CONTROL", \ | ||
237 | "HPI_MIXER_SET_CONNECTION", \ | ||
238 | "HPI_MIXER_GET_CONNECTIONS", \ | ||
239 | "HPI_MIXER_GET_CONTROL_BY_INDEX", \ | ||
240 | "HPI_MIXER_GET_CONTROL_ARRAY_BY_INDEX", \ | ||
241 | "HPI_MIXER_GET_CONTROL_MULTIPLE_VALUES", \ | ||
242 | "HPI_MIXER_STORE", \ | ||
243 | } | ||
244 | function_count_check(HPI_MIXER, 11); | ||
245 | |||
246 | #define HPI_CONTROL_STRINGS \ | ||
247 | { \ | ||
248 | "HPI_CONTROL_GET_INFO", \ | ||
249 | "HPI_CONTROL_GET_STATE", \ | ||
250 | "HPI_CONTROL_SET_STATE" \ | ||
251 | } | ||
252 | function_count_check(HPI_CONTROL, 3); | ||
253 | |||
254 | #define HPI_NVMEMORY_STRINGS \ | ||
255 | { \ | ||
256 | "HPI_NVMEMORY_OPEN", \ | ||
257 | "HPI_NVMEMORY_READ_BYTE", \ | ||
258 | "HPI_NVMEMORY_WRITE_BYTE" \ | ||
259 | } | ||
260 | function_count_check(HPI_NVMEMORY, 3); | ||
261 | |||
262 | #define HPI_DIGITALIO_STRINGS \ | ||
263 | { \ | ||
264 | "HPI_GPIO_OPEN", \ | ||
265 | "HPI_GPIO_READ_BIT", \ | ||
266 | "HPI_GPIO_WRITE_BIT", \ | ||
267 | "HPI_GPIO_READ_ALL", \ | ||
268 | "HPI_GPIO_WRITE_STATUS"\ | ||
269 | } | ||
270 | function_count_check(HPI_GPIO, 5); | ||
271 | |||
272 | #define HPI_WATCHDOG_STRINGS \ | ||
273 | { \ | ||
274 | "HPI_WATCHDOG_OPEN", \ | ||
275 | "HPI_WATCHDOG_SET_TIME", \ | ||
276 | "HPI_WATCHDOG_PING" \ | ||
277 | } | ||
278 | |||
279 | #define HPI_CLOCK_STRINGS \ | ||
280 | { \ | ||
281 | "HPI_CLOCK_OPEN", \ | ||
282 | "HPI_CLOCK_SET_TIME", \ | ||
283 | "HPI_CLOCK_GET_TIME" \ | ||
284 | } | ||
285 | |||
286 | #define HPI_PROFILE_STRINGS \ | ||
287 | { \ | ||
288 | "HPI_PROFILE_OPEN_ALL", \ | ||
289 | "HPI_PROFILE_START_ALL", \ | ||
290 | "HPI_PROFILE_STOP_ALL", \ | ||
291 | "HPI_PROFILE_GET", \ | ||
292 | "HPI_PROFILE_GET_IDLECOUNT", \ | ||
293 | "HPI_PROFILE_GET_NAME", \ | ||
294 | "HPI_PROFILE_GET_UTILIZATION" \ | ||
295 | } | ||
296 | function_count_check(HPI_PROFILE, 7); | ||
297 | |||
298 | #define HPI_ASYNCEVENT_STRINGS \ | ||
299 | { \ | ||
300 | "HPI_ASYNCEVENT_OPEN",\ | ||
301 | "HPI_ASYNCEVENT_CLOSE ",\ | ||
302 | "HPI_ASYNCEVENT_WAIT",\ | ||
303 | "HPI_ASYNCEVENT_GETCOUNT",\ | ||
304 | "HPI_ASYNCEVENT_GET",\ | ||
305 | "HPI_ASYNCEVENT_SENDEVENTS"\ | ||
306 | } | ||
307 | function_count_check(HPI_ASYNCEVENT, 6); | ||
308 | |||
309 | #define HPI_CONTROL_TYPE_STRINGS \ | ||
310 | { \ | ||
311 | "null control", \ | ||
312 | "HPI_CONTROL_CONNECTION", \ | ||
313 | "HPI_CONTROL_VOLUME", \ | ||
314 | "HPI_CONTROL_METER", \ | ||
315 | "HPI_CONTROL_MUTE", \ | ||
316 | "HPI_CONTROL_MULTIPLEXER", \ | ||
317 | "HPI_CONTROL_AESEBU_TRANSMITTER", \ | ||
318 | "HPI_CONTROL_AESEBU_RECEIVER", \ | ||
319 | "HPI_CONTROL_LEVEL", \ | ||
320 | "HPI_CONTROL_TUNER", \ | ||
321 | "HPI_CONTROL_ONOFFSWITCH", \ | ||
322 | "HPI_CONTROL_VOX", \ | ||
323 | "HPI_CONTROL_AES18_TRANSMITTER", \ | ||
324 | "HPI_CONTROL_AES18_RECEIVER", \ | ||
325 | "HPI_CONTROL_AES18_BLOCKGENERATOR", \ | ||
326 | "HPI_CONTROL_CHANNEL_MODE", \ | ||
327 | "HPI_CONTROL_BITSTREAM", \ | ||
328 | "HPI_CONTROL_SAMPLECLOCK", \ | ||
329 | "HPI_CONTROL_MICROPHONE", \ | ||
330 | "HPI_CONTROL_PARAMETRIC_EQ", \ | ||
331 | "HPI_CONTROL_COMPANDER", \ | ||
332 | "HPI_CONTROL_COBRANET", \ | ||
333 | "HPI_CONTROL_TONE_DETECT", \ | ||
334 | "HPI_CONTROL_SILENCE_DETECT", \ | ||
335 | "HPI_CONTROL_PAD", \ | ||
336 | "HPI_CONTROL_SRC" ,\ | ||
337 | "HPI_CONTROL_UNIVERSAL" \ | ||
338 | } | ||
339 | |||
340 | compile_time_assert((HPI_CONTROL_LAST_INDEX + 1 == 27), | ||
341 | controltype_strings_match_defs); | ||
342 | |||
343 | #define HPI_SOURCENODE_STRINGS \ | ||
344 | { \ | ||
345 | "no source", \ | ||
346 | "HPI_SOURCENODE_OSTREAM", \ | ||
347 | "HPI_SOURCENODE_LINEIN", \ | ||
348 | "HPI_SOURCENODE_AESEBU_IN", \ | ||
349 | "HPI_SOURCENODE_TUNER", \ | ||
350 | "HPI_SOURCENODE_RF", \ | ||
351 | "HPI_SOURCENODE_CLOCK_SOURCE", \ | ||
352 | "HPI_SOURCENODE_RAW_BITSTREAM", \ | ||
353 | "HPI_SOURCENODE_MICROPHONE", \ | ||
354 | "HPI_SOURCENODE_COBRANET", \ | ||
355 | "HPI_SOURCENODE_ANALOG", \ | ||
356 | "HPI_SOURCENODE_ADAPTER" \ | ||
357 | } | ||
358 | |||
359 | compile_time_assert((HPI_SOURCENODE_LAST_INDEX - HPI_SOURCENODE_NONE + 1) == | ||
360 | (12), sourcenode_strings_match_defs); | ||
361 | |||
362 | #define HPI_DESTNODE_STRINGS \ | ||
363 | { \ | ||
364 | "no destination", \ | ||
365 | "HPI_DESTNODE_ISTREAM", \ | ||
366 | "HPI_DESTNODE_LINEOUT", \ | ||
367 | "HPI_DESTNODE_AESEBU_OUT", \ | ||
368 | "HPI_DESTNODE_RF", \ | ||
369 | "HPI_DESTNODE_SPEAKER", \ | ||
370 | "HPI_DESTNODE_COBRANET", \ | ||
371 | "HPI_DESTNODE_ANALOG" \ | ||
372 | } | ||
373 | compile_time_assert((HPI_DESTNODE_LAST_INDEX - HPI_DESTNODE_NONE + 1) == (8), | ||
374 | destnode_strings_match_defs); | ||
375 | |||
376 | #define HPI_CONTROL_CHANNEL_MODE_STRINGS \ | ||
377 | { \ | ||
378 | "XXX HPI_CHANNEL_MODE_ERROR XXX", \ | ||
379 | "HPI_CHANNEL_MODE_NORMAL", \ | ||
380 | "HPI_CHANNEL_MODE_SWAP", \ | ||
381 | "HPI_CHANNEL_MODE_LEFT_ONLY", \ | ||
382 | "HPI_CHANNEL_MODE_RIGHT_ONLY" \ | ||
383 | } | ||
384 | |||
385 | #endif /* _HPIDEBUG_H */ | ||