Message ID | 20240628070216.92609-46-philmd@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | hw/sd/sdcard: Add eMMC support | expand |
On 6/28/24 9:01 AM, Philippe Mathieu-Daudé wrote: > See "SD Input/Output Card Specification" v1.00. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Cédric Le Goater <clg@redhat.com> Thanks, C. > --- > hw/sd/sd.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/hw/sd/sd.c b/hw/sd/sd.c > index 406fadb3b4..87bfd0fd56 100644 > --- a/hw/sd/sd.c > +++ b/hw/sd/sd.c > @@ -240,7 +240,6 @@ static const char *sd_response_name(sd_rsp_type_t rsp) > static const char *sd_cmd_name(SDState *sd, uint8_t cmd) > { > static const char *cmd_abbrev[SDMMC_CMD_MAX] = { > - [5] = "IO_SEND_OP_COND", > [6] = "SWITCH_FUNC", [7] = "SELECT/DESELECT_CARD", > [8] = "SEND_IF_COND", [9] = "SEND_CSD", > [10] = "SEND_CID", > @@ -260,7 +259,6 @@ static const char *sd_cmd_name(SDState *sd, uint8_t cmd) > [40] = "DPS_spec", > [42] = "LOCK_UNLOCK", > [50] = "SW_FUNC_RSVD", > - [52] = "IO_RW_DIRECT", [53] = "IO_RW_EXTENDED", > [54] = "SDIO_RSVD", [55] = "APP_CMD", > [56] = "GEN_CMD", [57] = "SW_FUNC_RSVD", > [60] = "MANUF_RSVD", [61] = "MANUF_RSVD", > @@ -2270,6 +2268,9 @@ static const SDProto sd_proto_spi = { > .cmd = { > [0] = {0, sd_spi, "GO_IDLE_STATE", sd_cmd_GO_IDLE_STATE}, > [1] = {0, sd_spi, "SEND_OP_COND", spi_cmd_SEND_OP_COND}, > + [5] = {9, sd_spi, "IO_SEND_OP_COND", sd_cmd_optional}, > + [52] = {9, sd_spi, "IO_RW_DIRECT", sd_cmd_optional}, > + [53] = {9, sd_spi, "IO_RW_EXTENDED", sd_cmd_optional}, > }, > .acmd = { > [41] = {8, sd_spi, "SEND_OP_COND", spi_cmd_SEND_OP_COND}, > @@ -2283,6 +2284,7 @@ static const SDProto sd_proto_sd = { > [2] = {0, sd_bcr, "ALL_SEND_CID", sd_cmd_ALL_SEND_CID}, > [3] = {0, sd_bcr, "SEND_RELATIVE_ADDR", sd_cmd_SEND_RELATIVE_ADDR}, > [4] = {0, sd_bc, "SEND_DSR", sd_cmd_unimplemented}, > + [5] = {9, sd_bc, "IO_SEND_OP_COND", sd_cmd_optional}, > [11] = {0, sd_ac, "VOLTAGE_SWITCH", sd_cmd_optional}, > [19] = {2, sd_adtc, "SEND_TUNING_BLOCK", sd_cmd_SEND_TUNING_BLOCK}, > [20] = {2, sd_ac, "SPEED_CLASS_CONTROL", sd_cmd_optional}, > @@ -2294,6 +2296,8 @@ static const SDProto sd_proto_sd = { > [47] = {1, sd_adtc, "Q_WR_TASK", sd_cmd_optional}, > [48] = {1, sd_adtc, "READ_EXTR_SINGLE", sd_cmd_optional}, > [49] = {1, sd_adtc, "WRITE_EXTR_SINGLE", sd_cmd_optional}, > + [52] = {9, sd_bc, "IO_RW_DIRECT", sd_cmd_optional}, > + [53] = {9, sd_bc, "IO_RW_EXTENDED", sd_cmd_optional}, > [58] = {11, sd_adtc, "READ_EXTR_MULTI", sd_cmd_optional}, > [59] = {11, sd_adtc, "WRITE_EXTR_MULTI", sd_cmd_optional}, > },
diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 406fadb3b4..87bfd0fd56 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -240,7 +240,6 @@ static const char *sd_response_name(sd_rsp_type_t rsp) static const char *sd_cmd_name(SDState *sd, uint8_t cmd) { static const char *cmd_abbrev[SDMMC_CMD_MAX] = { - [5] = "IO_SEND_OP_COND", [6] = "SWITCH_FUNC", [7] = "SELECT/DESELECT_CARD", [8] = "SEND_IF_COND", [9] = "SEND_CSD", [10] = "SEND_CID", @@ -260,7 +259,6 @@ static const char *sd_cmd_name(SDState *sd, uint8_t cmd) [40] = "DPS_spec", [42] = "LOCK_UNLOCK", [50] = "SW_FUNC_RSVD", - [52] = "IO_RW_DIRECT", [53] = "IO_RW_EXTENDED", [54] = "SDIO_RSVD", [55] = "APP_CMD", [56] = "GEN_CMD", [57] = "SW_FUNC_RSVD", [60] = "MANUF_RSVD", [61] = "MANUF_RSVD", @@ -2270,6 +2268,9 @@ static const SDProto sd_proto_spi = { .cmd = { [0] = {0, sd_spi, "GO_IDLE_STATE", sd_cmd_GO_IDLE_STATE}, [1] = {0, sd_spi, "SEND_OP_COND", spi_cmd_SEND_OP_COND}, + [5] = {9, sd_spi, "IO_SEND_OP_COND", sd_cmd_optional}, + [52] = {9, sd_spi, "IO_RW_DIRECT", sd_cmd_optional}, + [53] = {9, sd_spi, "IO_RW_EXTENDED", sd_cmd_optional}, }, .acmd = { [41] = {8, sd_spi, "SEND_OP_COND", spi_cmd_SEND_OP_COND}, @@ -2283,6 +2284,7 @@ static const SDProto sd_proto_sd = { [2] = {0, sd_bcr, "ALL_SEND_CID", sd_cmd_ALL_SEND_CID}, [3] = {0, sd_bcr, "SEND_RELATIVE_ADDR", sd_cmd_SEND_RELATIVE_ADDR}, [4] = {0, sd_bc, "SEND_DSR", sd_cmd_unimplemented}, + [5] = {9, sd_bc, "IO_SEND_OP_COND", sd_cmd_optional}, [11] = {0, sd_ac, "VOLTAGE_SWITCH", sd_cmd_optional}, [19] = {2, sd_adtc, "SEND_TUNING_BLOCK", sd_cmd_SEND_TUNING_BLOCK}, [20] = {2, sd_ac, "SPEED_CLASS_CONTROL", sd_cmd_optional}, @@ -2294,6 +2296,8 @@ static const SDProto sd_proto_sd = { [47] = {1, sd_adtc, "Q_WR_TASK", sd_cmd_optional}, [48] = {1, sd_adtc, "READ_EXTR_SINGLE", sd_cmd_optional}, [49] = {1, sd_adtc, "WRITE_EXTR_SINGLE", sd_cmd_optional}, + [52] = {9, sd_bc, "IO_RW_DIRECT", sd_cmd_optional}, + [53] = {9, sd_bc, "IO_RW_EXTENDED", sd_cmd_optional}, [58] = {11, sd_adtc, "READ_EXTR_MULTI", sd_cmd_optional}, [59] = {11, sd_adtc, "WRITE_EXTR_MULTI", sd_cmd_optional}, },
See "SD Input/Output Card Specification" v1.00. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- hw/sd/sd.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)