68 lines
1.8 KiB
C
68 lines
1.8 KiB
C
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||
|
/*
|
||
|
* I2C slave tracepoints
|
||
|
*
|
||
|
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||
|
*/
|
||
|
#undef TRACE_SYSTEM
|
||
|
#define TRACE_SYSTEM i2c_slave
|
||
|
|
||
|
#if !defined(_TRACE_I2C_SLAVE_H) || defined(TRACE_HEADER_MULTI_READ)
|
||
|
#define _TRACE_I2C_SLAVE_H
|
||
|
|
||
|
#include <linux/i2c.h>
|
||
|
#include <linux/tracepoint.h>
|
||
|
|
||
|
TRACE_DEFINE_ENUM(I2C_SLAVE_READ_REQUESTED);
|
||
|
TRACE_DEFINE_ENUM(I2C_SLAVE_WRITE_REQUESTED);
|
||
|
TRACE_DEFINE_ENUM(I2C_SLAVE_READ_PROCESSED);
|
||
|
TRACE_DEFINE_ENUM(I2C_SLAVE_WRITE_RECEIVED);
|
||
|
TRACE_DEFINE_ENUM(I2C_SLAVE_STOP);
|
||
|
|
||
|
#define show_event_type(type) \
|
||
|
__print_symbolic(type, \
|
||
|
{ I2C_SLAVE_READ_REQUESTED, "RD_REQ" }, \
|
||
|
{ I2C_SLAVE_WRITE_REQUESTED, "WR_REQ" }, \
|
||
|
{ I2C_SLAVE_READ_PROCESSED, "RD_PRO" }, \
|
||
|
{ I2C_SLAVE_WRITE_RECEIVED, "WR_RCV" }, \
|
||
|
{ I2C_SLAVE_STOP, " STOP" })
|
||
|
|
||
|
TRACE_EVENT(i2c_slave,
|
||
|
TP_PROTO(const struct i2c_client *client, enum i2c_slave_event event,
|
||
|
__u8 *val, int cb_ret),
|
||
|
TP_ARGS(client, event, val, cb_ret),
|
||
|
TP_STRUCT__entry(
|
||
|
__field(int, adapter_nr )
|
||
|
__field(int, ret )
|
||
|
__field(__u16, addr )
|
||
|
__field(__u16, len )
|
||
|
__field(enum i2c_slave_event, event )
|
||
|
__array(__u8, buf, 1) ),
|
||
|
|
||
|
TP_fast_assign(
|
||
|
__entry->adapter_nr = client->adapter->nr;
|
||
|
__entry->addr = client->addr;
|
||
|
__entry->event = event;
|
||
|
__entry->ret = cb_ret;
|
||
|
switch (event) {
|
||
|
case I2C_SLAVE_READ_REQUESTED:
|
||
|
case I2C_SLAVE_READ_PROCESSED:
|
||
|
case I2C_SLAVE_WRITE_RECEIVED:
|
||
|
__entry->len = 1;
|
||
|
memcpy(__entry->buf, val, __entry->len);
|
||
|
break;
|
||
|
default:
|
||
|
__entry->len = 0;
|
||
|
break;
|
||
|
}
|
||
|
),
|
||
|
TP_printk("i2c-%d a=%03x ret=%d %s [%*phD]",
|
||
|
__entry->adapter_nr, __entry->addr, __entry->ret,
|
||
|
show_event_type(__entry->event), __entry->len, __entry->buf
|
||
|
));
|
||
|
|
||
|
#endif /* _TRACE_I2C_SLAVE_H */
|
||
|
|
||
|
/* This part must be outside protection */
|
||
|
#include <trace/define_trace.h>
|