[PATCH] board: spacemit: k1: accept the "m1-x_" TLV product name prefix
Bruno Banelli <[email protected]>
| Newsgroups | org.u-boot-project.lists.u-boot |
|---|---|
| Message-ID | <[email protected]> |
board_fit_config_name_match() derives the device tree name from the TLV product name held in the board EEPROM, and only recognises boards whose product name starts with "k1-x_". Boards fitted with the higher-binned M1 part report an "m1-x_" prefix instead. On those, fdt_name is left empty and the function silently falls back to "k1-musepi-pro", so an M1 board selects the wrong device tree with no error or warning. A Milk-V Jupiter fitted with an M1 reads, from the 24c04 at i2c2 0x50: 00: 54 6c 76 49 6e 66 6f 00 01 00 1a 21 12 6d 31 2d TlvInfo....!.m1- 10: 78 5f 6d 69 6c 6b 76 2d 6a 75 70 69 74 65 72 fe x_milkv-jupiter. i.e. TLV code 0x21 (product name), length 0x12, "m1-x_milkv-jupiter". The device trees are named for the K1 in both cases, so accept either prefix and keep deriving a "k1-" name. Signed-off-by: Bruno Banelli <[email protected]> --- board/spacemit/k1/spl.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/board/spacemit/k1/spl.c b/board/spacemit/k1/spl.c index d749e21a..e82fad23 100644 --- a/board/spacemit/k1/spl.c +++ b/board/spacemit/k1/spl.c @@ -367,7 +367,14 @@ int board_fit_config_name_match(const char *name) int i; memset(fdt_name, 0, I2C_BUF_SIZE); - if (!strncmp(product_name, "k1-x_", 5)) { + /* + * The TLV product name is prefixed with the SoC variant fitted to + * the board: "k1-x_" for a K1, "m1-x_" for the higher-binned M1. + * Device trees are named for the K1 in both cases, so accept + * either prefix and always derive a "k1-" name from it. + */ + if (!strncmp(product_name, "k1-x_", 5) || + !strncmp(product_name, "m1-x_", 5)) { snprintf(fdt_name, I2C_BUF_SIZE, "%s-%s", "k1", &product_name[5]); } base-commit: 964ad5b5c91b7be56e443e899d7f873e6aa8c9fc -- 2.43.0