root/include/trace/events/i2c.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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  */
  19 extern int i2c_transfer_trace_reg(void);
  20 extern void i2c_transfer_trace_unreg(void);
  21 
  22 /*
  23  * __i2c_transfer() write request
  24  */
  25 TRACE_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  */
  58 TRACE_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  */
  89 TRACE_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  */
 122 TRACE_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>

/* [<][>][^][v][top][bottom][index][help] */