Linux Audio

Check our new training course

Loading...
v6.13.7
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/* I2C message transfer tracepoints
  3 *
  4 * Copyright (C) 2013 Red Hat, Inc. All Rights Reserved.
  5 * Written by David Howells (dhowells@redhat.com)
  6 */
  7#undef TRACE_SYSTEM
  8#define TRACE_SYSTEM i2c
  9
 10#if !defined(_TRACE_I2C_H) || defined(TRACE_HEADER_MULTI_READ)
 11#define _TRACE_I2C_H
 12
 13#include <linux/i2c.h>
 14#include <linux/tracepoint.h>
 15
 16/*
 17 * drivers/i2c/i2c-core-base.c
 18 */
 19extern int i2c_transfer_trace_reg(void);
 20extern void i2c_transfer_trace_unreg(void);
 21
 22/*
 23 * __i2c_transfer() write request
 24 */
 25TRACE_EVENT_FN(i2c_write,
 26	       TP_PROTO(const struct i2c_adapter *adap, const struct i2c_msg *msg,
 27			int num),
 28	       TP_ARGS(adap, msg, num),
 29	       TP_STRUCT__entry(
 30		       __field(int,	adapter_nr		)
 31		       __field(__u16,	msg_nr			)
 32		       __field(__u16,	addr			)
 33		       __field(__u16,	flags			)
 34		       __field(__u16,	len			)
 35		       __dynamic_array(__u8, buf, msg->len)	),
 36	       TP_fast_assign(
 37		       __entry->adapter_nr = adap->nr;
 38		       __entry->msg_nr = num;
 39		       __entry->addr = msg->addr;
 40		       __entry->flags = msg->flags;
 41		       __entry->len = msg->len;
 42		       memcpy(__get_dynamic_array(buf), msg->buf, msg->len);
 43			      ),
 44	       TP_printk("i2c-%d #%u a=%03x f=%04x l=%u [%*phD]",
 45			 __entry->adapter_nr,
 46			 __entry->msg_nr,
 47			 __entry->addr,
 48			 __entry->flags,
 49			 __entry->len,
 50			 __entry->len, __get_dynamic_array(buf)
 51			 ),
 52	       i2c_transfer_trace_reg,
 53	       i2c_transfer_trace_unreg);
 54
 55/*
 56 * __i2c_transfer() read request
 57 */
 58TRACE_EVENT_FN(i2c_read,
 59	       TP_PROTO(const struct i2c_adapter *adap, const struct i2c_msg *msg,
 60			int num),
 61	       TP_ARGS(adap, msg, num),
 62	       TP_STRUCT__entry(
 63		       __field(int,	adapter_nr		)
 64		       __field(__u16,	msg_nr			)
 65		       __field(__u16,	addr			)
 66		       __field(__u16,	flags			)
 67		       __field(__u16,	len			)
 68				),
 69	       TP_fast_assign(
 70		       __entry->adapter_nr = adap->nr;
 71		       __entry->msg_nr = num;
 72		       __entry->addr = msg->addr;
 73		       __entry->flags = msg->flags;
 74		       __entry->len = msg->len;
 75			      ),
 76	       TP_printk("i2c-%d #%u a=%03x f=%04x l=%u",
 77			 __entry->adapter_nr,
 78			 __entry->msg_nr,
 79			 __entry->addr,
 80			 __entry->flags,
 81			 __entry->len
 82			 ),
 83	       i2c_transfer_trace_reg,
 84		       i2c_transfer_trace_unreg);
 85
 86/*
 87 * __i2c_transfer() read reply
 88 */
 89TRACE_EVENT_FN(i2c_reply,
 90	       TP_PROTO(const struct i2c_adapter *adap, const struct i2c_msg *msg,
 91			int num),
 92	       TP_ARGS(adap, msg, num),
 93	       TP_STRUCT__entry(
 94		       __field(int,	adapter_nr		)
 95		       __field(__u16,	msg_nr			)
 96		       __field(__u16,	addr			)
 97		       __field(__u16,	flags			)
 98		       __field(__u16,	len			)
 99		       __dynamic_array(__u8, buf, msg->len)	),
100	       TP_fast_assign(
101		       __entry->adapter_nr = adap->nr;
102		       __entry->msg_nr = num;
103		       __entry->addr = msg->addr;
104		       __entry->flags = msg->flags;
105		       __entry->len = msg->len;
106		       memcpy(__get_dynamic_array(buf), msg->buf, msg->len);
107			      ),
108	       TP_printk("i2c-%d #%u a=%03x f=%04x l=%u [%*phD]",
109			 __entry->adapter_nr,
110			 __entry->msg_nr,
111			 __entry->addr,
112			 __entry->flags,
113			 __entry->len,
114			 __entry->len, __get_dynamic_array(buf)
115			 ),
116	       i2c_transfer_trace_reg,
117	       i2c_transfer_trace_unreg);
118
119/*
120 * __i2c_transfer() result
121 */
122TRACE_EVENT_FN(i2c_result,
123	       TP_PROTO(const struct i2c_adapter *adap, int num, int ret),
124	       TP_ARGS(adap, num, ret),
125	       TP_STRUCT__entry(
126		       __field(int,	adapter_nr		)
127		       __field(__u16,	nr_msgs			)
128		       __field(__s16,	ret			)
129				),
130	       TP_fast_assign(
131		       __entry->adapter_nr = adap->nr;
132		       __entry->nr_msgs = num;
133		       __entry->ret = ret;
134			      ),
135	       TP_printk("i2c-%d n=%u ret=%d",
136			 __entry->adapter_nr,
137			 __entry->nr_msgs,
138			 __entry->ret
139			 ),
140	       i2c_transfer_trace_reg,
141	       i2c_transfer_trace_unreg);
142
143#endif /* _TRACE_I2C_H */
144
145/* This part must be outside protection */
146#include <trace/define_trace.h>
v5.4
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/* I2C message transfer tracepoints
  3 *
  4 * Copyright (C) 2013 Red Hat, Inc. All Rights Reserved.
  5 * Written by David Howells (dhowells@redhat.com)
  6 */
  7#undef TRACE_SYSTEM
  8#define TRACE_SYSTEM i2c
  9
 10#if !defined(_TRACE_I2C_H) || defined(TRACE_HEADER_MULTI_READ)
 11#define _TRACE_I2C_H
 12
 13#include <linux/i2c.h>
 14#include <linux/tracepoint.h>
 15
 16/*
 17 * drivers/i2c/i2c-core-base.c
 18 */
 19extern int i2c_transfer_trace_reg(void);
 20extern void i2c_transfer_trace_unreg(void);
 21
 22/*
 23 * __i2c_transfer() write request
 24 */
 25TRACE_EVENT_FN(i2c_write,
 26	       TP_PROTO(const struct i2c_adapter *adap, const struct i2c_msg *msg,
 27			int num),
 28	       TP_ARGS(adap, msg, num),
 29	       TP_STRUCT__entry(
 30		       __field(int,	adapter_nr		)
 31		       __field(__u16,	msg_nr			)
 32		       __field(__u16,	addr			)
 33		       __field(__u16,	flags			)
 34		       __field(__u16,	len			)
 35		       __dynamic_array(__u8, buf, msg->len)	),
 36	       TP_fast_assign(
 37		       __entry->adapter_nr = adap->nr;
 38		       __entry->msg_nr = num;
 39		       __entry->addr = msg->addr;
 40		       __entry->flags = msg->flags;
 41		       __entry->len = msg->len;
 42		       memcpy(__get_dynamic_array(buf), msg->buf, msg->len);
 43			      ),
 44	       TP_printk("i2c-%d #%u a=%03x f=%04x l=%u [%*phD]",
 45			 __entry->adapter_nr,
 46			 __entry->msg_nr,
 47			 __entry->addr,
 48			 __entry->flags,
 49			 __entry->len,
 50			 __entry->len, __get_dynamic_array(buf)
 51			 ),
 52	       i2c_transfer_trace_reg,
 53	       i2c_transfer_trace_unreg);
 54
 55/*
 56 * __i2c_transfer() read request
 57 */
 58TRACE_EVENT_FN(i2c_read,
 59	       TP_PROTO(const struct i2c_adapter *adap, const struct i2c_msg *msg,
 60			int num),
 61	       TP_ARGS(adap, msg, num),
 62	       TP_STRUCT__entry(
 63		       __field(int,	adapter_nr		)
 64		       __field(__u16,	msg_nr			)
 65		       __field(__u16,	addr			)
 66		       __field(__u16,	flags			)
 67		       __field(__u16,	len			)
 68				),
 69	       TP_fast_assign(
 70		       __entry->adapter_nr = adap->nr;
 71		       __entry->msg_nr = num;
 72		       __entry->addr = msg->addr;
 73		       __entry->flags = msg->flags;
 74		       __entry->len = msg->len;
 75			      ),
 76	       TP_printk("i2c-%d #%u a=%03x f=%04x l=%u",
 77			 __entry->adapter_nr,
 78			 __entry->msg_nr,
 79			 __entry->addr,
 80			 __entry->flags,
 81			 __entry->len
 82			 ),
 83	       i2c_transfer_trace_reg,
 84		       i2c_transfer_trace_unreg);
 85
 86/*
 87 * __i2c_transfer() read reply
 88 */
 89TRACE_EVENT_FN(i2c_reply,
 90	       TP_PROTO(const struct i2c_adapter *adap, const struct i2c_msg *msg,
 91			int num),
 92	       TP_ARGS(adap, msg, num),
 93	       TP_STRUCT__entry(
 94		       __field(int,	adapter_nr		)
 95		       __field(__u16,	msg_nr			)
 96		       __field(__u16,	addr			)
 97		       __field(__u16,	flags			)
 98		       __field(__u16,	len			)
 99		       __dynamic_array(__u8, buf, msg->len)	),
100	       TP_fast_assign(
101		       __entry->adapter_nr = adap->nr;
102		       __entry->msg_nr = num;
103		       __entry->addr = msg->addr;
104		       __entry->flags = msg->flags;
105		       __entry->len = msg->len;
106		       memcpy(__get_dynamic_array(buf), msg->buf, msg->len);
107			      ),
108	       TP_printk("i2c-%d #%u a=%03x f=%04x l=%u [%*phD]",
109			 __entry->adapter_nr,
110			 __entry->msg_nr,
111			 __entry->addr,
112			 __entry->flags,
113			 __entry->len,
114			 __entry->len, __get_dynamic_array(buf)
115			 ),
116	       i2c_transfer_trace_reg,
117	       i2c_transfer_trace_unreg);
118
119/*
120 * __i2c_transfer() result
121 */
122TRACE_EVENT_FN(i2c_result,
123	       TP_PROTO(const struct i2c_adapter *adap, int num, int ret),
124	       TP_ARGS(adap, num, ret),
125	       TP_STRUCT__entry(
126		       __field(int,	adapter_nr		)
127		       __field(__u16,	nr_msgs			)
128		       __field(__s16,	ret			)
129				),
130	       TP_fast_assign(
131		       __entry->adapter_nr = adap->nr;
132		       __entry->nr_msgs = num;
133		       __entry->ret = ret;
134			      ),
135	       TP_printk("i2c-%d n=%u ret=%d",
136			 __entry->adapter_nr,
137			 __entry->nr_msgs,
138			 __entry->ret
139			 ),
140	       i2c_transfer_trace_reg,
141	       i2c_transfer_trace_unreg);
142
143#endif /* _TRACE_I2C_H */
144
145/* This part must be outside protection */
146#include <trace/define_trace.h>