On 6/28/24 9:00 AM, Philippe Mathieu-Daudé wrote:
> Cédric asked for one big series to review instead of
> various tiny ones...
Thanks for all this work !
> I plan to send a pull request before v9.1 soft freeze
> with at least patches 1-81 (prerequisistes before the
> "Basis for eMMC support" patch) except qtest patch #15.
I will scheme through the series for obvious flaws.
Unfortunately, I can not review for 82-98 adding the eMMC part, we will
need someone else for that. Adding Aspeed engineers.
Anyhow,
Tested-by: Cédric Le Goater <clg@redhat.com>
> Also available as:
> https://gitlab.com/philmd/qemu/-/commits/emmc-testing/
Thanks,
C.
>
> Cédric Le Goater (5):
> hw/sd/sdcard: Introduce definitions for EXT_CSD register
> hw/sd/sdcard: Add emmc_cmd_SET_RELATIVE_ADDR() handler
> hw/sd/sdcard: Fix SET_BLOCK_COUNT command argument on eMMC (CMD23)
> hw/sd/sdcard: Adapt sd_cmd_ALL_SEND_CID handler for eMMC (CMD2)
> hw/sd/sdcard: Adapt sd_cmd_APP_CMD handler for eMMC (CMD55)
>
> Joel Stanley (3):
> hw/sd/sdcard: Support boot area in emmc image
> hw/sd/sdcard: Subtract bootarea size from blk
> hw/sd/sdcard: Add boot config support
>
> Luc Michel (1):
> hw/sd/sdcard: Implement eMMC sleep state (CMD5)
>
> Philippe Mathieu-Daudé (85):
> hw/sd/sdcard: Deprecate support for spec v1.10
> hw/sd/sdcard: Use spec v3.01 by default
> hw/sd/sdcard: Track last command used to help logging
> hw/sd/sdcard: Trace block offset in READ/WRITE data accesses
> hw/sd/sdcard: Trace requested address computed by sd_req_get_address()
> hw/sd/sdcard: Do not store vendor data on block drive (CMD56)
> hw/sd/sdcard: Send WRITE_PROT bits MSB first (CMD30)
> hw/sd/sdcard: Send NUM_WR_BLOCKS bits MSB first (ACMD22)
> hw/sd/sdcard: Use READY_FOR_DATA definition instead of magic value
> hw/sd/sdcard: Assign SDCardStates enum values
> hw/sd/sdcard: Simplify sd_inactive_state handling
> hw/sd/sdcard: Restrict SWITCH_FUNCTION to sd_transfer_state (CMD6)
> hw/sd/sdcard: Add direct reference to SDProto in SDState
> hw/sd/sdcard: Extract sd_blk_len() helper
> tests/qtest: Disable npcm7xx_sdhci tests using hardcoded RCA
> hw/sd/sdcard: Generate random RCA value
> hw/sd/sdcard: Introduce sd_cmd_to_sendingdata and sd_generic_read_byte
> hw/sd/sdcard: Convert SWITCH_FUNCTION to generic_read_byte (CMD6)
> hw/sd/sdcard: Convert SEND_CSD/SEND_CID to generic_read_byte (CMD9 &
> 10)
> hw/sd/sdcard: Duplicate READ_SINGLE_BLOCK / READ_MULTIPLE_BLOCK cases
> hw/sd/sdcard: Convert READ_SINGLE_BLOCK to generic_read_byte (CMD17)
> hw/sd/sdcard: Convert SEND_TUNING_BLOCK to generic_read_byte (CMD19)
> hw/sd/sdcard: Convert SEND_WRITE_PROT to generic_read_byte (CMD30)
> hw/sd/sdcard: Convert GEN_CMD to generic_read_byte (CMD56)
> hw/sd/sdcard: Convert SD_STATUS to generic_read_byte (ACMD13)
> hw/sd/sdcard: Convert SEND_NUM_WR_BLOCKS to generic_read_byte (ACMD22)
> hw/sd/sdcard: Convert SEND_SCR to generic_read_byte (ACMD51)
> 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/sdcard: Move sd_[a]cmd_name() methods to sd.c
> hw/sd/sdcard: Pass SDState as argument to sd_[a]cmd_name()
> hw/sd/sdcard: Prepare SDProto to contain more fields
> hw/sd/sdcard: Store command name in SDProto
> hw/sd/sdcard: Store command type in SDProto
> hw/sd/sdcard: Store command class in SDProto
> hw/sd/sdcard: Remove SEND_DSR dead case (CMD4)
> hw/sd/sdcard: Register generic optional handlers (CMD11 and CMD20)
> hw/sd/sdcard: Register optional handlers from spec v6.00
> hw/sd/sdcard: Register SDIO optional handlers
> hw/sd/sdcard: Register Security Extension optional handlers
> hw/sd/sdcard: Add sd_cmd_SWITCH_FUNCTION handler (CMD6)
> hw/sd/sdcard: Add sd_cmd_DE/SELECT_CARD handler (CMD7)
> hw/sd/sdcard: Add sd_cmd_SEND_IF_COND handler (CMD8)
> hw/sd/sdcard: Add sd_cmd_SEND_CSD/CID handlers (CMD9 & CMD10)
> hw/sd/sdcard: Add spi_cmd_SEND_CSD/CID handlers (CMD9 & CMD10)
> hw/sd/sdcard: Add sd_cmd_STOP_TRANSMISSION handler (CMD12)
> hw/sd/sdcard: Add sd_cmd_SEND_STATUS handler (CMD13)
> hw/sd/sdcard: Add sd_cmd_GO_INACTIVE_STATE handler (CMD15)
> hw/sd/sdcard: Add sd_cmd_SET_BLOCKLEN handler (CMD16)
> hw/sd/sdcard: Add sd_cmd_READ_SINGLE_BLOCK handler (CMD17)
> hw/sd/sdcard: Add sd_cmd_WRITE_SINGLE_BLOCK handler (CMD24)
> hw/sd/sdcard: Add sd_cmd_PROGRAM_CSD handler (CMD27)
> hw/sd/sdcard: Add sd_cmd_SET/CLR_WRITE_PROT handler (CMD28 & CMD29)
> hw/sd/sdcard: Add sd_cmd_SEND_WRITE_PROT handler (CMD30)
> hw/sd/sdcard: Add sd_cmd_ERASE_WR_BLK_START/END handlers (CMD32 &
> CMD33)
> hw/sd/sdcard: Add sd_cmd_ERASE handler (CMD38)
> hw/sd/sdcard: Add sd_cmd_LOCK_UNLOCK handler (CMD42)
> hw/sd/sdcard: Add sd_cmd_APP_CMD handler (CMD55)
> hw/sd/sdcard: Add sd_cmd_GEN_CMD handler (CMD56)
> hw/sd/sdcard: Add spi_cmd_READ_OCR handler (CMD58)
> hw/sd/sdcard: Add spi_cmd_CRC_ON_OFF handler (CMD59)
> hw/sd/sdcard: Add sd_acmd_SET_BUS_WIDTH handler (ACMD6)
> hw/sd/sdcard: Add sd_acmd_SD_STATUS handler (ACMD13)
> hw/sd/sdcard: Add sd_acmd_SEND_NUM_WR_BLOCKS handler (ACMD22)
> hw/sd/sdcard: Add sd_acmd_SET_WR_BLK_ERASE_COUNT handler (ACMD23)
> hw/sd/sdcard: Add sd_acmd_SD_APP_OP_COND handler (ACMD41)
> hw/sd/sdcard: Add sd_acmd_SET_CLR_CARD_DETECT handler (ACMD42)
> hw/sd/sdcard: Add sd_acmd_SEND_SCR handler (ACMD51)
> hw/sd/sdcard: Remove sd_none enum from sd_cmd_type_t
> hw/sd/sdcard: Remove noise from sd_acmd_name()
> hw/sd/sdcard: Remove noise from sd_cmd_name()
> hw/sd/sdcard: Remove default case in read/write on DAT lines
> hw/sd/sdcard: Trace length of data read on DAT lines
> hw/sd/sdcard: Introduce set_csd/set_cid handlers
> hw/sd/sdcard: Cover more SDCardStates
> hw/sd/sdcard: Basis for eMMC support
> hw/sd/sdcard: Register generic command handlers
> hw/sd/sdcard: Register unimplemented command handlers
> hw/sd/sdcard: Add mmc_cmd_PROGRAM_CID handler (CMD26)
> hw/sd/sdcard: Add experimental 'x-aspeed-emmc-kludge' property
>
> Sai Pavan Boddu (3):
> hw/sd/sdcard: Add emmc_cmd_SEND_OP_COND handler (CMD1)
> hw/sd/sdcard: add emmc_cmd_SEND_TUNING_BLOCK handler (CMD21)
> hw/sd/sdcard: Add mmc SWITCH function support (CMD6)
>
> Vincent Palatin (1):
> hw/sd/sdcard: Add emmc_cmd_SEND_EXT_CSD handler (CMD8)
>
> docs/about/deprecated.rst | 6 +
> hw/sd/sdmmc-internal.h | 118 +-
> include/hw/sd/sd.h | 10 +-
> hw/sd/sd.c | 1917 +++++++++++++++++++-----------
> hw/sd/sdmmc-internal.c | 72 --
> tests/qtest/npcm7xx_sdhci-test.c | 7 +
> hw/sd/meson.build | 2 +-
> hw/sd/trace-events | 6 +-
> 8 files changed, 1362 insertions(+), 776 deletions(-)
> delete mode 100644 hw/sd/sdmmc-internal.c
>