162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci#if !defined(__BNO055_SERDEV_TRACE_H__) || defined(TRACE_HEADER_MULTI_READ)
462306a36Sopenharmony_ci#define __BNO055_SERDEV_TRACE_H__
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include <linux/tracepoint.h>
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#undef TRACE_SYSTEM
962306a36Sopenharmony_ci#define TRACE_SYSTEM bno055_ser
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciTRACE_EVENT(send_chunk,
1262306a36Sopenharmony_ci	    TP_PROTO(int len, const u8 *data),
1362306a36Sopenharmony_ci	    TP_ARGS(len, data),
1462306a36Sopenharmony_ci	    TP_STRUCT__entry(
1562306a36Sopenharmony_ci		    __field(int, len)
1662306a36Sopenharmony_ci		    __dynamic_array(u8, chunk, len)
1762306a36Sopenharmony_ci	    ),
1862306a36Sopenharmony_ci	    TP_fast_assign(
1962306a36Sopenharmony_ci		    __entry->len = len;
2062306a36Sopenharmony_ci		    memcpy(__get_dynamic_array(chunk),
2162306a36Sopenharmony_ci			   data, __entry->len);
2262306a36Sopenharmony_ci	    ),
2362306a36Sopenharmony_ci	    TP_printk("len: %d, data: = %*ph",
2462306a36Sopenharmony_ci		      __entry->len, __entry->len, __get_dynamic_array(chunk)
2562306a36Sopenharmony_ci	    )
2662306a36Sopenharmony_ci);
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciTRACE_EVENT(cmd_retry,
2962306a36Sopenharmony_ci	    TP_PROTO(bool read, int addr, int retry),
3062306a36Sopenharmony_ci	    TP_ARGS(read, addr, retry),
3162306a36Sopenharmony_ci	    TP_STRUCT__entry(
3262306a36Sopenharmony_ci		    __field(bool, read)
3362306a36Sopenharmony_ci		    __field(int, addr)
3462306a36Sopenharmony_ci		    __field(int, retry)
3562306a36Sopenharmony_ci	    ),
3662306a36Sopenharmony_ci	    TP_fast_assign(
3762306a36Sopenharmony_ci		    __entry->read = read;
3862306a36Sopenharmony_ci		    __entry->addr = addr;
3962306a36Sopenharmony_ci		    __entry->retry = retry;
4062306a36Sopenharmony_ci	    ),
4162306a36Sopenharmony_ci	    TP_printk("%s addr 0x%x retry #%d",
4262306a36Sopenharmony_ci		      __entry->read ? "read" : "write",
4362306a36Sopenharmony_ci		      __entry->addr, __entry->retry
4462306a36Sopenharmony_ci	    )
4562306a36Sopenharmony_ci);
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciTRACE_EVENT(write_reg,
4862306a36Sopenharmony_ci	    TP_PROTO(u8 addr, u8 value),
4962306a36Sopenharmony_ci	    TP_ARGS(addr, value),
5062306a36Sopenharmony_ci	    TP_STRUCT__entry(
5162306a36Sopenharmony_ci		    __field(u8, addr)
5262306a36Sopenharmony_ci		    __field(u8, value)
5362306a36Sopenharmony_ci	    ),
5462306a36Sopenharmony_ci	    TP_fast_assign(
5562306a36Sopenharmony_ci		    __entry->addr = addr;
5662306a36Sopenharmony_ci		    __entry->value = value;
5762306a36Sopenharmony_ci	    ),
5862306a36Sopenharmony_ci	    TP_printk("reg 0x%x = 0x%x",
5962306a36Sopenharmony_ci		      __entry->addr, __entry->value
6062306a36Sopenharmony_ci	    )
6162306a36Sopenharmony_ci);
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciTRACE_EVENT(read_reg,
6462306a36Sopenharmony_ci	    TP_PROTO(int addr, size_t len),
6562306a36Sopenharmony_ci	    TP_ARGS(addr, len),
6662306a36Sopenharmony_ci	    TP_STRUCT__entry(
6762306a36Sopenharmony_ci		    __field(int, addr)
6862306a36Sopenharmony_ci		    __field(size_t, len)
6962306a36Sopenharmony_ci	    ),
7062306a36Sopenharmony_ci	    TP_fast_assign(
7162306a36Sopenharmony_ci		    __entry->addr = addr;
7262306a36Sopenharmony_ci		    __entry->len = len;
7362306a36Sopenharmony_ci	    ),
7462306a36Sopenharmony_ci	    TP_printk("reg 0x%x (len %zu)",
7562306a36Sopenharmony_ci		      __entry->addr, __entry->len
7662306a36Sopenharmony_ci	    )
7762306a36Sopenharmony_ci);
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ciTRACE_EVENT(recv,
8062306a36Sopenharmony_ci	    TP_PROTO(size_t len, const unsigned char *buf),
8162306a36Sopenharmony_ci	    TP_ARGS(len, buf),
8262306a36Sopenharmony_ci	    TP_STRUCT__entry(
8362306a36Sopenharmony_ci		    __field(size_t, len)
8462306a36Sopenharmony_ci		    __dynamic_array(unsigned char, buf, len)
8562306a36Sopenharmony_ci	    ),
8662306a36Sopenharmony_ci	    TP_fast_assign(
8762306a36Sopenharmony_ci		    __entry->len = len;
8862306a36Sopenharmony_ci		    memcpy(__get_dynamic_array(buf),
8962306a36Sopenharmony_ci			   buf, __entry->len);
9062306a36Sopenharmony_ci	    ),
9162306a36Sopenharmony_ci	    TP_printk("len: %zu, data: = %*ph",
9262306a36Sopenharmony_ci		      __entry->len, (int)__entry->len, __get_dynamic_array(buf)
9362306a36Sopenharmony_ci	    )
9462306a36Sopenharmony_ci);
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci#endif /* __BNO055_SERDEV_TRACE_H__ || TRACE_HEADER_MULTI_READ */
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
9962306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH .
10062306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE
10162306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE bno055_ser_trace
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci/* This part must be outside protection */
10462306a36Sopenharmony_ci#include <trace/define_trace.h>
105