mbox series

[v2,0/7] hw/sd/sd: Introduce sd_cmd_to_receivingdata() / sd_generic_write_byte()

Message ID 20240627163403.81220-1-philmd@linaro.org
Headers show
Series hw/sd/sd: Introduce sd_cmd_to_receivingdata() / sd_generic_write_byte() | expand

Message

Philippe Mathieu-Daudé June 27, 2024, 4:33 p.m. UTC
Consolitate writing bytes on the DAT lines by introducing
a pair of helpers to reuse in all commands receiving data.

I'm considering adding some 'process_completed_block' callbacks
to handle the different cases in sd_write_byte(), so this
function would become:

  if (sd_generic_write_byte(sd, value)) {
      sd->proto->process_completed_block[sd->current_cmd](sd);
   }

But I ran out of time...

Full series for testing:
https://gitlab.com/philmd/qemu/-/tags/emmc-v4

Based-on: <20240627162729.80909-1-philmd@linaro.org>

Philippe Mathieu-Daudé (7):
  hw/sd/sdcard: Introduce sd_cmd_to_receivingdata /
    sd_generic_write_byte
  hw/sd/sdcard: Duplicate WRITE_SINGLE_BLOCK / WRITE_MULTIPLE_BLOCK
    cases
  hw/sd/sdcard: Convert WRITE_SINGLE_BLOCK to generic_write_byte (CMD24)
  hw/sd/sdcard: Convert PROGRAM_CID to generic_write_byte (CMD26)
  hw/sd/sdcard: Convert PROGRAM_CSD to generic_write_byte (CMD27)
  hw/sd/sdcard: Convert LOCK_UNLOCK to generic_write_byte (CMD42)
  hw/sd/sdcard: Convert GEN_CMD to generic_write_byte (CMD56)

 hw/sd/sd.c | 109 ++++++++++++++++++++++++++++++-----------------------
 1 file changed, 62 insertions(+), 47 deletions(-)