forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.8 KiB
67 lines
1.8 KiB
/* 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>
|
|
|