diff mbox series

[v42,46/98] hw/sd/sdcard: Register Security Extension optional handlers

Message ID 20240628070216.92609-47-philmd@linaro.org
State Superseded
Headers show
Series hw/sd/sdcard: Add eMMC support | expand

Commit Message

Philippe Mathieu-Daudé June 28, 2024, 7:01 a.m. UTC
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(-)

Comments

Cédric Le Goater June 28, 2024, 7:56 a.m. UTC | #1
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 mbox series

Patch

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},
     },