Use sd_mode_name() to pretty-print the SDCardMode.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
hw/sd/sd.c | 16 +++++++++++++++-
hw/sd/trace-events | 3 +++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 2c0f8a7dbd..465d254f2e 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -40,6 +40,7 @@
#include "qemu/timer.h"
#include "qemu/log.h"
#include "sd-internal.h"
+#include "trace.h"
//#define DEBUG_SD 1
@@ -128,9 +129,22 @@ struct SDState {
bool enable;
};
+static const char *sd_mode_name(enum SDCardModes mode)
+{
+ static const char *mode_name[] = {
+ [sd_inactive] = "inactive",
+ [sd_card_identification_mode] = "card_identification",
+ [sd_data_transfer_mode] = "data_transfer",
+ };
+ return mode_name[mode];
+}
+
static void sd_set_mode(SDState *sd, enum SDCardModes mode)
{
- sd->mode = mode;
+ if (sd->mode != mode) {
+ trace_sdcard_set_mode(sd_mode_name(sd->mode), sd_mode_name(mode));
+ sd->mode = mode;
+ }
}
static void sd_update_mode(SDState *sd)
diff --git a/hw/sd/trace-events b/hw/sd/trace-events
index 6b1dc7380f..369d258d10 100644
--- a/hw/sd/trace-events
+++ b/hw/sd/trace-events
@@ -21,6 +21,9 @@ sdhci_read_dataport(uint16_t data_count) "all %u bytes of data have been read fr
sdhci_write_dataport(uint16_t data_count) "write buffer filled with %u bytes of data"
sdhci_led(bool state) "LED: %u"
+# hw/sd/sd.c
+sdcard_set_mode(const char *current_mode, const char *new_mode) "%s -> %s"
+
# hw/sd/milkymist-memcard.c
milkymist_memcard_memory_read(uint32_t addr, uint32_t value) "addr 0x%08x value 0x%08x"
milkymist_memcard_memory_write(uint32_t addr, uint32_t value) "addr 0x%08x value 0x%08x"
--
2.15.1