linux/include/trace/events/hswadsp.h
<<
>>
Prefs
   1#undef TRACE_SYSTEM
   2#define TRACE_SYSTEM hswadsp
   3
   4#if !defined(_TRACE_HSWADSP_H) || defined(TRACE_HEADER_MULTI_READ)
   5#define _TRACE_HSWADSP_H
   6
   7#include <linux/types.h>
   8#include <linux/ktime.h>
   9#include <linux/tracepoint.h>
  10
  11struct sst_hsw;
  12struct sst_hsw_stream;
  13struct sst_hsw_ipc_stream_free_req;
  14struct sst_hsw_ipc_volume_req;
  15struct sst_hsw_ipc_stream_alloc_req;
  16struct sst_hsw_audio_data_format_ipc;
  17struct sst_hsw_ipc_stream_info_reply;
  18struct sst_hsw_ipc_device_config_req;
  19
  20DECLARE_EVENT_CLASS(sst_irq,
  21
  22        TP_PROTO(uint32_t status, uint32_t mask),
  23
  24        TP_ARGS(status, mask),
  25
  26        TP_STRUCT__entry(
  27                __field(        unsigned int,   status          )
  28                __field(        unsigned int,   mask            )
  29        ),
  30
  31        TP_fast_assign(
  32                __entry->status = status;
  33                __entry->mask = mask;
  34        ),
  35
  36        TP_printk("status 0x%8.8x mask 0x%8.8x",
  37                (unsigned int)__entry->status, (unsigned int)__entry->mask)
  38);
  39
  40DEFINE_EVENT(sst_irq, sst_irq_busy,
  41
  42        TP_PROTO(unsigned int status, unsigned int mask),
  43
  44        TP_ARGS(status, mask)
  45
  46);
  47
  48DEFINE_EVENT(sst_irq, sst_irq_done,
  49
  50        TP_PROTO(unsigned int status, unsigned int mask),
  51
  52        TP_ARGS(status, mask)
  53
  54);
  55
  56DECLARE_EVENT_CLASS(ipc,
  57
  58        TP_PROTO(const char *name, int val),
  59
  60        TP_ARGS(name, val),
  61
  62        TP_STRUCT__entry(
  63                __string(       name,   name            )
  64                __field(        unsigned int,   val     )
  65        ),
  66
  67        TP_fast_assign(
  68                __assign_str(name, name);
  69                __entry->val = val;
  70        ),
  71
  72        TP_printk("%s 0x%8.8x", __get_str(name), (unsigned int)__entry->val)
  73
  74);
  75
  76DEFINE_EVENT(ipc, ipc_request,
  77
  78        TP_PROTO(const char *name, int val),
  79
  80        TP_ARGS(name, val)
  81
  82);
  83
  84DEFINE_EVENT(ipc, ipc_reply,
  85
  86        TP_PROTO(const char *name, int val),
  87
  88        TP_ARGS(name, val)
  89
  90);
  91
  92DEFINE_EVENT(ipc, ipc_pending_reply,
  93
  94        TP_PROTO(const char *name, int val),
  95
  96        TP_ARGS(name, val)
  97
  98);
  99
 100DEFINE_EVENT(ipc, ipc_notification,
 101
 102        TP_PROTO(const char *name, int val),
 103
 104        TP_ARGS(name, val)
 105
 106);
 107
 108DEFINE_EVENT(ipc, ipc_error,
 109
 110        TP_PROTO(const char *name, int val),
 111
 112        TP_ARGS(name, val)
 113
 114);
 115
 116DECLARE_EVENT_CLASS(stream_position,
 117
 118        TP_PROTO(unsigned int id, unsigned int pos),
 119
 120        TP_ARGS(id, pos),
 121
 122        TP_STRUCT__entry(
 123                __field(        unsigned int,   id              )
 124                __field(        unsigned int,   pos             )
 125        ),
 126
 127        TP_fast_assign(
 128                __entry->id = id;
 129                __entry->pos = pos;
 130        ),
 131
 132        TP_printk("id %d position 0x%x",
 133                (unsigned int)__entry->id, (unsigned int)__entry->pos)
 134);
 135
 136DEFINE_EVENT(stream_position, stream_read_position,
 137
 138        TP_PROTO(unsigned int id, unsigned int pos),
 139
 140        TP_ARGS(id, pos)
 141
 142);
 143
 144DEFINE_EVENT(stream_position, stream_write_position,
 145
 146        TP_PROTO(unsigned int id, unsigned int pos),
 147
 148        TP_ARGS(id, pos)
 149
 150);
 151
 152TRACE_EVENT(hsw_stream_buffer,
 153
 154        TP_PROTO(struct sst_hsw_stream *stream),
 155
 156        TP_ARGS(stream),
 157
 158        TP_STRUCT__entry(
 159                __field(        int,    id      )
 160                __field(        int,    pt_addr )
 161                __field(        int,    num_pages       )
 162                __field(        int,    ring_size       )
 163                __field(        int,    ring_offset     )
 164                __field(        int,    first_pfn       )
 165        ),
 166
 167        TP_fast_assign(
 168                __entry->id = stream->host_id;
 169                __entry->pt_addr = stream->request.ringinfo.ring_pt_address;
 170                __entry->num_pages = stream->request.ringinfo.num_pages;
 171                __entry->ring_size = stream->request.ringinfo.ring_size;
 172                __entry->ring_offset = stream->request.ringinfo.ring_offset;
 173                __entry->first_pfn = stream->request.ringinfo.ring_first_pfn;
 174        ),
 175
 176        TP_printk("stream %d ring addr 0x%x pages %d size 0x%x offset 0x%x PFN 0x%x",
 177                (int) __entry->id,  (int)__entry->pt_addr,
 178                (int)__entry->num_pages, (int)__entry->ring_size,
 179                (int)__entry->ring_offset, (int)__entry->first_pfn)
 180);
 181
 182TRACE_EVENT(hsw_stream_alloc_reply,
 183
 184        TP_PROTO(struct sst_hsw_stream *stream),
 185
 186        TP_ARGS(stream),
 187
 188        TP_STRUCT__entry(
 189                __field(        int,    id      )
 190                __field(        int,    stream_id       )
 191                __field(        int,    mixer_id        )
 192                __field(        int,    peak0   )
 193                __field(        int,    peak1   )
 194                __field(        int,    vol0    )
 195                __field(        int,    vol1    )
 196        ),
 197
 198        TP_fast_assign(
 199                __entry->id = stream->host_id;
 200                __entry->stream_id = stream->reply.stream_hw_id;
 201                __entry->mixer_id = stream->reply.mixer_hw_id;
 202                __entry->peak0 = stream->reply.peak_meter_register_address[0];
 203                __entry->peak1 = stream->reply.peak_meter_register_address[1];
 204                __entry->vol0 = stream->reply.volume_register_address[0];
 205                __entry->vol1 = stream->reply.volume_register_address[1];
 206        ),
 207
 208        TP_printk("stream %d hw id %d mixer %d peak 0x%x:0x%x vol 0x%x,0x%x",
 209                (int) __entry->id, (int) __entry->stream_id, (int)__entry->mixer_id,
 210                (int)__entry->peak0, (int)__entry->peak1,
 211                (int)__entry->vol0, (int)__entry->vol1)
 212);
 213
 214TRACE_EVENT(hsw_mixer_info_reply,
 215
 216        TP_PROTO(struct sst_hsw_ipc_stream_info_reply *reply),
 217
 218        TP_ARGS(reply),
 219
 220        TP_STRUCT__entry(
 221                __field(        int,    mixer_id        )
 222                __field(        int,    peak0   )
 223                __field(        int,    peak1   )
 224                __field(        int,    vol0    )
 225                __field(        int,    vol1    )
 226        ),
 227
 228        TP_fast_assign(
 229                __entry->mixer_id = reply->mixer_hw_id;
 230                __entry->peak0 = reply->peak_meter_register_address[0];
 231                __entry->peak1 = reply->peak_meter_register_address[1];
 232                __entry->vol0 = reply->volume_register_address[0];
 233                __entry->vol1 = reply->volume_register_address[1];
 234        ),
 235
 236        TP_printk("mixer id %d peak 0x%x:0x%x vol 0x%x,0x%x",
 237                (int)__entry->mixer_id,
 238                (int)__entry->peak0, (int)__entry->peak1,
 239                (int)__entry->vol0, (int)__entry->vol1)
 240);
 241
 242TRACE_EVENT(hsw_stream_data_format,
 243
 244        TP_PROTO(struct sst_hsw_stream *stream,
 245                struct sst_hsw_audio_data_format_ipc *req),
 246
 247        TP_ARGS(stream, req),
 248
 249        TP_STRUCT__entry(
 250                __field(        uint32_t,       id      )
 251                __field(        uint32_t,       frequency       )
 252                __field(        uint32_t,       bitdepth        )
 253                __field(        uint32_t,       map     )
 254                __field(        uint32_t,       config  )
 255                __field(        uint32_t,       style   )
 256                __field(        uint8_t,        ch_num  )
 257                __field(        uint8_t,        valid_bit       )
 258        ),
 259
 260        TP_fast_assign(
 261                __entry->id = stream->host_id;
 262                __entry->frequency = req->frequency;
 263                __entry->bitdepth = req->bitdepth;
 264                __entry->map = req->map;
 265                __entry->config = req->config;
 266                __entry->style = req->style;
 267                __entry->ch_num = req->ch_num;
 268                __entry->valid_bit = req->valid_bit;
 269        ),
 270
 271        TP_printk("stream %d freq %d depth %d map 0x%x config 0x%x style 0x%x ch %d bits %d",
 272                (int) __entry->id, (uint32_t)__entry->frequency,
 273                (uint32_t)__entry->bitdepth, (uint32_t)__entry->map,
 274                (uint32_t)__entry->config, (uint32_t)__entry->style,
 275                (uint8_t)__entry->ch_num, (uint8_t)__entry->valid_bit)
 276);
 277
 278TRACE_EVENT(hsw_stream_alloc_request,
 279
 280        TP_PROTO(struct sst_hsw_stream *stream,
 281                struct sst_hsw_ipc_stream_alloc_req *req),
 282
 283        TP_ARGS(stream, req),
 284
 285        TP_STRUCT__entry(
 286                __field(        uint32_t,       id      )
 287                __field(        uint8_t,        path_id )
 288                __field(        uint8_t,        stream_type     )
 289                __field(        uint8_t,        format_id       )
 290        ),
 291
 292        TP_fast_assign(
 293                __entry->id = stream->host_id;
 294                __entry->path_id = req->path_id;
 295                __entry->stream_type = req->stream_type;
 296                __entry->format_id = req->format_id;
 297        ),
 298
 299        TP_printk("stream %d path %d type %d format %d",
 300                (int) __entry->id, (uint8_t)__entry->path_id,
 301                (uint8_t)__entry->stream_type, (uint8_t)__entry->format_id)
 302);
 303
 304TRACE_EVENT(hsw_stream_free_req,
 305
 306        TP_PROTO(struct sst_hsw_stream *stream,
 307                struct sst_hsw_ipc_stream_free_req *req),
 308
 309        TP_ARGS(stream, req),
 310
 311        TP_STRUCT__entry(
 312                __field(        int,    id      )
 313                __field(        int,    stream_id       )
 314        ),
 315
 316        TP_fast_assign(
 317                __entry->id = stream->host_id;
 318                __entry->stream_id = req->stream_id;
 319        ),
 320
 321        TP_printk("stream %d hw id %d",
 322                (int) __entry->id, (int) __entry->stream_id)
 323);
 324
 325TRACE_EVENT(hsw_volume_req,
 326
 327        TP_PROTO(struct sst_hsw_stream *stream,
 328                struct sst_hsw_ipc_volume_req *req),
 329
 330        TP_ARGS(stream, req),
 331
 332        TP_STRUCT__entry(
 333                __field(        int,    id      )
 334                __field(        uint32_t,       channel )
 335                __field(        uint32_t,       target_volume   )
 336                __field(        uint64_t,       curve_duration  )
 337                __field(        uint32_t,       curve_type      )
 338        ),
 339
 340        TP_fast_assign(
 341                __entry->id = stream->host_id;
 342                __entry->channel = req->channel;
 343                __entry->target_volume = req->target_volume;
 344                __entry->curve_duration = req->curve_duration;
 345                __entry->curve_type = req->curve_type;
 346        ),
 347
 348        TP_printk("stream %d chan 0x%x vol %d duration %llu type %d",
 349                (int) __entry->id, (uint32_t) __entry->channel,
 350                (uint32_t)__entry->target_volume,
 351                (uint64_t)__entry->curve_duration,
 352                (uint32_t)__entry->curve_type)
 353);
 354
 355TRACE_EVENT(hsw_device_config_req,
 356
 357        TP_PROTO(struct sst_hsw_ipc_device_config_req *req),
 358
 359        TP_ARGS(req),
 360
 361        TP_STRUCT__entry(
 362                __field(        uint32_t,       ssp     )
 363                __field(        uint32_t,       clock_freq      )
 364                __field(        uint32_t,       mode    )
 365                __field(        uint16_t,       clock_divider   )
 366        ),
 367
 368        TP_fast_assign(
 369                __entry->ssp = req->ssp_interface;
 370                __entry->clock_freq = req->clock_frequency;
 371                __entry->mode = req->mode;
 372                __entry->clock_divider = req->clock_divider;
 373        ),
 374
 375        TP_printk("SSP %d Freq %d mode %d div %d",
 376                (uint32_t)__entry->ssp,
 377                (uint32_t)__entry->clock_freq, (uint32_t)__entry->mode,
 378                (uint32_t)__entry->clock_divider)
 379);
 380
 381#endif /* _TRACE_HSWADSP_H */
 382
 383/* This part must be outside protection */
 384#include <trace/define_trace.h>
 385