1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun #undef TRACE_SYSTEM 4*4882a593Smuzhiyun #define TRACE_SYSTEM fsi 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #if !defined(_TRACE_FSI_H) || defined(TRACE_HEADER_MULTI_READ) 7*4882a593Smuzhiyun #define _TRACE_FSI_H 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #include <linux/tracepoint.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun TRACE_EVENT(fsi_master_read, 12*4882a593Smuzhiyun TP_PROTO(const struct fsi_master *master, int link, int id, 13*4882a593Smuzhiyun uint32_t addr, size_t size), 14*4882a593Smuzhiyun TP_ARGS(master, link, id, addr, size), 15*4882a593Smuzhiyun TP_STRUCT__entry( 16*4882a593Smuzhiyun __field(int, master_idx) 17*4882a593Smuzhiyun __field(int, link) 18*4882a593Smuzhiyun __field(int, id) 19*4882a593Smuzhiyun __field(__u32, addr) 20*4882a593Smuzhiyun __field(size_t, size) 21*4882a593Smuzhiyun ), 22*4882a593Smuzhiyun TP_fast_assign( 23*4882a593Smuzhiyun __entry->master_idx = master->idx; 24*4882a593Smuzhiyun __entry->link = link; 25*4882a593Smuzhiyun __entry->id = id; 26*4882a593Smuzhiyun __entry->addr = addr; 27*4882a593Smuzhiyun __entry->size = size; 28*4882a593Smuzhiyun ), 29*4882a593Smuzhiyun TP_printk("fsi%d:%02d:%02d %08x[%zu]", 30*4882a593Smuzhiyun __entry->master_idx, 31*4882a593Smuzhiyun __entry->link, 32*4882a593Smuzhiyun __entry->id, 33*4882a593Smuzhiyun __entry->addr, 34*4882a593Smuzhiyun __entry->size 35*4882a593Smuzhiyun ) 36*4882a593Smuzhiyun ); 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun TRACE_EVENT(fsi_master_write, 39*4882a593Smuzhiyun TP_PROTO(const struct fsi_master *master, int link, int id, 40*4882a593Smuzhiyun uint32_t addr, size_t size, const void *data), 41*4882a593Smuzhiyun TP_ARGS(master, link, id, addr, size, data), 42*4882a593Smuzhiyun TP_STRUCT__entry( 43*4882a593Smuzhiyun __field(int, master_idx) 44*4882a593Smuzhiyun __field(int, link) 45*4882a593Smuzhiyun __field(int, id) 46*4882a593Smuzhiyun __field(__u32, addr) 47*4882a593Smuzhiyun __field(size_t, size) 48*4882a593Smuzhiyun __field(__u32, data) 49*4882a593Smuzhiyun ), 50*4882a593Smuzhiyun TP_fast_assign( 51*4882a593Smuzhiyun __entry->master_idx = master->idx; 52*4882a593Smuzhiyun __entry->link = link; 53*4882a593Smuzhiyun __entry->id = id; 54*4882a593Smuzhiyun __entry->addr = addr; 55*4882a593Smuzhiyun __entry->size = size; 56*4882a593Smuzhiyun __entry->data = 0; 57*4882a593Smuzhiyun memcpy(&__entry->data, data, size); 58*4882a593Smuzhiyun ), 59*4882a593Smuzhiyun TP_printk("fsi%d:%02d:%02d %08x[%zu] <= {%*ph}", 60*4882a593Smuzhiyun __entry->master_idx, 61*4882a593Smuzhiyun __entry->link, 62*4882a593Smuzhiyun __entry->id, 63*4882a593Smuzhiyun __entry->addr, 64*4882a593Smuzhiyun __entry->size, 65*4882a593Smuzhiyun (int)__entry->size, &__entry->data 66*4882a593Smuzhiyun ) 67*4882a593Smuzhiyun ); 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun TRACE_EVENT(fsi_master_rw_result, 70*4882a593Smuzhiyun TP_PROTO(const struct fsi_master *master, int link, int id, 71*4882a593Smuzhiyun uint32_t addr, size_t size, 72*4882a593Smuzhiyun bool write, const void *data, int ret), 73*4882a593Smuzhiyun TP_ARGS(master, link, id, addr, size, write, data, ret), 74*4882a593Smuzhiyun TP_STRUCT__entry( 75*4882a593Smuzhiyun __field(int, master_idx) 76*4882a593Smuzhiyun __field(int, link) 77*4882a593Smuzhiyun __field(int, id) 78*4882a593Smuzhiyun __field(__u32, addr) 79*4882a593Smuzhiyun __field(size_t, size) 80*4882a593Smuzhiyun __field(bool, write) 81*4882a593Smuzhiyun __field(__u32, data) 82*4882a593Smuzhiyun __field(int, ret) 83*4882a593Smuzhiyun ), 84*4882a593Smuzhiyun TP_fast_assign( 85*4882a593Smuzhiyun __entry->master_idx = master->idx; 86*4882a593Smuzhiyun __entry->link = link; 87*4882a593Smuzhiyun __entry->id = id; 88*4882a593Smuzhiyun __entry->addr = addr; 89*4882a593Smuzhiyun __entry->size = size; 90*4882a593Smuzhiyun __entry->write = write; 91*4882a593Smuzhiyun __entry->data = 0; 92*4882a593Smuzhiyun __entry->ret = ret; 93*4882a593Smuzhiyun if (__entry->write || !__entry->ret) 94*4882a593Smuzhiyun memcpy(&__entry->data, data, size); 95*4882a593Smuzhiyun ), 96*4882a593Smuzhiyun TP_printk("fsi%d:%02d:%02d %08x[%zu] %s {%*ph} ret %d", 97*4882a593Smuzhiyun __entry->master_idx, 98*4882a593Smuzhiyun __entry->link, 99*4882a593Smuzhiyun __entry->id, 100*4882a593Smuzhiyun __entry->addr, 101*4882a593Smuzhiyun __entry->size, 102*4882a593Smuzhiyun __entry->write ? "<=" : "=>", 103*4882a593Smuzhiyun (int)__entry->size, &__entry->data, 104*4882a593Smuzhiyun __entry->ret 105*4882a593Smuzhiyun ) 106*4882a593Smuzhiyun ); 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun TRACE_EVENT(fsi_master_break, 109*4882a593Smuzhiyun TP_PROTO(const struct fsi_master *master, int link), 110*4882a593Smuzhiyun TP_ARGS(master, link), 111*4882a593Smuzhiyun TP_STRUCT__entry( 112*4882a593Smuzhiyun __field(int, master_idx) 113*4882a593Smuzhiyun __field(int, link) 114*4882a593Smuzhiyun ), 115*4882a593Smuzhiyun TP_fast_assign( 116*4882a593Smuzhiyun __entry->master_idx = master->idx; 117*4882a593Smuzhiyun __entry->link = link; 118*4882a593Smuzhiyun ), 119*4882a593Smuzhiyun TP_printk("fsi%d:%d", 120*4882a593Smuzhiyun __entry->master_idx, 121*4882a593Smuzhiyun __entry->link 122*4882a593Smuzhiyun ) 123*4882a593Smuzhiyun ); 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun #endif /* _TRACE_FSI_H */ 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun #include <trace/define_trace.h> 129