On Mon, Jun 29, 2026 at 11:51:22PM +0800, Eric Chung wrote: >Read the product name from the environment instead of EEPROM, >as the EEPROM may not be programmed and the environment always >contains this information. > >Signed-off-by: Eric Chung <[email protected]> >--- > board/spacemit/k1/spl.c | 50 ++++++++++--------------------------------------- > 1 file changed, 10 insertions(+), 40 deletions(-) > >diff --git a/board/spacemit/k1/spl.c b/board/spacemit/k1/spl.c >index 0db362130e4..4f8b2f1035d 100644 >--- a/board/spacemit/k1/spl.c >+++ b/board/spacemit/k1/spl.c >@@ -12,6 +12,7 @@ > #include <configs/k1.h> > #include <dm/device.h> > #include <dm/uclass.h> >+#include <env.h> > #include <i2c.h> > #include <linux/delay.h> > #include <log.h> >@@ -73,39 +74,6 @@ static void i2c_early_init(void) > } > } > >-int read_product_name(char *name, int size) >-{ >- u8 eeprom_data[TLV_TOTAL_LEN_MAX], *p; >- struct tlvinfo_header *tlv_hdr; >- struct tlvinfo_tlv *tlv_entry; >- int ret, i = 0; >- u32 entry_size; >- >- if (!name || size <= 0) >- return -EINVAL; >- ret = read_tlvinfo_tlv_eeprom(eeprom_data, &tlv_hdr, >- &tlv_entry, i); >- if (ret) >- return ret; >- p = (u8 *)tlv_entry; >- for (i = 0; i < tlv_hdr->totallen; ) { >- if (tlv_entry->type == TLV_CODE_PRODUCT_NAME) { >- if (tlv_entry->length < size) >- size = tlv_entry->length; >- memset(name, 0, size); >- memcpy(name, &tlv_entry->value[0], size); >- return 0; >- } >- if (tlv_entry->type == TLV_CODE_CRC_32) >- return -ENOENT; >- entry_size = tlv_entry->length + sizeof(struct tlvinfo_tlv); >- i += entry_size; >- p += entry_size; >- tlv_entry = (struct tlvinfo_tlv *)p; >- } >- return -ENOENT; >-} >- > static const struct { > const char *eeprom_name; > const char *fit_name; >@@ -117,9 +85,14 @@ static const struct { > > static void fixup_product_name(void) > { >- char fdt_name[I2C_BUF_SIZE]; >+ char fdt_name[I2C_BUF_SIZE], *name; > int i; > >+ memset(product_name, 0, I2C_BUF_SIZE); >+ env_init(); >+ env_load(); >+ name = env_get("product_name");
Need a NULL pointer check. >+ snprintf(product_name, I2C_BUF_SIZE, "%s", name); > memset(fdt_name, 0, I2C_BUF_SIZE);

