Awesome thanks !

Le jeu. 11 déc. 2025 à 11:47, Jean Delvare <[email protected]> a écrit :

> EDSFF slots are typically designated using their complete type name,
> including the length suffix (".S" for short slots, ".L" for long
> slots). Include the suffix in the output to match this expectation.
>
> Suggested by Erwan Velu.
>
> Signed-off-by: Jean Delvare <[email protected]>
> ---
>  dmidecode.c |   37 +++++++++++++++++++++++++++++--------
>  1 file changed, 29 insertions(+), 8 deletions(-)
>
> --- a/dmidecode.c
> +++ b/dmidecode.c
> @@ -2063,7 +2063,7 @@ static const char *dmi_port_type(u8 code
>   * 7.10 System Slots (Type 9)
>   */
>
> -static const char *dmi_slot_type(u8 code)
> +static void dmi_slot_type(u8 code, u8 length)
>  {
>         /* 7.10.1 */
>         static const char *type[] = {
> @@ -2156,14 +2156,35 @@ static const char *dmi_slot_type(u8 code
>          * Note to developers: when adding entries to these lists, check if
>          * function dmi_slot_id below needs updating too.
>          */
> +       const char *t, *suffix = "";
>
>         if (code >= 0x01 && code <= 0x28)
> -               return type[code - 0x01];
> -       if (code == 0x30)
> -               return type_0x30[code - 0x30];
> -       if (code >= 0xA0 && code <= 0xC6)
> -               return type_0xA0[code - 0xA0];
> -       return out_of_spec;
> +               t = type[code - 0x01];
> +       else if (code == 0x30)
> +               t = type_0x30[code - 0x30];
> +       else if (code >= 0xA0 && code <= 0xC6)
> +               t = type_0xA0[code - 0xA0];
> +       else
> +               t = out_of_spec;
> +
> +       /* For EDSFF slots, add the length suffix */
> +       switch (code)
> +       {
> +               case 0xC5: /* EDSFF E1 */
> +               case 0xC6: /* EDSFF E3 */
> +                       switch (length)
> +                       {
> +                               case 0x03: /* Short */
> +                                       suffix = ".S";
> +                                       break;
> +                               case 0x04: /* Long */
> +                                       suffix = ".L";
> +                                       break;
> +                       }
> +                       break;
> +       }
> +
> +       pr_attr("Type", "%s%s", t, suffix);
>  }
>
>  static const char *dmi_slot_bus_width(u8 code)
> @@ -4813,7 +4834,7 @@ static void dmi_decode(const struct dmi_
>                         if (h->length < 0x0C) break;
>                         pr_attr("Designation", "%s",
>                                 dmi_string(h, data[0x04]));
> -                       pr_attr("Type", "%s", dmi_slot_type(data[0x05]));
> +                       dmi_slot_type(data[0x05], data[0x08]);
>                         pr_attr("Data Bus Width", "%s",
> dmi_slot_bus_width(data[0x06]));
>                         pr_attr("Current Usage", "%s",
>                                 dmi_slot_current_usage(data[0x07]));
>
> --
> Jean Delvare
> SUSE L3 Support
>

Reply via email to