
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