123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- /* SPDX-License-Identifier: GPL-2.0 */
- #undef TRACE_SYSTEM
- #define TRACE_SYSTEM intel_avs
- #if !defined(_TRACE_INTEL_AVS_H) || defined(TRACE_HEADER_MULTI_READ)
- #define _TRACE_INTEL_AVS_H
- #include <linux/types.h>
- #include <linux/tracepoint.h>
- TRACE_EVENT(avs_dsp_core_op,
- TP_PROTO(unsigned int reg, unsigned int mask, const char *op, bool flag),
- TP_ARGS(reg, mask, op, flag),
- TP_STRUCT__entry(
- __field(unsigned int, reg )
- __field(unsigned int, mask )
- __string(op, op )
- __field(bool, flag )
- ),
- TP_fast_assign(
- __entry->reg = reg;
- __entry->mask = mask;
- __assign_str(op, op);
- __entry->flag = flag;
- ),
- TP_printk("%s: %d, core mask: 0x%X, prev state: 0x%08X",
- __get_str(op), __entry->flag, __entry->mask, __entry->reg)
- );
- #ifndef __TRACE_INTEL_AVS_TRACE_HELPER
- #define __TRACE_INTEL_AVS_TRACE_HELPER
- void trace_avs_msg_payload(const void *data, size_t size);
- #define trace_avs_request(msg, fwregs) \
- ({ \
- trace_avs_ipc_request_msg((msg)->header, fwregs); \
- trace_avs_msg_payload((msg)->data, (msg)->size); \
- })
- #define trace_avs_reply(msg, fwregs) \
- ({ \
- trace_avs_ipc_reply_msg((msg)->header, fwregs); \
- trace_avs_msg_payload((msg)->data, (msg)->size); \
- })
- #define trace_avs_notify(msg, fwregs) \
- ({ \
- trace_avs_ipc_notify_msg((msg)->header, fwregs); \
- trace_avs_msg_payload((msg)->data, (msg)->size); \
- })
- #endif
- DECLARE_EVENT_CLASS(avs_ipc_msg_hdr,
- TP_PROTO(u64 header, u64 fwregs),
- TP_ARGS(header, fwregs),
- TP_STRUCT__entry(
- __field(u64, header)
- __field(u64, fwregs)
- ),
- TP_fast_assign(
- __entry->header = header;
- __entry->fwregs = fwregs;
- ),
- TP_printk("primary: 0x%08X, extension: 0x%08X,\n"
- "fwstatus: 0x%08X, fwerror: 0x%08X",
- lower_32_bits(__entry->header), upper_32_bits(__entry->header),
- lower_32_bits(__entry->fwregs), upper_32_bits(__entry->fwregs))
- );
- DEFINE_EVENT(avs_ipc_msg_hdr, avs_ipc_request_msg,
- TP_PROTO(u64 header, u64 fwregs),
- TP_ARGS(header, fwregs)
- );
- DEFINE_EVENT(avs_ipc_msg_hdr, avs_ipc_reply_msg,
- TP_PROTO(u64 header, u64 fwregs),
- TP_ARGS(header, fwregs)
- );
- DEFINE_EVENT(avs_ipc_msg_hdr, avs_ipc_notify_msg,
- TP_PROTO(u64 header, u64 fwregs),
- TP_ARGS(header, fwregs)
- );
- TRACE_EVENT_CONDITION(avs_ipc_msg_payload,
- TP_PROTO(const u8 *data, size_t size, size_t offset, size_t total),
- TP_ARGS(data, size, offset, total),
- TP_CONDITION(data && size),
- TP_STRUCT__entry(
- __dynamic_array(u8, buf, size )
- __field(size_t, offset )
- __field(size_t, pos )
- __field(size_t, total )
- ),
- TP_fast_assign(
- memcpy(__get_dynamic_array(buf), data + offset, size);
- __entry->offset = offset;
- __entry->pos = offset + size;
- __entry->total = total;
- ),
- TP_printk("range %zu-%zu out of %zu bytes%s",
- __entry->offset, __entry->pos, __entry->total,
- __print_hex_dump("", DUMP_PREFIX_NONE, 16, 4,
- __get_dynamic_array(buf),
- __get_dynamic_array_len(buf), false))
- );
- TRACE_EVENT(avs_d0ix,
- TP_PROTO(const char *op, bool proceed, u64 header),
- TP_ARGS(op, proceed, header),
- TP_STRUCT__entry(
- __string(op, op )
- __field(bool, proceed )
- __field(u64, header )
- ),
- TP_fast_assign(
- __assign_str(op, op);
- __entry->proceed = proceed;
- __entry->header = header;
- ),
- TP_printk("%s%s for request: 0x%08X 0x%08X",
- __entry->proceed ? "" : "ignore ", __get_str(op),
- lower_32_bits(__entry->header), upper_32_bits(__entry->header))
- );
- #endif /* _TRACE_INTEL_AVS_H */
- /* This part must be outside protection */
- #undef TRACE_INCLUDE_PATH
- #define TRACE_INCLUDE_PATH .
- #define TRACE_INCLUDE_FILE trace
- #include <trace/define_trace.h>
|