| /* SPDX-License-Identifier: GPL-2.0 */ |
| |
| #undef TRACE_SYSTEM |
| #define TRACE_SYSTEM fsi |
| |
| #if !defined(_TRACE_FSI_H) || defined(TRACE_HEADER_MULTI_READ) |
| #define _TRACE_FSI_H |
| |
| #include <linux/tracepoint.h> |
| |
| TRACE_EVENT(fsi_master_read, |
| TP_PROTO(const struct fsi_master *master, int link, int id, |
| uint32_t addr, size_t size), |
| TP_ARGS(master, link, id, addr, size), |
| TP_STRUCT__entry( |
| __field(int, master_idx) |
| __field(int, link) |
| __field(int, id) |
| __field(__u32, addr) |
| __field(size_t, size) |
| ), |
| TP_fast_assign( |
| __entry->master_idx = master->idx; |
| __entry->link = link; |
| __entry->id = id; |
| __entry->addr = addr; |
| __entry->size = size; |
| ), |
| TP_printk("fsi%d:%02d:%02d %08x[%zu]", |
| __entry->master_idx, |
| __entry->link, |
| __entry->id, |
| __entry->addr, |
| __entry->size |
| ) |
| ); |
| |
| TRACE_EVENT(fsi_master_write, |
| TP_PROTO(const struct fsi_master *master, int link, int id, |
| uint32_t addr, size_t size, const void *data), |
| TP_ARGS(master, link, id, addr, size, data), |
| TP_STRUCT__entry( |
| __field(int, master_idx) |
| __field(int, link) |
| __field(int, id) |
| __field(__u32, addr) |
| __field(size_t, size) |
| __field(__u32, data) |
| ), |
| TP_fast_assign( |
| __entry->master_idx = master->idx; |
| __entry->link = link; |
| __entry->id = id; |
| __entry->addr = addr; |
| __entry->size = size; |
| __entry->data = 0; |
| memcpy(&__entry->data, data, size); |
| ), |
| TP_printk("fsi%d:%02d:%02d %08x[%zu] <= {%*ph}", |
| __entry->master_idx, |
| __entry->link, |
| __entry->id, |
| __entry->addr, |
| __entry->size, |
| (int)__entry->size, &__entry->data |
| ) |
| ); |
| |
| TRACE_EVENT(fsi_master_rw_result, |
| TP_PROTO(const struct fsi_master *master, int link, int id, |
| uint32_t addr, size_t size, |
| bool write, const void *data, int ret), |
| TP_ARGS(master, link, id, addr, size, write, data, ret), |
| TP_STRUCT__entry( |
| __field(int, master_idx) |
| __field(int, link) |
| __field(int, id) |
| __field(__u32, addr) |
| __field(size_t, size) |
| __field(bool, write) |
| __field(__u32, data) |
| __field(int, ret) |
| ), |
| TP_fast_assign( |
| __entry->master_idx = master->idx; |
| __entry->link = link; |
| __entry->id = id; |
| __entry->addr = addr; |
| __entry->size = size; |
| __entry->write = write; |
| __entry->data = 0; |
| __entry->ret = ret; |
| if (__entry->write || !__entry->ret) |
| memcpy(&__entry->data, data, size); |
| ), |
| TP_printk("fsi%d:%02d:%02d %08x[%zu] %s {%*ph} ret %d", |
| __entry->master_idx, |
| __entry->link, |
| __entry->id, |
| __entry->addr, |
| __entry->size, |
| __entry->write ? "<=" : "=>", |
| (int)__entry->size, &__entry->data, |
| __entry->ret |
| ) |
| ); |
| |
| TRACE_EVENT(fsi_master_break, |
| TP_PROTO(const struct fsi_master *master, int link), |
| TP_ARGS(master, link), |
| TP_STRUCT__entry( |
| __field(int, master_idx) |
| __field(int, link) |
| ), |
| TP_fast_assign( |
| __entry->master_idx = master->idx; |
| __entry->link = link; |
| ), |
| TP_printk("fsi%d:%d", |
| __entry->master_idx, |
| __entry->link |
| ) |
| ); |
| |
| |
| #endif /* _TRACE_FSI_H */ |
| |
| #include <trace/define_trace.h> |