board: starfive: spl: Support multiple DTBs for JH7110 based boards

Get product ID and the other information from EEPROM, use them to select
the correct DTB.

Tested-by: Anand Moon <linux.amoon@gmail.com>
Tested-by: E Shattow <lucent@gmail.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Hal Feng <hal.feng@starfivetech.com>
This commit is contained in:
Hal Feng
2024-12-08 17:19:41 +08:00
committed by Leo Yu-Chi Liang
parent c129fb9efc
commit 8ace850059

View File

@@ -113,7 +113,36 @@ void board_init_f(ulong dummy)
#if CONFIG_IS_ENABLED(LOAD_FIT)
int board_fit_config_name_match(const char *name)
{
/* boot using first FIT config */
return 0;
const char *product_id;
u8 version;
product_id = get_product_id_from_eeprom();
if (!strncmp(product_id, "VF7110", 6)) {
version = get_pcb_revision_from_eeprom();
if ((version == 'b' || version == 'B') &&
!strcmp(name, "jh7110-starfive-visionfive-2-v1.3b"))
return 0;
if ((version == 'a' || version == 'A') &&
!strcmp(name, "jh7110-starfive-visionfive-2-v1.2a"))
return 0;
} else if (!strncmp(product_id, "MARS", 4) &&
!strcmp(name, "jh7110-milkv-mars")) {
return 0;
} else if (!strncmp(product_id, "MARC", 4)) {
if (!get_mmc_size_from_eeprom()) {
if (!strcmp(name, "jh7110-milkv-mars-cm-lite"))
return 0;
} else {
if (!strcmp(name, "jh7110-milkv-mars-cm"))
return 0;
}
} else if (!strncmp(product_id, "STAR64", 6) &&
!strcmp(name, "jh7110-pine64-star64")) {
return 0;
}
return -EINVAL;
}
#endif