1 #undef TRACE_SYSTEM 2 #define TRACE_SYSTEM asoc 3 4 #if !defined(_TRACE_ASOC_H) || defined(TRACE_HEADER_MULTI_READ) 5 #define _TRACE_ASOC_H 6 7 #include <linux/ktime.h> 8 #include <linux/tracepoint.h> 9 10 #define DAPM_DIRECT "(direct)" 11 12 struct snd_soc_jack; 13 struct snd_soc_codec; 14 struct snd_soc_platform; 15 struct snd_soc_card; 16 struct snd_soc_dapm_widget; 17 struct snd_soc_dapm_path; 18 19 /* 20 * Log register events 21 */ 22 DECLARE_EVENT_CLASS(snd_soc_reg, 23 24 TP_PROTO(struct snd_soc_codec *codec, unsigned int reg, 25 unsigned int val), 26 27 TP_ARGS(codec, reg, val), 28 29 TP_STRUCT__entry( 30 __string( name, codec->name ) 31 __field( int, id ) 32 __field( unsigned int, reg ) 33 __field( unsigned int, val ) 34 ), 35 36 TP_fast_assign( 37 __assign_str(name, codec->name); 38 __entry->id = codec->id; 39 __entry->reg = reg; 40 __entry->val = val; 41 ), 42 43 TP_printk("codec=%s.%d reg=%x val=%x", __get_str(name), 44 (int)__entry->id, (unsigned int)__entry->reg, 45 (unsigned int)__entry->val) 46 ); 47 48 DEFINE_EVENT(snd_soc_reg, snd_soc_reg_write, 49 50 TP_PROTO(struct snd_soc_codec *codec, unsigned int reg, 51 unsigned int val), 52 53 TP_ARGS(codec, reg, val) 54 55 ); 56 57 DEFINE_EVENT(snd_soc_reg, snd_soc_reg_read, 58 59 TP_PROTO(struct snd_soc_codec *codec, unsigned int reg, 60 unsigned int val), 61 62 TP_ARGS(codec, reg, val) 63 64 ); 65 66 DECLARE_EVENT_CLASS(snd_soc_preg, 67 68 TP_PROTO(struct snd_soc_platform *platform, unsigned int reg, 69 unsigned int val), 70 71 TP_ARGS(platform, reg, val), 72 73 TP_STRUCT__entry( 74 __string( name, platform->name ) 75 __field( int, id ) 76 __field( unsigned int, reg ) 77 __field( unsigned int, val ) 78 ), 79 80 TP_fast_assign( 81 __assign_str(name, platform->name); 82 __entry->id = platform->id; 83 __entry->reg = reg; 84 __entry->val = val; 85 ), 86 87 TP_printk("platform=%s.%d reg=%x val=%x", __get_str(name), 88 (int)__entry->id, (unsigned int)__entry->reg, 89 (unsigned int)__entry->val) 90 ); 91 92 DEFINE_EVENT(snd_soc_preg, snd_soc_preg_write, 93 94 TP_PROTO(struct snd_soc_platform *platform, unsigned int reg, 95 unsigned int val), 96 97 TP_ARGS(platform, reg, val) 98 99 ); 100 101 DEFINE_EVENT(snd_soc_preg, snd_soc_preg_read, 102 103 TP_PROTO(struct snd_soc_platform *platform, unsigned int reg, 104 unsigned int val), 105 106 TP_ARGS(platform, reg, val) 107 108 ); 109 110 DECLARE_EVENT_CLASS(snd_soc_card, 111 112 TP_PROTO(struct snd_soc_card *card, int val), 113 114 TP_ARGS(card, val), 115 116 TP_STRUCT__entry( 117 __string( name, card->name ) 118 __field( int, val ) 119 ), 120 121 TP_fast_assign( 122 __assign_str(name, card->name); 123 __entry->val = val; 124 ), 125 126 TP_printk("card=%s val=%d", __get_str(name), (int)__entry->val) 127 ); 128 129 DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_start, 130 131 TP_PROTO(struct snd_soc_card *card, int val), 132 133 TP_ARGS(card, val) 134 135 ); 136 137 DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_done, 138 139 TP_PROTO(struct snd_soc_card *card, int val), 140 141 TP_ARGS(card, val) 142 143 ); 144 145 DECLARE_EVENT_CLASS(snd_soc_dapm_basic, 146 147 TP_PROTO(struct snd_soc_card *card), 148 149 TP_ARGS(card), 150 151 TP_STRUCT__entry( 152 __string( name, card->name ) 153 ), 154 155 TP_fast_assign( 156 __assign_str(name, card->name); 157 ), 158 159 TP_printk("card=%s", __get_str(name)) 160 ); 161 162 DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_start, 163 164 TP_PROTO(struct snd_soc_card *card), 165 166 TP_ARGS(card) 167 168 ); 169 170 DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_done, 171 172 TP_PROTO(struct snd_soc_card *card), 173 174 TP_ARGS(card) 175 176 ); 177 178 DECLARE_EVENT_CLASS(snd_soc_dapm_widget, 179 180 TP_PROTO(struct snd_soc_dapm_widget *w, int val), 181 182 TP_ARGS(w, val), 183 184 TP_STRUCT__entry( 185 __string( name, w->name ) 186 __field( int, val ) 187 ), 188 189 TP_fast_assign( 190 __assign_str(name, w->name); 191 __entry->val = val; 192 ), 193 194 TP_printk("widget=%s val=%d", __get_str(name), 195 (int)__entry->val) 196 ); 197 198 DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_power, 199 200 TP_PROTO(struct snd_soc_dapm_widget *w, int val), 201 202 TP_ARGS(w, val) 203 204 ); 205 206 DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_start, 207 208 TP_PROTO(struct snd_soc_dapm_widget *w, int val), 209 210 TP_ARGS(w, val) 211 212 ); 213 214 DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_done, 215 216 TP_PROTO(struct snd_soc_dapm_widget *w, int val), 217 218 TP_ARGS(w, val) 219 220 ); 221 222 TRACE_EVENT(snd_soc_dapm_walk_done, 223 224 TP_PROTO(struct snd_soc_card *card), 225 226 TP_ARGS(card), 227 228 TP_STRUCT__entry( 229 __string( name, card->name ) 230 __field( int, power_checks ) 231 __field( int, path_checks ) 232 __field( int, neighbour_checks ) 233 ), 234 235 TP_fast_assign( 236 __assign_str(name, card->name); 237 __entry->power_checks = card->dapm_stats.power_checks; 238 __entry->path_checks = card->dapm_stats.path_checks; 239 __entry->neighbour_checks = card->dapm_stats.neighbour_checks; 240 ), 241 242 TP_printk("%s: checks %d power, %d path, %d neighbour", 243 __get_str(name), (int)__entry->power_checks, 244 (int)__entry->path_checks, (int)__entry->neighbour_checks) 245 ); 246 247 TRACE_EVENT(snd_soc_dapm_output_path, 248 249 TP_PROTO(struct snd_soc_dapm_widget *widget, 250 struct snd_soc_dapm_path *path), 251 252 TP_ARGS(widget, path), 253 254 TP_STRUCT__entry( 255 __string( wname, widget->name ) 256 __string( pname, path->name ? path->name : DAPM_DIRECT) 257 __string( psname, path->sink->name ) 258 __field( int, path_sink ) 259 __field( int, path_connect ) 260 ), 261 262 TP_fast_assign( 263 __assign_str(wname, widget->name); 264 __assign_str(pname, path->name ? path->name : DAPM_DIRECT); 265 __assign_str(psname, path->sink->name); 266 __entry->path_connect = path->connect; 267 __entry->path_sink = (long)path->sink; 268 ), 269 270 TP_printk("%c%s -> %s -> %s\n", 271 (int) __entry->path_sink && 272 (int) __entry->path_connect ? '*' : ' ', 273 __get_str(wname), __get_str(pname), __get_str(psname)) 274 ); 275 276 TRACE_EVENT(snd_soc_dapm_input_path, 277 278 TP_PROTO(struct snd_soc_dapm_widget *widget, 279 struct snd_soc_dapm_path *path), 280 281 TP_ARGS(widget, path), 282 283 TP_STRUCT__entry( 284 __string( wname, widget->name ) 285 __string( pname, path->name ? path->name : DAPM_DIRECT) 286 __string( psname, path->source->name ) 287 __field( int, path_source ) 288 __field( int, path_connect ) 289 ), 290 291 TP_fast_assign( 292 __assign_str(wname, widget->name); 293 __assign_str(pname, path->name ? path->name : DAPM_DIRECT); 294 __assign_str(psname, path->source->name); 295 __entry->path_connect = path->connect; 296 __entry->path_source = (long)path->source; 297 ), 298 299 TP_printk("%c%s <- %s <- %s\n", 300 (int) __entry->path_source && 301 (int) __entry->path_connect ? '*' : ' ', 302 __get_str(wname), __get_str(pname), __get_str(psname)) 303 ); 304 305 TRACE_EVENT(snd_soc_dapm_connected, 306 307 TP_PROTO(int paths, int stream), 308 309 TP_ARGS(paths, stream), 310 311 TP_STRUCT__entry( 312 __field( int, paths ) 313 __field( int, stream ) 314 ), 315 316 TP_fast_assign( 317 __entry->paths = paths; 318 __entry->stream = stream; 319 ), 320 321 TP_printk("%s: found %d paths\n", 322 __entry->stream ? "capture" : "playback", __entry->paths) 323 ); 324 325 TRACE_EVENT(snd_soc_jack_irq, 326 327 TP_PROTO(const char *name), 328 329 TP_ARGS(name), 330 331 TP_STRUCT__entry( 332 __string( name, name ) 333 ), 334 335 TP_fast_assign( 336 __assign_str(name, name); 337 ), 338 339 TP_printk("%s", __get_str(name)) 340 ); 341 342 TRACE_EVENT(snd_soc_jack_report, 343 344 TP_PROTO(struct snd_soc_jack *jack, int mask, int val), 345 346 TP_ARGS(jack, mask, val), 347 348 TP_STRUCT__entry( 349 __string( name, jack->jack->name ) 350 __field( int, mask ) 351 __field( int, val ) 352 ), 353 354 TP_fast_assign( 355 __assign_str(name, jack->jack->name); 356 __entry->mask = mask; 357 __entry->val = val; 358 ), 359 360 TP_printk("jack=%s %x/%x", __get_str(name), (int)__entry->val, 361 (int)__entry->mask) 362 ); 363 364 TRACE_EVENT(snd_soc_jack_notify, 365 366 TP_PROTO(struct snd_soc_jack *jack, int val), 367 368 TP_ARGS(jack, val), 369 370 TP_STRUCT__entry( 371 __string( name, jack->jack->name ) 372 __field( int, val ) 373 ), 374 375 TP_fast_assign( 376 __assign_str(name, jack->jack->name); 377 __entry->val = val; 378 ), 379 380 TP_printk("jack=%s %x", __get_str(name), (int)__entry->val) 381 ); 382 383 TRACE_EVENT(snd_soc_cache_sync, 384 385 TP_PROTO(struct snd_soc_codec *codec, const char *type, 386 const char *status), 387 388 TP_ARGS(codec, type, status), 389 390 TP_STRUCT__entry( 391 __string( name, codec->name ) 392 __string( status, status ) 393 __string( type, type ) 394 __field( int, id ) 395 ), 396 397 TP_fast_assign( 398 __assign_str(name, codec->name); 399 __assign_str(status, status); 400 __assign_str(type, type); 401 __entry->id = codec->id; 402 ), 403 404 TP_printk("codec=%s.%d type=%s status=%s", __get_str(name), 405 (int)__entry->id, __get_str(type), __get_str(status)) 406 ); 407 408 #endif /* _TRACE_ASOC_H */ 409 410 /* This part must be outside protection */ 411 #include <trace/define_trace.h> 412