qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PULL 14/31] hw/i2c: Add trace events
Date: Fri,  8 Jun 2018 13:45:00 +0100	[thread overview]
Message-ID: <20180608124517.29475-15-peter.maydell@linaro.org> (raw)
In-Reply-To: <20180608124517.29475-1-peter.maydell@linaro.org>

From: Philippe Mathieu-Daudé <f4bug@amsat.org>

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-id: 20180606191801.6331-1-f4bug@amsat.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 Makefile.objs       |  1 +
 hw/i2c/core.c       | 25 ++++++++++++++++++-------
 hw/i2c/trace-events |  7 +++++++
 3 files changed, 26 insertions(+), 7 deletions(-)
 create mode 100644 hw/i2c/trace-events

diff --git a/Makefile.objs b/Makefile.objs
index 2c8cb72407a..7a9828da282 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -213,6 +213,7 @@ trace-events-subdirs += hw/char
 trace-events-subdirs += hw/display
 trace-events-subdirs += hw/dma
 trace-events-subdirs += hw/hppa
+trace-events-subdirs += hw/i2c
 trace-events-subdirs += hw/i386
 trace-events-subdirs += hw/i386/xen
 trace-events-subdirs += hw/ide
diff --git a/hw/i2c/core.c b/hw/i2c/core.c
index ab72d5bf2bf..b54725985a4 100644
--- a/hw/i2c/core.c
+++ b/hw/i2c/core.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/i2c/i2c.h"
+#include "trace.h"
 
 #define I2C_BROADCAST 0x00
 
