Message ID | 20240730092138.32443-2-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | hw/sd: SDcard & SDHCI fixes | expand |
On 7/30/24 19:21, Philippe Mathieu-Daudé wrote: > On error the DAT lines are left unmodified to their > previous states. QEMU returns 0x00 for convenience. > > Signed-off-by: Philippe Mathieu-Daudé<philmd@linaro.org> > --- > hw/sd/sd.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/hw/sd/sd.c b/hw/sd/sd.c > index 07cb97d88c..c02f04f1ea 100644 > --- a/hw/sd/sd.c > +++ b/hw/sd/sd.c > @@ -2478,20 +2478,22 @@ void sd_write_byte(SDState *sd, uint8_t value) > uint8_t sd_read_byte(SDState *sd) > { > /* TODO: Append CRCs */ > + static const uint8_t dummy_byte = 0x00; A zero doesn't need to be static. Otherwise, Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 07cb97d88c..c02f04f1ea 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -2478,20 +2478,22 @@ void sd_write_byte(SDState *sd, uint8_t value) uint8_t sd_read_byte(SDState *sd) { /* TODO: Append CRCs */ + static const uint8_t dummy_byte = 0x00; uint8_t ret; uint32_t io_len; if (!sd->blk || !blk_is_inserted(sd->blk) || !sd->enable) - return 0x00; + return dummy_byte; if (sd->state != sd_sendingdata_state) { qemu_log_mask(LOG_GUEST_ERROR, "%s: not in Sending-Data state\n", __func__); - return 0x00; + return dummy_byte; } - if (sd->card_status & (ADDRESS_ERROR | WP_VIOLATION)) - return 0x00; + if (sd->card_status & (ADDRESS_ERROR | WP_VIOLATION)) { + return dummy_byte; + } io_len = sd_blk_len(sd); @@ -2517,7 +2519,7 @@ uint8_t sd_read_byte(SDState *sd) if (sd->data_offset == 0) { if (!address_in_range(sd, "READ_MULTIPLE_BLOCK", sd->data_start, io_len)) { - return 0x00; + return dummy_byte; } sd_blk_read(sd, sd->data_start, io_len); }
On error the DAT lines are left unmodified to their previous states. QEMU returns 0x00 for convenience. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- hw/sd/sd.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)