qemu/hw/sd
Vincent Palatin a1e0461995 hw/sd/sdcard: Add emmc_cmd_SEND_EXT_CSD handler (CMD8)
The parameters mimick a real 4GB eMMC, but it can be set to various
sizes.

Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Sai Pavan Boddu <sai.pavan.boddu@xilinx.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>

EXT_CSD values from Vincent's patch simplivied for Spec v4.3:

- Remove deprecated keys:
  . EXT_CSD_SEC_ERASE_MULT
  . EXT_CSD_SEC_TRIM_MULT

- Set some keys to not defined / implemented:
  . EXT_CSD_HPI_FEATURES
  . EXT_CSD_BKOPS_SUPPORT
  . EXT_CSD_SEC_FEATURE_SUPPORT
  . EXT_CSD_ERASE_TIMEOUT_MULT
  . EXT_CSD_PART_SWITCH_TIME
  . EXT_CSD_OUT_OF_INTERRUPT_TIME

- Simplify:
  . EXT_CSD_ACC_SIZE (6 -> 1)
      16KB of super_page_size -> 512B (BDRV_SECTOR_SIZE)
  . EXT_CSD_HC_ERASE_GRP_SIZE (4 -> 1)
  . EXT_CSD_HC_WP_GRP_SIZE (4 -> 1)
  . EXT_CSD_S_C_VCC[Q] (8 -> 1)
  . EXT_CSD_S_A_TIMEOUT (17 -> 1)
  . EXT_CSD_CARD_TYPE (7 -> 3)
      Dual data rate -> High-Speed mode

- Update:
  . EXT_CSD_CARD_TYPE (7 -> 3)
      High-Speed MultiMediaCard @ 26MHz & 52MHz
  . Performances (0xa -> 0x46)
      Class B at 3MB/s. -> Class J at 21MB/s
  . EXT_CSD_REV (5 -> 3)
      Rev 1.5 (spec v4.41) -> Rev 1.3 (spec v4.3)

- Use load/store API to set EXT_CSD_SEC_CNT

- Remove R/W keys, normally zeroed at reset
  . EXT_CSD_BOOT_INFO

Migrate the Modes segment (192 lower bytes) but not the
full EXT_CSD register, see Spec v4.3, chapter 8.4
"Extended CSD register":

  The Extended CSD register defines the card properties
  and selected modes. It is 512 bytes long. The most
  significant 320 bytes are the Properties segment, which
  defines the card capabilities and cannot be modified by
  the host. The lower 192 bytes are the Modes segment,
  which defines the configuration the card is working in.
  These modes can be changed by the host by means of the
  SWITCH command.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Cédric Le Goater <clg@redhat.com>
Message-Id: <20240712162719.88165-9-philmd@linaro.org>
2024-07-16 20:28:12 +02:00
..
allwinner-sdhost.c hw/sd: Constify VMState 2023-12-30 07:38:06 +11:00
aspeed_sdhci.c hw/sd: Constify VMState 2023-12-30 07:38:06 +11:00
bcm2835_sdhost.c hw/sd: Constify VMState 2023-12-30 07:38:06 +11:00
cadence_sdhci.c hw/sd: Constify VMState 2023-12-30 07:38:06 +11:00
core.c hw/sd/sdcard: Extract TYPE_SDMMC_COMMON from TYPE_SD_CARD 2024-07-05 23:55:02 +02:00
Kconfig hw/sd: Add Cadence SDHCI emulation 2020-09-09 15:54:18 -07:00
meson.build hw/sd/sdcard: Move sd_[a]cmd_name() methods to sd.c 2024-07-02 10:08:32 +02:00
npcm7xx_sdhci.c hw/sd/npcm7xx_sdhci: Use TYPE_SYSBUS_SDHCI definition 2024-07-05 23:50:12 +02:00
omap_mmc.c hw/arm/omap: Drop useless casts from void * to pointer 2023-01-12 17:15:09 +00:00
pl181.c hw/sd: Constify VMState 2023-12-30 07:38:06 +11:00
pxa2xx_mmci.c hw/sd: Constify VMState 2023-12-30 07:38:06 +11:00
sd.c hw/sd/sdcard: Add emmc_cmd_SEND_EXT_CSD handler (CMD8) 2024-07-16 20:28:12 +02:00
sdhci-internal.h hw/sd/sdhci: Support big endian SD host controller interfaces 2022-12-21 14:17:55 -03:00
sdhci-pci.c hw/sd: Declare QOM types using DEFINE_TYPES() macro 2023-11-07 13:08:49 +01:00
sdhci.c hw/sd/sdhci: Log non-sequencial access as GUEST_ERROR 2024-07-05 23:50:04 +02:00
sdmmc-internal.h hw/sd/sdcard: Extract TYPE_SDMMC_COMMON from TYPE_SD_CARD 2024-07-05 23:55:02 +02:00
ssi-sd.c hw/sd: Constify VMState 2023-12-30 07:38:06 +11:00
trace-events hw/sd/sdcard: Trace length of data read on DAT lines 2024-07-05 23:54:50 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00