diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2017-06-06 23:08:51 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-06-09 11:52:08 +0200 |
commit | 66433b05a3b2b8f95be9e6269bc21e916febf482 (patch) | |
tree | 3ed705a672aac49dc8aeb67bf271ed2399c087ae /drivers/fsi/fsi-core.c | |
parent | drivers/fsi: expose direct-access slave API (diff) | |
download | linux-66433b05a3b2b8f95be9e6269bc21e916febf482.tar.xz linux-66433b05a3b2b8f95be9e6269bc21e916febf482.zip |
drivers/fsi: Add tracepoints for low-level operations
Trace low level read and write FSI bus operations.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Christopher Bostic <cbostic@linux.vnet.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/fsi/fsi-core.c')
-rw-r--r-- | drivers/fsi/fsi-core.c | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/drivers/fsi/fsi-core.c b/drivers/fsi/fsi-core.c index 36813651ac0a..db54561161ac 100644 --- a/drivers/fsi/fsi-core.c +++ b/drivers/fsi/fsi-core.c @@ -23,6 +23,9 @@ #include "fsi-master.h" +#define CREATE_TRACE_POINTS +#include <trace/events/fsi.h> + #define FSI_SLAVE_CONF_NEXT_MASK GENMASK(31, 31) #define FSI_SLAVE_CONF_SLOTS_MASK GENMASK(23, 16) #define FSI_SLAVE_CONF_SLOTS_SHIFT 16 @@ -542,11 +545,16 @@ 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) - return 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); - return master->read(master, link, slave_id, addr, val, size); + return rc; } static int fsi_master_write(struct fsi_master *master, int link, @@ -554,11 +562,16 @@ 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) - return rc; + if (!rc) + rc = master->write(master, link, slave_id, addr, val, size); - return master->write(master, link, slave_id, addr, val, size); + trace_fsi_master_rw_result(master, link, slave_id, addr, size, + true, val, rc); + + return rc; } static int fsi_master_link_enable(struct fsi_master *master, int link) @@ -574,6 +587,8 @@ static int fsi_master_link_enable(struct fsi_master *master, int link) */ static int fsi_master_break(struct fsi_master *master, int link) { + trace_fsi_master_break(master, link); + if (master->send_break) return master->send_break(master, link); |