[PATCH v4 5/5] starfive: add mac vendor sub-command

E Shattow lucent at gmail.com
Sat May 11 06:20:36 CEST 2024


On comparing raw bytes from manufacturer data in EEPROM to having done
mac initialize and each of the commands incl. 'mac vendor' to
construct again that data, looks good.

On Thu, May 9, 2024 at 10:52 PM Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> As boards from multiple vendors (Milk-V, StarFive, Pine64) use the mac
> command provide a sub-command to set the vendor string.
>
> Reported-by: E. Shattow <lucent at gmail.com>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> v4:
>         no change
> v3:
>         new patch
> ---
>  .../visionfive2/visionfive2-i2c-eeprom.c      | 25 ++++++++++++++++++-
>  1 file changed, 24 insertions(+), 1 deletion(-)
>
> diff --git a/board/starfive/visionfive2/visionfive2-i2c-eeprom.c b/board/starfive/visionfive2/visionfive2-i2c-eeprom.c
> index 9648a270494..141d3db8667 100644
> --- a/board/starfive/visionfive2/visionfive2-i2c-eeprom.c
> +++ b/board/starfive/visionfive2/visionfive2-i2c-eeprom.c
> @@ -404,6 +404,24 @@ static void set_product_id(char *string)
>         update_crc();
>  }
>
> +/**
> + * set_vendor() - set vendor name
> + *
> + * Takes a pointer to a string representing the vendor name, e.g.
> + * "StarFive Technology Co., Ltd.", stores it in the vendor field
> + * of the EEPROM local copy, and updates the CRC of the local copy.
> + */
> +static void set_vendor(char *string)
> +{
> +       memset(pbuf.eeprom.atom1.data.vstr, 0,
> +              sizeof(pbuf.eeprom.atom1.data.vstr));
> +
> +       snprintf(pbuf.eeprom.atom1.data.vstr,
> +                sizeof(pbuf.eeprom.atom1.data.vstr), string);
> +
> +       update_crc();
> +}
> +
>  const char *get_product_id_from_eeprom(void)
>  {
>         if (read_eeprom())
> @@ -463,6 +481,9 @@ int do_mac(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>         } else if (!strcmp(cmd, "product_id")) {
>                 set_product_id(argv[2]);
>                 return 0;
> +       } else if (!strcmp(cmd, "vendor")) {
> +               set_vendor(argv[2]);
> +               return 0;
>         }
>
>         return CMD_RET_USAGE;
> @@ -586,7 +607,9 @@ U_BOOT_LONGHELP(mac,
>         "mac bom_revision <A>\n"
>         "    - stores a StarFive BOM revision into the local EEPROM copy\n"
>         "mac product_id <VF7110A1-2228-D008E000-xxxxxxxx>\n"
> -       "    - stores a StarFive product ID into the local EEPROM copy\n");
> +       "    - stores a StarFive product ID into the local EEPROM copy\n"
> +       "mac vendor <Vendor Name>\n"
> +       "    - set vendor string\n");
>
>  U_BOOT_CMD(
>         mac, 3, 1,  do_mac,
> --
> 2.43.0
>

Tested-by: E Shattow <lucent at gmail.com>


More information about the U-Boot mailing list