Linux Audio

Check our new training course

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