Message ID | 20240628070216.92609-47-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 "Advanced Security SD Extension Specification" v2.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 | 17 +++++++++++++---- > 1 file changed, 13 insertions(+), 4 deletions(-) > > diff --git a/hw/sd/sd.c b/hw/sd/sd.c > index 87bfd0fd56..e4941cfdab 100644 > --- a/hw/sd/sd.c > +++ b/hw/sd/sd.c > @@ -253,14 +253,11 @@ static const char *sd_cmd_name(SDState *sd, uint8_t cmd) > [28] = "SET_WRITE_PROT", [29] = "CLR_WRITE_PROT", > [30] = "SEND_WRITE_PROT", > [32] = "ERASE_WR_BLK_START", [33] = "ERASE_WR_BLK_END", > - [34] = "SW_FUNC_RSVD", [35] = "SW_FUNC_RSVD", > - [36] = "SW_FUNC_RSVD", [37] = "SW_FUNC_RSVD", > [38] = "ERASE", > [40] = "DPS_spec", > [42] = "LOCK_UNLOCK", > - [50] = "SW_FUNC_RSVD", > [54] = "SDIO_RSVD", [55] = "APP_CMD", > - [56] = "GEN_CMD", [57] = "SW_FUNC_RSVD", > + [56] = "GEN_CMD", > [60] = "MANUF_RSVD", [61] = "MANUF_RSVD", > [62] = "MANUF_RSVD", [63] = "MANUF_RSVD", > }; > @@ -2269,8 +2266,14 @@ static const SDProto sd_proto_spi = { > [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}, > + [34] = {10, sd_spi, "READ_SEC_CMD", sd_cmd_optional}, > + [35] = {10, sd_spi, "WRITE_SEC_CMD", sd_cmd_optional}, > + [36] = {10, sd_spi, "SEND_PSI", sd_cmd_optional}, > + [37] = {10, sd_spi, "CONTROL_ASSD_SYSTEM", sd_cmd_optional}, > + [50] = {10, sd_spi, "DIRECT_SECURE_READ", sd_cmd_optional}, > [52] = {9, sd_spi, "IO_RW_DIRECT", sd_cmd_optional}, > [53] = {9, sd_spi, "IO_RW_EXTENDED", sd_cmd_optional}, > + [57] = {10, sd_spi, "DIRECT_SECURE_WRITE", sd_cmd_optional}, > }, > .acmd = { > [41] = {8, sd_spi, "SEND_OP_COND", spi_cmd_SEND_OP_COND}, > @@ -2289,6 +2292,10 @@ static const SDProto sd_proto_sd = { > [19] = {2, sd_adtc, "SEND_TUNING_BLOCK", sd_cmd_SEND_TUNING_BLOCK}, > [20] = {2, sd_ac, "SPEED_CLASS_CONTROL", sd_cmd_optional}, > [23] = {2, sd_ac, "SET_BLOCK_COUNT", sd_cmd_SET_BLOCK_COUNT}, > + [34] = {10, sd_adtc, "READ_SEC_CMD", sd_cmd_optional}, > + [35] = {10, sd_adtc, "WRITE_SEC_CMD", sd_cmd_optional}, > + [36] = {10, sd_adtc, "SEND_PSI", sd_cmd_optional}, > + [37] = {10, sd_ac, "CONTROL_ASSD_SYSTEM", sd_cmd_optional}, > [43] = {1, sd_ac, "Q_MANAGEMENT", sd_cmd_optional}, > [44] = {1, sd_ac, "Q_TASK_INFO_A", sd_cmd_optional}, > [45] = {1, sd_ac, "Q_TASK_INFO_B", sd_cmd_optional}, > @@ -2296,8 +2303,10 @@ 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}, > + [50] = {10, sd_adtc, "DIRECT_SECURE_READ", sd_cmd_optional}, > [52] = {9, sd_bc, "IO_RW_DIRECT", sd_cmd_optional}, > [53] = {9, sd_bc, "IO_RW_EXTENDED", sd_cmd_optional}, > + [57] = {10, sd_adtc, "DIRECT_SECURE_WRITE", 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 87bfd0fd56..e4941cfdab 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -253,14 +253,11 @@ static const char *sd_cmd_name(SDState *sd, uint8_t cmd) [28] = "SET_WRITE_PROT", [29] = "CLR_WRITE_PROT", [30] = "SEND_WRITE_PROT", [32] = "ERASE_WR_BLK_START", [33] = "ERASE_WR_BLK_END", - [34] = "SW_FUNC_RSVD", [35] = "SW_FUNC_RSVD", - [36] = "SW_FUNC_RSVD", [37] = "SW_FUNC_RSVD", [38] = "ERASE", [40] = "DPS_spec", [42] = "LOCK_UNLOCK", - [50] = "SW_FUNC_RSVD", [54] = "SDIO_RSVD", [55] = "APP_CMD", - [56] = "GEN_CMD", [57] = "SW_FUNC_RSVD", + [56] = "GEN_CMD", [60] = "MANUF_RSVD", [61] = "MANUF_RSVD", [62] = "MANUF_RSVD", [63] = "MANUF_RSVD", }; @@ -2269,8 +2266,14 @@ static const SDProto sd_proto_spi = { [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}, + [34] = {10, sd_spi, "READ_SEC_CMD", sd_cmd_optional}, + [35] = {10, sd_spi, "WRITE_SEC_CMD", sd_cmd_optional}, + [36] = {10, sd_spi, "SEND_PSI", sd_cmd_optional}, + [37] = {10, sd_spi, "CONTROL_ASSD_SYSTEM", sd_cmd_optional}, + [50] = {10, sd_spi, "DIRECT_SECURE_READ", sd_cmd_optional}, [52] = {9, sd_spi, "IO_RW_DIRECT", sd_cmd_optional}, [53] = {9, sd_spi, "IO_RW_EXTENDED", sd_cmd_optional}, + [57] = {10, sd_spi, "DIRECT_SECURE_WRITE", sd_cmd_optional}, }, .acmd = { [41] = {8, sd_spi, "SEND_OP_COND", spi_cmd_SEND_OP_COND}, @@ -2289,6 +2292,10 @@ static const SDProto sd_proto_sd = { [19] = {2, sd_adtc, "SEND_TUNING_BLOCK", sd_cmd_SEND_TUNING_BLOCK}, [20] = {2, sd_ac, "SPEED_CLASS_CONTROL", sd_cmd_optional}, [23] = {2, sd_ac, "SET_BLOCK_COUNT", sd_cmd_SET_BLOCK_COUNT}, + [34] = {10, sd_adtc, "READ_SEC_CMD", sd_cmd_optional}, + [35] = {10, sd_adtc, "WRITE_SEC_CMD", sd_cmd_optional}, + [36] = {10, sd_adtc, "SEND_PSI", sd_cmd_optional}, + [37] = {10, sd_ac, "CONTROL_ASSD_SYSTEM", sd_cmd_optional}, [43] = {1, sd_ac, "Q_MANAGEMENT", sd_cmd_optional}, [44] = {1, sd_ac, "Q_TASK_INFO_A", sd_cmd_optional}, [45] = {1, sd_ac, "Q_TASK_INFO_B", sd_cmd_optional}, @@ -2296,8 +2303,10 @@ 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}, + [50] = {10, sd_adtc, "DIRECT_SECURE_READ", sd_cmd_optional}, [52] = {9, sd_bc, "IO_RW_DIRECT", sd_cmd_optional}, [53] = {9, sd_bc, "IO_RW_EXTENDED", sd_cmd_optional}, + [57] = {10, sd_adtc, "DIRECT_SECURE_WRITE", sd_cmd_optional}, [58] = {11, sd_adtc, "READ_EXTR_MULTI", sd_cmd_optional}, [59] = {11, sd_adtc, "WRITE_EXTR_MULTI", sd_cmd_optional}, },
See "Advanced Security SD Extension Specification" v2.00. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- hw/sd/sd.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-)