[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.