@@ -130,14 +131,16 @@ int i2c_start_transfer(I2CBus *bus, uint8_t address, int recv)
     }
 
     QLIST_FOREACH(node, &bus->current_devs, next) {
+        I2CSlave *s = node->elt;
         int rv;
 
-        sc = I2C_SLAVE_GET_CLASS(node->elt);
+        sc = I2C_SLAVE_GET_CLASS(s);
         /* If the bus is already busy, assume this is a repeated
            start condition.  */
 
         if (sc->event) {
-            rv = sc->event(node->elt, recv ? I2C_START_RECV : I2C_START_SEND);
+            trace_i2c_event("start", s->address);
+            rv = sc->event(s, recv ? I2C_START_RECV : I2C_START_SEND);
             if (rv && !bus->broadcast) {
                 if (bus_scanned) {
                     /* First call, terminate the transfer. */
@@ -156,9 +159,11 @@ void i2c_end_transfer(I2CBus *bus)
     I2CNode *node, *next;
 
     QLIST_FOREACH_SAFE(node, &bus->current_devs, next, next) {
-        sc = I2C_SLAVE_GET_CLASS(node->elt);
+        I2CSlave *s = node->elt;
+        sc = I2C_SLAVE_GET_CLASS(s);
         if (sc->event) {
-            sc->event(node->elt, I2C_FINISH);
+            trace_i2c_event("finish", s->address);
+            sc->event(s, I2C_FINISH);
         }
         QLIST_REMOVE(node, next);
         g_free(node);
@@ -169,14 +174,17 @@ void i2c_end_transfer(I2CBus *bus)
 int i2c_send_recv(I2CBus *bus, uint8_t *data, bool send)
 {
     I2CSlaveClass *sc;
+    I2CSlave *s;
     I2CNode *node;
     int ret = 0;
 
     if (send) {
         QLIST_FOREACH(node, &bus->current_devs, next) {
-            sc = I2C_SLAVE_GET_CLASS(node->elt);
+            s = node->elt;
+            sc = I2C_SLAVE_GET_CLASS(s);
             if (sc->send) {
-                ret = ret || sc->send(node->elt, *data);
+                trace_i2c_send(s->address, *data);
+                ret = ret || sc->send(s, *data);
             } else {
                 ret = -1;
             }
@@ -189,7 +197,9 @@ int i2c_send_recv(I2CBus *bus, uint8_t *data, bool send)
 
         sc = I2C_SLAVE_GET_CLASS(QLIST_FIRST(&bus->current_devs)->elt);
         if (sc->recv) {
-            ret = sc->recv(QLIST_FIRST(&bus->current_devs)->elt);
+            s = QLIST_FIRST(&bus->current_devs)->elt;
+            ret = sc->recv(s);
+            trace_i2c_recv(s->address, ret);
             if (ret < 0) {
                 return ret;
             } else {
@@ -226,6 +236,7 @@ void i2c_nack(I2CBus *bus)
     QLIST_FOREACH(node, &bus->current_devs, next) {
         sc = I2C_SLAVE_GET_CLASS(node->elt);
         if (sc->event) {
+            trace_i2c_event("nack", node->elt->address);
             sc->event(node->elt, I2C_NACK);
         }
     }
diff --git a/hw/i2c/trace-events b/hw/i2c/trace-events
new file mode 100644
index 00000000000..d339b612021
--- /dev/null
+++ b/hw/i2c/trace-events
@@ -0,0 +1,7 @@
+# See docs/devel/tracing.txt for syntax documentation.
+
+# hw/i2c/core.c
+
+i2c_event(const char *event, uint8_t address) "%s(addr:0x%02x)"
+i2c_send(uint8_t address, uint8_t data) "send(addr:0x%02x) data:0x%02x"
+i2c_recv(uint8_t address, uint8_t data) "recv(addr:0x%02x) data:0x%02x"
-- 
2.17.1

  parent reply	other threads:[~2018-06-08 12:45 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-08 12:44 [Qemu-devel] [PULL 00/31] target-arm queue Peter Maydell
2018-06-08 12:44 ` [Qemu-devel] [PULL 01/31] arm_gicv3_kvm: kvm_dist_get/put: skip the registers banked by GICR Peter Maydell
2018-06-08 12:44 ` [Qemu-devel] [PULL 02/31] aspeed: remove ignore_memory_transaction_failures on all boards Peter Maydell
2018-06-08 12:44 ` [Qemu-devel] [PULL 03/31] aspeed: add support for the witherspoon-bmc board Peter Maydell
2018-06-08 12:44 ` [Qemu-devel] [PULL 04/31] aspeed: add an I2C RTC device to all machines Peter Maydell
2018-06-08 12:44 ` [Qemu-devel] [PULL 05/31] smbus: add a smbus_eeprom_init_one() routine Peter Maydell
2018-06-08 12:44 ` [Qemu-devel] [PULL 06/31] aspeed: Add EEPROM I2C devices Peter Maydell
2018-06-08 12:44 ` [Qemu-devel] [PULL 07/31] misc: add pca9552 LED blinker model Peter Maydell
2018-06-08 12:44 ` [Qemu-devel] [PULL 08/31] aspeed: add the pc9552 chips to the witherspoon machine Peter Maydell
2018-06-08 12:44 ` [Qemu-devel] [PULL 09/31] ftgmac100: compute maximum frame size depending on the protocol Peter Maydell
2018-06-08 12:44 ` [Qemu-devel] [PULL 10/31] ftgmac100: add IEEE 802.1Q VLAN support Peter Maydell
2018-06-08 12:44 ` [Qemu-devel] [PULL 11/31] ftgmac100: fix multicast hash routine Peter Maydell
2018-06-08 12:44 ` [Qemu-devel] [PULL 12/31] ftgmac100: remove check on runt messages Peter Maydell
2018-06-08 12:44 ` [Qemu-devel] [PULL 13/31] hw/arm: Remove the deprecated xlnx-ep108 machine Peter Maydell
2018-06-08 12:45 ` Peter Maydell [this message]
2018-06-08 12:45 ` [Qemu-devel] [PULL 15/31] hw/sd/milkymist-memcard: Add trailing '\n' to qemu_log() call Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 16/31] hw/digic: Add trailing '\n' to qemu_log() calls Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 17/31] xilinx-dp: Add trailing '\n' to qemu_log() call Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 18/31] ppc/pnv: Add trailing '\n' to qemu_log() calls Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 19/31] hw/core/register: Add trailing '\n' to qemu_log() call Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 20/31] hw/mips/boston: Add trailing '\n' to qemu_log() calls Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 21/31] stellaris: " Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 22/31] target/arm: " Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 23/31] target/m68k: Add trailing '\n' to qemu_log() call Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 24/31] RISC-V: Add trailing '\n' to qemu_log() calls Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 25/31] target/xtensa: " Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 26/31] sdcard: Update the Configuration Register (SCR) to Spec Version 1.10 Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 27/31] sdcard: Allow commands valid in SPI mode Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 28/31] sdcard: Add a 'spec_version' property, default to Spec v2.00 Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 29/31] sdcard: Disable SEND_IF_COND (CMD8) for Spec v1 Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 30/31] sdcard: Reflect when the Spec v3 is supported in the Config Register (SCR) Peter Maydell
2018-06-08 12:45 ` [Qemu-devel] [PULL 31/31] sdcard: Disable CMD19/CMD23 for Spec v2 Peter Maydell
2018-06-11 10:12 ` [Qemu-devel] [PULL 00/31] target-arm queue Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180608124517.29475-15-peter.maydell@linaro.org \
    --to=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).