diff options
Diffstat (limited to 'board/ti/j784s4/evm.c')
-rw-r--r-- | board/ti/j784s4/evm.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/board/ti/j784s4/evm.c b/board/ti/j784s4/evm.c index f691ea4ebb..07e7d9cc8b 100644 --- a/board/ti/j784s4/evm.c +++ b/board/ti/j784s4/evm.c @@ -28,6 +28,8 @@ #define board_is_j784s4_evm() board_ti_k3_is("J784S4-EVM") +#define board_is_am69_sk() board_ti_k3_is("AM69-SK") + DECLARE_GLOBAL_DATA_PTR; int board_init(void) @@ -77,8 +79,15 @@ int dram_init_banksize(void) #ifdef CONFIG_SPL_LOAD_FIT int board_fit_config_name_match(const char *name) { - if (!strcmp(name, "J784S4X-EVM")) - return 0; + bool eeprom_read = board_ti_was_eeprom_read(); + + if (!eeprom_read || board_is_j784s4_evm()) { + if ((!strcmp(name, "k3-j784s4-evm")) || (!strcmp(name, "k3-j784s4-r5-evm"))) + return 0; + } else if (!eeprom_read || board_is_am69_sk()) { + if ((!strcmp(name, "k3-am69-sk")) || (!strcmp(name, "k3-am69-r5-sk"))) + return 0; + } return -1; } @@ -105,11 +114,20 @@ int do_board_detect(void) { int ret; + if (board_ti_was_eeprom_read()) + return 0; + ret = ti_i2c_eeprom_am6_get_base(CONFIG_EEPROM_BUS_ADDRESS, CONFIG_EEPROM_CHIP_ADDRESS); - if (ret) - pr_err("Reading on-board EEPROM at 0x%02x failed %d\n", - CONFIG_EEPROM_CHIP_ADDRESS, ret); + if (ret) { + printf("EEPROM not available at 0x%02x, trying to read at 0x%02x\n", + CONFIG_EEPROM_CHIP_ADDRESS, CONFIG_EEPROM_CHIP_ADDRESS + 1); + ret = ti_i2c_eeprom_am6_get_base(CONFIG_EEPROM_BUS_ADDRESS, + CONFIG_EEPROM_CHIP_ADDRESS + 1); + if (ret) + pr_err("Reading on-board EEPROM at 0x%02x failed %d\n", + CONFIG_EEPROM_CHIP_ADDRESS + 1, ret); + } return ret; } @@ -136,6 +154,8 @@ static void setup_board_eeprom_env(void) if (board_is_j784s4_evm()) name = "j784s4"; + else if (board_is_am69_sk()) + name = "am69-sk"; else printf("Unidentified board claims %s in eeprom header\n", board_ti_get_name()); |