From fcaf019c4ed85607bef759ec074df92da222afcf Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Sun, 12 May 2024 06:25:26 +0200 Subject: [PATCH] starfive: add mac vendor sub-command 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 Signed-off-by: Heinrich Schuchardt --- .../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 9648a27049..838f41e41b 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)); + + strncpy(pbuf.eeprom.atom1.data.vstr, + string, sizeof(pbuf.eeprom.atom1.data.vstr) - 1); + + 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 \n" " - stores a StarFive BOM revision into the local EEPROM copy\n" "mac product_id \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 \n" + " - set vendor string\n"); U_BOOT_CMD( mac, 3, 1, do_mac, -- 2.39.5