aboutsummaryrefslogtreecommitdiff
path: root/hw/sd
diff options
context:
space:
mode:
authorPhilippe Mathieu-Daudé <philmd@linaro.org>2024-06-20 09:43:26 +0200
committerPhilippe Mathieu-Daudé <philmd@linaro.org>2024-07-02 09:20:36 +0200
commit2ec83d679e1900aee7ac38f2a9acd6debae05557 (patch)
treee88e8268609aa86b4b7c40a1f22b6bf65c2460e3 /hw/sd
parentc159de66f29f7f0e6f7739d8722b54e0cb3cb971 (diff)
downloadqemu-2ec83d679e1900aee7ac38f2a9acd6debae05557.zip
qemu-2ec83d679e1900aee7ac38f2a9acd6debae05557.tar.gz
qemu-2ec83d679e1900aee7ac38f2a9acd6debae05557.tar.bz2
hw/sd/sdcard: Trace requested address computed by sd_req_get_address()
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Tested-by: Cédric Le Goater <clg@redhat.com> Reviewed-by: Luc Michel <luc.michel@amd.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Message-Id: <20240628070216.92609-6-philmd@linaro.org>
Diffstat (limited to 'hw/sd')
-rw-r--r--hw/sd/sd.c9
-rw-r--r--hw/sd/trace-events1
2 files changed, 8 insertions, 2 deletions
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index bed5966..396185f 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -608,10 +608,15 @@ static void sd_response_r7_make(SDState *sd, uint8_t *response)
static uint64_t sd_req_get_address(SDState *sd, SDRequest req)
{
+ uint64_t addr;
+
if (FIELD_EX32(sd->ocr, OCR, CARD_CAPACITY)) {
- return (uint64_t) req.arg << HWBLOCK_SHIFT;
+ addr = (uint64_t) req.arg << HWBLOCK_SHIFT;
+ } else {
+ addr = req.arg;
}
- return req.arg;
+ trace_sdcard_req_addr(req.arg, addr);
+ return addr;
}
static inline uint64_t sd_addr_to_wpnum(uint64_t addr)
diff --git a/hw/sd/trace-events b/hw/sd/trace-events
index 0eee98a..43eaeba 100644
--- a/hw/sd/trace-events
+++ b/hw/sd/trace-events
@@ -50,6 +50,7 @@ sdcard_ejected(void) ""
sdcard_erase(uint32_t first, uint32_t last) "addr first 0x%" PRIx32" last 0x%" PRIx32
sdcard_lock(void) ""
sdcard_unlock(void) ""
+sdcard_req_addr(uint32_t req_arg, uint64_t addr) "req 0x%" PRIx32 " addr 0x%" PRIx64
sdcard_read_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x"
sdcard_write_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x"
sdcard_write_data(const char *proto, const char *cmd_desc, uint8_t cmd, uint32_t offset, uint8_t value) "%s %20s/ CMD%02d ofs %"PRIu32" value 0x%02x"