diff mbox series

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

Message ID 20240510055223.11617-6-heinrich.schuchardt@canonical.com
State Superseded
Delegated to: Andes
Headers show
Series board: starfive: add Milk-V Mars CM support | expand

Commit Message

Heinrich Schuchardt May 10, 2024, 5:52 a.m. UTC
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@gmail.com>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
v4:
	no change
v3:
	new patch
---
 .../visionfive2/visionfive2-i2c-eeprom.c      | 25 ++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

Comments

E Shattow May 11, 2024, 4:20 a.m. UTC | #1
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@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@gmail.com>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@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@gmail.com>
diff mbox series

Patch

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,