1*53e89e3eSEddie James /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*53e89e3eSEddie James 3*53e89e3eSEddie James #undef TRACE_SYSTEM 4*53e89e3eSEddie James #define TRACE_SYSTEM fsi_master_i2cr 5*53e89e3eSEddie James 6*53e89e3eSEddie James #if !defined(_TRACE_FSI_MASTER_I2CR_H) || defined(TRACE_HEADER_MULTI_READ) 7*53e89e3eSEddie James #define _TRACE_FSI_MASTER_I2CR_H 8*53e89e3eSEddie James 9*53e89e3eSEddie James #include <linux/tracepoint.h> 10*53e89e3eSEddie James 11*53e89e3eSEddie James TRACE_EVENT(i2cr_i2c_error, 12*53e89e3eSEddie James TP_PROTO(const struct i2c_client *client, uint32_t command, int rc), 13*53e89e3eSEddie James TP_ARGS(client, command, rc), 14*53e89e3eSEddie James TP_STRUCT__entry( 15*53e89e3eSEddie James __field(int, bus) 16*53e89e3eSEddie James __field(int, rc) 17*53e89e3eSEddie James __array(unsigned char, command, sizeof(uint32_t)) 18*53e89e3eSEddie James __field(unsigned short, addr) 19*53e89e3eSEddie James ), 20*53e89e3eSEddie James TP_fast_assign( 21*53e89e3eSEddie James __entry->bus = client->adapter->nr; 22*53e89e3eSEddie James __entry->rc = rc; 23*53e89e3eSEddie James memcpy(__entry->command, &command, sizeof(uint32_t)); 24*53e89e3eSEddie James __entry->addr = client->addr; 25*53e89e3eSEddie James ), 26*53e89e3eSEddie James TP_printk("%d-%02x command:{ %*ph } rc:%d", __entry->bus, __entry->addr, 27*53e89e3eSEddie James (int)sizeof(uint32_t), __entry->command, __entry->rc) 28*53e89e3eSEddie James ); 29*53e89e3eSEddie James 30*53e89e3eSEddie James TRACE_EVENT(i2cr_read, 31*53e89e3eSEddie James TP_PROTO(const struct i2c_client *client, uint32_t command, uint64_t *data), 32*53e89e3eSEddie James TP_ARGS(client, command, data), 33*53e89e3eSEddie James TP_STRUCT__entry( 34*53e89e3eSEddie James __field(int, bus) 35*53e89e3eSEddie James __array(unsigned char, data, sizeof(uint64_t)) 36*53e89e3eSEddie James __array(unsigned char, command, sizeof(uint32_t)) 37*53e89e3eSEddie James __field(unsigned short, addr) 38*53e89e3eSEddie James ), 39*53e89e3eSEddie James TP_fast_assign( 40*53e89e3eSEddie James __entry->bus = client->adapter->nr; 41*53e89e3eSEddie James memcpy(__entry->data, data, sizeof(uint64_t)); 42*53e89e3eSEddie James memcpy(__entry->command, &command, sizeof(uint32_t)); 43*53e89e3eSEddie James __entry->addr = client->addr; 44*53e89e3eSEddie James ), 45*53e89e3eSEddie James TP_printk("%d-%02x command:{ %*ph } { %*ph }", __entry->bus, __entry->addr, 46*53e89e3eSEddie James (int)sizeof(uint32_t), __entry->command, (int)sizeof(uint64_t), __entry->data) 47*53e89e3eSEddie James ); 48*53e89e3eSEddie James 49*53e89e3eSEddie James TRACE_EVENT(i2cr_status, 50*53e89e3eSEddie James TP_PROTO(const struct i2c_client *client, uint64_t status), 51*53e89e3eSEddie James TP_ARGS(client, status), 52*53e89e3eSEddie James TP_STRUCT__entry( 53*53e89e3eSEddie James __field(uint64_t, status) 54*53e89e3eSEddie James __field(int, bus) 55*53e89e3eSEddie James __field(unsigned short, addr) 56*53e89e3eSEddie James ), 57*53e89e3eSEddie James TP_fast_assign( 58*53e89e3eSEddie James __entry->status = status; 59*53e89e3eSEddie James __entry->bus = client->adapter->nr; 60*53e89e3eSEddie James __entry->addr = client->addr; 61*53e89e3eSEddie James ), 62*53e89e3eSEddie James TP_printk("%d-%02x %016llx", __entry->bus, __entry->addr, __entry->status) 63*53e89e3eSEddie James ); 64*53e89e3eSEddie James 65*53e89e3eSEddie James TRACE_EVENT(i2cr_status_error, 66*53e89e3eSEddie James TP_PROTO(const struct i2c_client *client, uint64_t status, uint64_t error, uint64_t log), 67*53e89e3eSEddie James TP_ARGS(client, status, error, log), 68*53e89e3eSEddie James TP_STRUCT__entry( 69*53e89e3eSEddie James __field(uint64_t, error) 70*53e89e3eSEddie James __field(uint64_t, log) 71*53e89e3eSEddie James __field(uint64_t, status) 72*53e89e3eSEddie James __field(int, bus) 73*53e89e3eSEddie James __field(unsigned short, addr) 74*53e89e3eSEddie James ), 75*53e89e3eSEddie James TP_fast_assign( 76*53e89e3eSEddie James __entry->error = error; 77*53e89e3eSEddie James __entry->log = log; 78*53e89e3eSEddie James __entry->status = status; 79*53e89e3eSEddie James __entry->bus = client->adapter->nr; 80*53e89e3eSEddie James __entry->addr = client->addr; 81*53e89e3eSEddie James ), 82*53e89e3eSEddie James TP_printk("%d-%02x status:%016llx error:%016llx log:%016llx", __entry->bus, __entry->addr, 83*53e89e3eSEddie James __entry->status, __entry->error, __entry->log) 84*53e89e3eSEddie James ); 85*53e89e3eSEddie James 86*53e89e3eSEddie James TRACE_EVENT(i2cr_write, 87*53e89e3eSEddie James TP_PROTO(const struct i2c_client *client, uint32_t command, uint64_t data), 88*53e89e3eSEddie James TP_ARGS(client, command, data), 89*53e89e3eSEddie James TP_STRUCT__entry( 90*53e89e3eSEddie James __field(int, bus) 91*53e89e3eSEddie James __array(unsigned char, data, sizeof(uint64_t)) 92*53e89e3eSEddie James __array(unsigned char, command, sizeof(uint32_t)) 93*53e89e3eSEddie James __field(unsigned short, addr) 94*53e89e3eSEddie James ), 95*53e89e3eSEddie James TP_fast_assign( 96*53e89e3eSEddie James __entry->bus = client->adapter->nr; 97*53e89e3eSEddie James memcpy(__entry->data, &data, sizeof(uint64_t)); 98*53e89e3eSEddie James memcpy(__entry->command, &command, sizeof(uint32_t)); 99*53e89e3eSEddie James __entry->addr = client->addr; 100*53e89e3eSEddie James ), 101*53e89e3eSEddie James TP_printk("%d-%02x command:{ %*ph } { %*ph }", __entry->bus, __entry->addr, 102*53e89e3eSEddie James (int)sizeof(uint32_t), __entry->command, (int)sizeof(uint64_t), __entry->data) 103*53e89e3eSEddie James ); 104*53e89e3eSEddie James 105*53e89e3eSEddie James #endif 106*53e89e3eSEddie James 107*53e89e3eSEddie James #include <trace/define_trace.h> 108