2 #define TRACE_SYSTEM hswadsp
4 #if !defined(_TRACE_HSWADSP_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_HSWADSP_H
7 #include <linux/types.h>
8 #include <linux/ktime.h>
9 #include <linux/tracepoint.h>
12 struct sst_hsw_stream
;
13 struct sst_hsw_ipc_stream_free_req
;
14 struct sst_hsw_ipc_volume_req
;
15 struct sst_hsw_ipc_stream_alloc_req
;
16 struct sst_hsw_audio_data_format_ipc
;
17 struct sst_hsw_ipc_stream_info_reply
;
18 struct sst_hsw_ipc_device_config_req
;
20 DECLARE_EVENT_CLASS(sst_irq
,
22 TP_PROTO(uint32_t status
, uint32_t mask
),
24 TP_ARGS(status
, mask
),
27 __field( unsigned int, status
)
28 __field( unsigned int, mask
)
32 __entry
->status
= status
;
36 TP_printk("status 0x%8.8x mask 0x%8.8x",
37 (unsigned int)__entry
->status
, (unsigned int)__entry
->mask
)
40 DEFINE_EVENT(sst_irq
, sst_irq_busy
,
42 TP_PROTO(unsigned int status
, unsigned int mask
),
48 DEFINE_EVENT(sst_irq
, sst_irq_done
,
50 TP_PROTO(unsigned int status
, unsigned int mask
),
56 DECLARE_EVENT_CLASS(ipc
,
58 TP_PROTO(const char *name
, int val
),
63 __string( name
, name
)
64 __field( unsigned int, val
)
68 __assign_str(name
, name
);
72 TP_printk("%s 0x%8.8x", __get_str(name
), (unsigned int)__entry
->val
)
76 DEFINE_EVENT(ipc
, ipc_request
,
78 TP_PROTO(const char *name
, int val
),
84 DEFINE_EVENT(ipc
, ipc_reply
,
86 TP_PROTO(const char *name
, int val
),
92 DEFINE_EVENT(ipc
, ipc_pending_reply
,
94 TP_PROTO(const char *name
, int val
),
100 DEFINE_EVENT(ipc
, ipc_notification
,
102 TP_PROTO(const char *name
, int val
),
108 DEFINE_EVENT(ipc
, ipc_error
,
110 TP_PROTO(const char *name
, int val
),
116 DECLARE_EVENT_CLASS(stream_position
,
118 TP_PROTO(unsigned int id
, unsigned int pos
),
123 __field( unsigned int, id
)
124 __field( unsigned int, pos
)
132 TP_printk("id %d position 0x%x",
133 (unsigned int)__entry
->id
, (unsigned int)__entry
->pos
)
136 DEFINE_EVENT(stream_position
, stream_read_position
,
138 TP_PROTO(unsigned int id
, unsigned int pos
),
144 DEFINE_EVENT(stream_position
, stream_write_position
,
146 TP_PROTO(unsigned int id
, unsigned int pos
),
152 TRACE_EVENT(hsw_stream_buffer
,
154 TP_PROTO(struct sst_hsw_stream
*stream
),
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
)
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
;
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
)
182 TRACE_EVENT(hsw_stream_alloc_reply
,
184 TP_PROTO(struct sst_hsw_stream
*stream
),
190 __field( int, stream_id
)
191 __field( int, mixer_id
)
192 __field( int, peak0
)
193 __field( int, peak1
)
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];
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
)
214 TRACE_EVENT(hsw_mixer_info_reply
,
216 TP_PROTO(struct sst_hsw_ipc_stream_info_reply
*reply
),
221 __field( int, mixer_id
)
222 __field( int, peak0
)
223 __field( int, peak1
)
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];
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
)
242 TRACE_EVENT(hsw_stream_data_format
,
244 TP_PROTO(struct sst_hsw_stream
*stream
,
245 struct sst_hsw_audio_data_format_ipc
*req
),
247 TP_ARGS(stream
, req
),
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
)
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
;
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
)
278 TRACE_EVENT(hsw_stream_alloc_request
,
280 TP_PROTO(struct sst_hsw_stream
*stream
,
281 struct sst_hsw_ipc_stream_alloc_req
*req
),
283 TP_ARGS(stream
, req
),
286 __field( uint32_t, id
)
287 __field( uint8_t, path_id
)
288 __field( uint8_t, stream_type
)
289 __field( uint8_t, format_id
)
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
;
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
)
304 TRACE_EVENT(hsw_stream_free_req
,
306 TP_PROTO(struct sst_hsw_stream
*stream
,
307 struct sst_hsw_ipc_stream_free_req
*req
),
309 TP_ARGS(stream
, req
),
313 __field( int, stream_id
)
317 __entry
->id
= stream
->host_id
;
318 __entry
->stream_id
= req
->stream_id
;
321 TP_printk("stream %d hw id %d",
322 (int) __entry
->id
, (int) __entry
->stream_id
)
325 TRACE_EVENT(hsw_volume_req
,
327 TP_PROTO(struct sst_hsw_stream
*stream
,
328 struct sst_hsw_ipc_volume_req
*req
),
330 TP_ARGS(stream
, req
),
334 __field( uint32_t, channel
)
335 __field( uint32_t, target_volume
)
336 __field( uint64_t, curve_duration
)
337 __field( uint32_t, curve_type
)
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
;
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
)
355 TRACE_EVENT(hsw_device_config_req
,
357 TP_PROTO(struct sst_hsw_ipc_device_config_req
*req
),
362 __field( uint32_t, ssp
)
363 __field( uint32_t, clock_freq
)
364 __field( uint32_t, mode
)
365 __field( uint16_t, clock_divider
)
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
;
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
)
381 #endif /* _TRACE_HSWADSP_H */
383 /* This part must be outside protection */
384 #include <trace/define_trace.h>