diff options
author | Oliver O'Halloran <oohall@gmail.com> | 2021-06-25 11:49:23 +0530 |
---|---|---|
committer | Vasant Hegde <hegdevasant@linux.vnet.ibm.com> | 2021-06-30 15:05:55 +0530 |
commit | baf6c343e661b1e9de13ecd363494dbabeb7aa84 (patch) | |
tree | ac85e0c0e4236055a98e475238f9db8a63ec0650 /external | |
parent | a382d1638aaf96371321a177a92286444fceec0d (diff) | |
download | skiboot-baf6c343e661b1e9de13ecd363494dbabeb7aa84.zip skiboot-baf6c343e661b1e9de13ecd363494dbabeb7aa84.tar.gz skiboot-baf6c343e661b1e9de13ecd363494dbabeb7aa84.tar.bz2 |
i2c,trace: Add I2C operation trace events
Add support for tracing I2C transactions performed by skiboot. This covers
both internally initiated I2C ops and those that requested by the kernel
via the OPAL API.
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Diffstat (limited to 'external')
-rw-r--r-- | external/trace/dump_trace.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/external/trace/dump_trace.c b/external/trace/dump_trace.c index c68eea8..f54dfa0 100644 --- a/external/trace/dump_trace.c +++ b/external/trace/dump_trace.c @@ -149,6 +149,36 @@ static void dump_uart(struct trace_uart *t) } } +static void dump_i2c(struct trace_i2c *t) +{ + uint16_t type = be16_to_cpu(t->type); + + printf("I2C: bus: %d dev: %02x len: %x ", + be16_to_cpu(t->bus), + be16_to_cpu(t->i2c_addr), + be16_to_cpu(t->size) + ); + + switch (type & 0x3) { + case 0: + printf("read"); + break; + case 1: + printf("write"); + break; + case 2: + printf("smbus read from %x", be16_to_cpu(t->smbus_reg)); + break; + case 3: + printf("smbus write to %x", be16_to_cpu(t->smbus_reg)); + break; + default: + printf("u wot?"); + } + + printf(", rc = %hd\n", (int16_t) be16_to_cpu(t->rc)); +} + static void load_traces(struct trace_reader *trs, int count) { struct trace_entry *te; @@ -189,6 +219,9 @@ static void print_trace(union trace *t) case TRACE_UART: dump_uart(&t->uart); break; + case TRACE_I2C: + dump_i2c(&t->i2c); + break; default: printf("UNKNOWN(%u) CPU %u length %u\n", t->hdr.type, be16_to_cpu(t->hdr.cpu), |