diff mbox series

[v2,03/25] hw/sd: When card is in wrong state, log which spec version is used

Message ID 20220530193816.45841-4-philippe.mathieu.daude@gmail.com (mailing list archive)
State New, archived
Headers show
Series hw/sd: Rework models for eMMC support | expand

Commit Message

Philippe Mathieu-Daudé May 30, 2022, 7:37 p.m. UTC
From: Philippe Mathieu-Daudé <f4bug@amsat.org>

Add the sd_version_str() helper.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/sd/sd.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

Comments

Cédric Le Goater May 31, 2022, 8:01 a.m. UTC | #1
On 5/30/22 21:37, Philippe Mathieu-Daudé wrote:
> From: Philippe Mathieu-Daudé <f4bug@amsat.org>
> 
> Add the sd_version_str() helper.
> 
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Reviewed-by: Cédric Le Goater <clg@kaod.org>

> ---
>   hw/sd/sd.c | 18 ++++++++++++++++--
>   1 file changed, 16 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/sd/sd.c b/hw/sd/sd.c
> index b0e7a7e6d0..b3e61b9f84 100644
> --- a/hw/sd/sd.c
> +++ b/hw/sd/sd.c
> @@ -145,6 +145,19 @@ struct SDState {
>   
>   static void sd_realize(DeviceState *dev, Error **errp);
>   
> +static const char *sd_version_str(enum SDPhySpecificationVersion version)
> +{
> +    static const char *sdphy_version[] = {
> +        [SD_PHY_SPECv1_10_VERS]     = "v1.10",
> +        [SD_PHY_SPECv2_00_VERS]     = "v2.00",
> +        [SD_PHY_SPECv3_01_VERS]     = "v3.01",
> +    };
> +    if (version >= ARRAY_SIZE(sdphy_version)) {
> +        return "unsupported version";
> +    }
> +    return sdphy_version[version];
> +}
> +
>   static const char *sd_state_name(enum SDCardStates state)
>   {
>       static const char *state_name[] = {
> @@ -968,8 +981,9 @@ static bool address_in_range(SDState *sd, const char *desc,
>   
>   static sd_rsp_type_t sd_invalid_state_for_cmd(SDState *sd, SDRequest req)
>   {
> -    qemu_log_mask(LOG_GUEST_ERROR, "SD: CMD%i in a wrong state: %s\n",
> -                  req.cmd, sd_state_name(sd->state));
> +    qemu_log_mask(LOG_GUEST_ERROR, "SD: CMD%i in a wrong state: %s (spec %s)\n",
> +                  req.cmd, sd_state_name(sd->state),
> +                  sd_version_str(sd->spec_version));
>   
>       return sd_illegal;
>   }
diff mbox series

Patch

diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index b0e7a7e6d0..b3e61b9f84 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -145,6 +145,19 @@  struct SDState {
 
 static void sd_realize(DeviceState *dev, Error **errp);
 
+static const char *sd_version_str(enum SDPhySpecificationVersion version)
+{
+    static const char *sdphy_version[] = {
+        [SD_PHY_SPECv1_10_VERS]     = "v1.10",
+        [SD_PHY_SPECv2_00_VERS]     = "v2.00",
+        [SD_PHY_SPECv3_01_VERS]     = "v3.01",
+    };
+    if (version >= ARRAY_SIZE(sdphy_version)) {
+        return "unsupported version";
+    }
+    return sdphy_version[version];
+}
+
 static const char *sd_state_name(enum SDCardStates state)
 {
     static const char *state_name[] = {
@@ -968,8 +981,9 @@  static bool address_in_range(SDState *sd, const char *desc,
 
 static sd_rsp_type_t sd_invalid_state_for_cmd(SDState *sd, SDRequest req)
 {
-    qemu_log_mask(LOG_GUEST_ERROR, "SD: CMD%i in a wrong state: %s\n",
-                  req.cmd, sd_state_name(sd->state));
+    qemu_log_mask(LOG_GUEST_ERROR, "SD: CMD%i in a wrong state: %s (spec %s)\n",
+                  req.cmd, sd_state_name(sd->state),
+                  sd_version_str(sd->spec_version));
 
     return sd_illegal;
 }