| /* 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[%zd]", | |
| __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[%zd] <= {%*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[%zd] %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> |