@@ -1110,14 +1110,15 @@ static int fsi_master_read(struct fsi_master *master, int link,
{
int rc;
- trace_fsi_master_read(master, link, slave_id, addr, size);
-
rc = fsi_check_access(addr, size);
- if (!rc)
+ if (!rc) {
rc = master->read(master, link, slave_id, addr, val, size);
-
- trace_fsi_master_rw_result(master, link, slave_id, addr, size,
- false, val, rc);
+ if (rc)
+ trace_fsi_master_error(master->idx, link, slave_id, addr, size, val, rc,
+ true);
+ else
+ trace_fsi_master_xfer(master->idx, link, slave_id, addr, size, val, true);
+ }
return rc;
}
@@ -1127,14 +1128,15 @@ static int fsi_master_write(struct fsi_master *master, int link,
{
int rc;
- trace_fsi_master_write(master, link, slave_id, addr, size, val);
-
rc = fsi_check_access(addr, size);
- if (!rc)
+ if (!rc) {
rc = master->write(master, link, slave_id, addr, val, size);
-
- trace_fsi_master_rw_result(master, link, slave_id, addr, size,
- true, val, rc);
+ if (rc)
+ trace_fsi_master_error(master->idx, link, slave_id, addr, size, val, rc,
+ false);
+ else
+ trace_fsi_master_xfer(master->idx, link, slave_id, addr, size, val, false);
+ }
return rc;
}
@@ -8,101 +8,63 @@
#include <linux/tracepoint.h>
-TRACE_EVENT(fsi_master_read,
- TP_PROTO(const struct fsi_master *master, int link, int id,
- uint32_t addr, size_t size),
- TP_ARGS(master, link, id, addr, size),
+TRACE_EVENT(fsi_master_xfer,
+ TP_PROTO(int master_idx, int link, int id, uint32_t addr, size_t size, const void *data,
+ bool read),
+ TP_ARGS(master_idx, link, id, addr, size, data, read),
TP_STRUCT__entry(
- __field(int, master_idx)
- __field(int, link)
- __field(int, id)
- __field(__u32, addr)
- __field(size_t, size)
+ __field(int, master_idx)
+ __field(int, link)
+ __field(int, id)
+ __field(uint32_t, addr)
+ __field(int, size)
+ __field(uint32_t, data)
+ __field(bool, read)
),
TP_fast_assign(
- __entry->master_idx = master->idx;
+ __entry->master_idx = master_idx;
__entry->link = link;
__entry->id = id;
__entry->addr = addr;
- __entry->size = size;
- ),
- TP_printk("fsi%d:%02d:%02d %08x[%zu]",
- __entry->master_idx,
- __entry->link,
- __entry->id,
- __entry->addr,
- __entry->size
- )
-);
-
-TRACE_EVENT(fsi_master_write,
- TP_PROTO(const struct fsi_master *master, int link, int id,
- uint32_t addr, size_t size, const void *data),
- TP_ARGS(master, link, id, addr, size, data),
- TP_STRUCT__entry(
- __field(int, master_idx)
- __field(int, link)
- __field(int, id)
- __field(__u32, addr)
- __field(size_t, size)
- __field(__u32, data)
- ),
- TP_fast_assign(
- __entry->master_idx = master->idx;
- __entry->link = link;
- __entry->id = id;
- __entry->addr = addr;
- __entry->size = size;
+ __entry->size = (int)size;
__entry->data = 0;
memcpy(&__entry->data, data, size);
+ __entry->read = read;
),
- TP_printk("fsi%d:%02d:%02d %08x[%zu] <= {%*ph}",
- __entry->master_idx,
- __entry->link,
- __entry->id,
- __entry->addr,
- __entry->size,
- (int)__entry->size, &__entry->data
- )
+ TP_printk("fsi%d:%02d:%02d %s %08x {%*ph}", __entry->master_idx, __entry->link,
+ __entry->id, __entry->read ? "read" : "write", __entry->addr, __entry->size,
+ &__entry->data)
);
-TRACE_EVENT(fsi_master_rw_result,
- TP_PROTO(const struct fsi_master *master, int link, int id,
- uint32_t addr, size_t size,
- bool write, const void *data, int ret),
- TP_ARGS(master, link, id, addr, size, write, data, ret),
+TRACE_EVENT(fsi_master_error,
+ TP_PROTO(int master_idx, int link, int id, uint32_t addr, size_t size, const void *data,
+ int ret, bool read),
+ TP_ARGS(master_idx, link, id, addr, size, data, ret, read),
TP_STRUCT__entry(
- __field(int, master_idx)
- __field(int, link)
- __field(int, id)
- __field(__u32, addr)
- __field(size_t, size)
- __field(bool, write)
- __field(__u32, data)
- __field(int, ret)
+ __field(int, master_idx)
+ __field(int, link)
+ __field(int, id)
+ __field(uint32_t, addr)
+ __field(int, size)
+ __field(uint32_t, data)
+ __field(int, ret)
+ __field(bool, read)
),
TP_fast_assign(
- __entry->master_idx = master->idx;
+ __entry->master_idx = master_idx;
__entry->link = link;
__entry->id = id;
__entry->addr = addr;
- __entry->size = size;
- __entry->write = write;
+ __entry->size = (int)size;
__entry->data = 0;
- __entry->ret = ret;
- if (__entry->write || !__entry->ret)
+ if (!read)
memcpy(&__entry->data, data, size);
+ __entry->ret = ret;
+ __entry->read = read;
),
- TP_printk("fsi%d:%02d:%02d %08x[%zu] %s {%*ph} ret %d",
- __entry->master_idx,
- __entry->link,
- __entry->id,
- __entry->addr,
- __entry->size,
- __entry->write ? "<=" : "=>",
- (int)__entry->size, &__entry->data,
- __entry->ret
- )
+ TP_printk("fsi%d:%02d:%02d %s %08x {%*ph} %d", __entry->master_idx, __entry->link,
+ __entry->id, __entry->read ? "read" : "write", __entry->addr, __entry->size,
+ &__entry->data, __entry->ret)
);
TRACE_EVENT(fsi_master_break,