1 /* SPDX-License-Identifier: GPL-2.0 */ 2 3 #undef TRACE_SYSTEM 4 #define TRACE_SYSTEM fsi 5 6 #if !defined(_TRACE_FSI_H) || defined(TRACE_HEADER_MULTI_READ) 7 #define _TRACE_FSI_H 8 9 #include <linux/tracepoint.h> 10 11 TRACE_EVENT(fsi_master_read, 12 TP_PROTO(const struct fsi_master *master, int link, int id, 13 uint32_t addr, size_t size), 14 TP_ARGS(master, link, id, addr, size), 15 TP_STRUCT__entry( 16 __field(int, master_idx) 17 __field(int, link) 18 __field(int, id) 19 __field(__u32, addr) 20 __field(size_t, size) 21 ), 22 TP_fast_assign( 23 __entry->master_idx = master->idx; 24 __entry->link = link; 25 __entry->id = id; 26 __entry->addr = addr; 27 __entry->size = size; 28 ), 29 TP_printk("fsi%d:%02d:%02d %08x[%zu]", 30 __entry->master_idx, 31 __entry->link, 32 __entry->id, 33 __entry->addr, 34 __entry->size 35 ) 36 ); 37 38 TRACE_EVENT(fsi_master_write, 39 TP_PROTO(const struct fsi_master *master, int link, int id, 40 uint32_t addr, size_t size, const void *data), 41 TP_ARGS(master, link, id, addr, size, data), 42 TP_STRUCT__entry( 43 __field(int, master_idx) 44 __field(int, link) 45 __field(int, id) 46 __field(__u32, addr) 47 __field(size_t, size) 48 __field(__u32, data) 49 ), 50 TP_fast_assign( 51 __entry->master_idx = master->idx; 52 __entry->link = link; 53 __entry->id = id; 54 __entry->addr = addr; 55 __entry->size = size; 56 __entry->data = 0; 57 memcpy(&__entry->data, data, size); 58 ), 59 TP_printk("fsi%d:%02d:%02d %08x[%zu] <= {%*ph}", 60 __entry->master_idx, 61 __entry->link, 62 __entry->id, 63 __entry->addr, 64 __entry->size, 65 (int)__entry->size, &__entry->data 66 ) 67 ); 68 69 TRACE_EVENT(fsi_master_rw_result, 70 TP_PROTO(const struct fsi_master *master, int link, int id, 71 uint32_t addr, size_t size, 72 bool write, const void *data, int ret), 73 TP_ARGS(master, link, id, addr, size, write, data, ret), 74 TP_STRUCT__entry( 75 __field(int, master_idx) 76 __field(int, link) 77 __field(int, id) 78 __field(__u32, addr) 79 __field(size_t, size) 80 __field(bool, write) 81 __field(__u32, data) 82 __field(int, ret) 83 ), 84 TP_fast_assign( 85 __entry->master_idx = master->idx; 86 __entry->link = link; 87 __entry->id = id; 88 __entry->addr = addr; 89 __entry->size = size; 90 __entry->write = write; 91 __entry->data = 0; 92 __entry->ret = ret; 93 if (__entry->write || !__entry->ret) 94 memcpy(&__entry->data, data, size); 95 ), 96 TP_printk("fsi%d:%02d:%02d %08x[%zu] %s {%*ph} ret %d", 97 __entry->master_idx, 98 __entry->link, 99 __entry->id, 100 __entry->addr, 101 __entry->size, 102 __entry->write ? "<=" : "=>", 103 (int)__entry->size, &__entry->data, 104 __entry->ret 105 ) 106 ); 107 108 TRACE_EVENT(fsi_master_break, 109 TP_PROTO(const struct fsi_master *master, int link), 110 TP_ARGS(master, link), 111 TP_STRUCT__entry( 112 __field(int, master_idx) 113 __field(int, link) 114 ), 115 TP_fast_assign( 116 __entry->master_idx = master->idx; 117 __entry->link = link; 118 ), 119 TP_printk("fsi%d:%d", 120 __entry->master_idx, 121 __entry->link 122 ) 123 ); 124 125 TRACE_EVENT(fsi_master_scan, 126 TP_PROTO(const struct fsi_master *master, bool scan), 127 TP_ARGS(master, scan), 128 TP_STRUCT__entry( 129 __field(int, master_idx) 130 __field(int, n_links) 131 __field(bool, scan) 132 ), 133 TP_fast_assign( 134 __entry->master_idx = master->idx; 135 __entry->n_links = master->n_links; 136 __entry->scan = scan; 137 ), 138 TP_printk("fsi%d (%d links) %s", __entry->master_idx, __entry->n_links, 139 __entry->scan ? "scan" : "unscan") 140 ); 141 142 TRACE_EVENT(fsi_master_unregister, 143 TP_PROTO(const struct fsi_master *master), 144 TP_ARGS(master), 145 TP_STRUCT__entry( 146 __field(int, master_idx) 147 __field(int, n_links) 148 ), 149 TP_fast_assign( 150 __entry->master_idx = master->idx; 151 __entry->n_links = master->n_links; 152 ), 153 TP_printk("fsi%d (%d links)", __entry->master_idx, __entry->n_links) 154 ); 155 156 TRACE_EVENT(fsi_slave_init, 157 TP_PROTO(const struct fsi_slave *slave), 158 TP_ARGS(slave), 159 TP_STRUCT__entry( 160 __field(int, master_idx) 161 __field(int, master_n_links) 162 __field(int, idx) 163 __field(int, link) 164 __field(int, chip_id) 165 __field(__u32, cfam_id) 166 __field(__u32, size) 167 ), 168 TP_fast_assign( 169 __entry->master_idx = slave->master->idx; 170 __entry->master_n_links = slave->master->n_links; 171 __entry->idx = slave->cdev_idx; 172 __entry->link = slave->link; 173 __entry->chip_id = slave->chip_id; 174 __entry->cfam_id = slave->cfam_id; 175 __entry->size = slave->size; 176 ), 177 TP_printk("fsi%d: idx:%d link:%d/%d cid:%d cfam:%08x %08x", 178 __entry->master_idx, 179 __entry->idx, 180 __entry->link, 181 __entry->master_n_links, 182 __entry->chip_id, 183 __entry->cfam_id, 184 __entry->size 185 ) 186 ); 187 188 TRACE_EVENT(fsi_slave_invalid_cfam, 189 TP_PROTO(const struct fsi_master *master, int link, uint32_t cfam_id), 190 TP_ARGS(master, link, cfam_id), 191 TP_STRUCT__entry( 192 __field(int, master_idx) 193 __field(int, master_n_links) 194 __field(int, link) 195 __field(__u32, cfam_id) 196 ), 197 TP_fast_assign( 198 __entry->master_idx = master->idx; 199 __entry->master_n_links = master->n_links; 200 __entry->link = link; 201 __entry->cfam_id = cfam_id; 202 ), 203 TP_printk("fsi%d: cfam:%08x link:%d/%d", 204 __entry->master_idx, 205 __entry->cfam_id, 206 __entry->link, 207 __entry->master_n_links 208 ) 209 ); 210 211 TRACE_EVENT(fsi_dev_init, 212 TP_PROTO(const struct fsi_device *dev), 213 TP_ARGS(dev), 214 TP_STRUCT__entry( 215 __field(int, master_idx) 216 __field(int, link) 217 __field(int, type) 218 __field(int, unit) 219 __field(int, version) 220 __field(__u32, addr) 221 __field(__u32, size) 222 ), 223 TP_fast_assign( 224 __entry->master_idx = dev->slave->master->idx; 225 __entry->link = dev->slave->link; 226 __entry->type = dev->engine_type; 227 __entry->unit = dev->unit; 228 __entry->version = dev->version; 229 __entry->addr = dev->addr; 230 __entry->size = dev->size; 231 ), 232 TP_printk("fsi%d: slv%d: t:%02x u:%02x v:%02x %08x@%08x", 233 __entry->master_idx, 234 __entry->link, 235 __entry->type, 236 __entry->unit, 237 __entry->version, 238 __entry->size, 239 __entry->addr 240 ) 241 ); 242 243 #endif /* _TRACE_FSI_H */ 244 245 #include <trace/define_trace.h> 246