linux/include/trace/events/fsi_master_i2cr.h
Eddie James 53e89e3e44 fsi: Add IBM I2C Responder virtual FSI master
The I2C Responder (I2CR) is an I2C device that translates I2C commands
to CFAM or SCOM operations, effectively implementing an FSI master and
bus.

Signed-off-by: Eddie James <eajames@linux.ibm.com>
Link: https://lore.kernel.org/r/20230612195657.245125-14-eajames@linux.ibm.com
Signed-off-by: Joel Stanley <joel@jms.id.au>
2023-08-11 13:32:14 +09:30

108 lines
3.2 KiB
C

/* SPDX-License-Identifier: GPL-2.0-or-later */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM fsi_master_i2cr
#if !defined(_TRACE_FSI_MASTER_I2CR_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_FSI_MASTER_I2CR_H
#include <linux/tracepoint.h>
TRACE_EVENT(i2cr_i2c_error,
TP_PROTO(const struct i2c_client *client, uint32_t command, int rc),
TP_ARGS(client, command, rc),
TP_STRUCT__entry(
__field(int, bus)
__field(int, rc)
__array(unsigned char, command, sizeof(uint32_t))
__field(unsigned short, addr)
),
TP_fast_assign(
__entry->bus = client->adapter->nr;
__entry->rc = rc;
memcpy(__entry->command, &command, sizeof(uint32_t));
__entry->addr = client->addr;
),
TP_printk("%d-%02x command:{ %*ph } rc:%d", __entry->bus, __entry->addr,
(int)sizeof(uint32_t), __entry->command, __entry->rc)
);
TRACE_EVENT(i2cr_read,
TP_PROTO(const struct i2c_client *client, uint32_t command, uint64_t *data),
TP_ARGS(client, command, data),
TP_STRUCT__entry(
__field(int, bus)
__array(unsigned char, data, sizeof(uint64_t))
__array(unsigned char, command, sizeof(uint32_t))
__field(unsigned short, addr)
),
TP_fast_assign(
__entry->bus = client->adapter->nr;
memcpy(__entry->data, data, sizeof(uint64_t));
memcpy(__entry->command, &command, sizeof(uint32_t));
__entry->addr = client->addr;
),
TP_printk("%d-%02x command:{ %*ph } { %*ph }", __entry->bus, __entry->addr,
(int)sizeof(uint32_t), __entry->command, (int)sizeof(uint64_t), __entry->data)
);
TRACE_EVENT(i2cr_status,
TP_PROTO(const struct i2c_client *client, uint64_t status),
TP_ARGS(client, status),
TP_STRUCT__entry(
__field(uint64_t, status)
__field(int, bus)
__field(unsigned short, addr)
),
TP_fast_assign(
__entry->status = status;
__entry->bus = client->adapter->nr;
__entry->addr = client->addr;
),
TP_printk("%d-%02x %016llx", __entry->bus, __entry->addr, __entry->status)
);
TRACE_EVENT(i2cr_status_error,
TP_PROTO(const struct i2c_client *client, uint64_t status, uint64_t error, uint64_t log),
TP_ARGS(client, status, error, log),
TP_STRUCT__entry(
__field(uint64_t, error)
__field(uint64_t, log)
__field(uint64_t, status)
__field(int, bus)
__field(unsigned short, addr)
),
TP_fast_assign(
__entry->error = error;
__entry->log = log;
__entry->status = status;
__entry->bus = client->adapter->nr;
__entry->addr = client->addr;
),
TP_printk("%d-%02x status:%016llx error:%016llx log:%016llx", __entry->bus, __entry->addr,
__entry->status, __entry->error, __entry->log)
);
TRACE_EVENT(i2cr_write,
TP_PROTO(const struct i2c_client *client, uint32_t command, uint64_t data),
TP_ARGS(client, command, data),
TP_STRUCT__entry(
__field(int, bus)
__array(unsigned char, data, sizeof(uint64_t))
__array(unsigned char, command, sizeof(uint32_t))
__field(unsigned short, addr)
),
TP_fast_assign(
__entry->bus = client->adapter->nr;
memcpy(__entry->data, &data, sizeof(uint64_t));
memcpy(__entry->command, &command, sizeof(uint32_t));
__entry->addr = client->addr;
),
TP_printk("%d-%02x command:{ %*ph } { %*ph }", __entry->bus, __entry->addr,
(int)sizeof(uint32_t), __entry->command, (int)sizeof(uint64_t), __entry->data)
);
#endif
#include <trace/define_trace.h>