From 1c738366e81baaf18a54b921680d57b31de09b09 Mon Sep 17 00:00:00 2001 From: Roger Quadros Date: Wed, 2 Feb 2022 13:21:47 +0200 Subject: [PATCH] board: ti: am64: select NAND overlay if HSE card present Since we are using overlay for A53 SPL and A53 u-boot the SPL must select the NAND overlay from the FIT image if HSE card is present. For simplicity sake, we only check if a card is present or not in the HSE (High Speed Expansion) slot to determine if we need to use NAND overlay. Signed-off-by: Roger Quadros --- board/ti/am64x/evm.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/board/ti/am64x/evm.c b/board/ti/am64x/evm.c index e50890ecea..4307906998 100644 --- a/board/ti/am64x/evm.c +++ b/board/ti/am64x/evm.c @@ -30,6 +30,8 @@ enum { AM64X_EVM_BRD_DET_COUNT, }; +static struct gpio_desc board_det_gpios[AM64X_EVM_BRD_DET_COUNT]; + /* Max number of MAC addresses that are parsed/processed per daughter card */ #define DAUGHTER_CARD_NO_OF_MAC_ADDR 8 @@ -60,10 +62,22 @@ int dram_init_banksize(void) int board_fit_config_name_match(const char *name) { bool eeprom_read = board_ti_was_eeprom_read(); + int ret; + bool is_nand = false; + + /* Simple check if card is installed in HSE slot or not */ + ret = dm_gpio_get_value(&board_det_gpios[AM64X_EVM_HSE_BRD_DET]); + if (!ret) + is_nand = true; if (!eeprom_read || board_is_am64x_gpevm()) { - if (!strcmp(name, "k3-am642-r5-evm") || !strcmp(name, "k3-am642-evm")) - return 0; + if (is_nand) { + if (!strcmp(name, "k3-am642-r5-evm") || !strcmp(name, "k3-am642-evm-nand")) + return 0; + } else { + if (!strcmp(name, "k3-am642-r5-evm") || !strcmp(name, "k3-am642-evm")) + return 0; + } } else if (board_is_am64x_skevm()) { if (!strcmp(name, "k3-am642-r5-sk") || !strcmp(name, "k3-am642-sk")) return 0; @@ -177,7 +191,6 @@ static void setup_serial(void) #endif #endif -#ifdef CONFIG_BOARD_LATE_INIT static const char *k3_dtbo_list[AM64X_MAX_DAUGHTER_CARDS] = {NULL}; static int init_daughtercard_det_gpio(char *gpio_name, struct gpio_desc *desc) @@ -205,7 +218,6 @@ static int init_daughtercard_det_gpio(char *gpio_name, struct gpio_desc *desc) static int probe_daughtercards(void) { struct ti_am6_eeprom ep; - struct gpio_desc board_det_gpios[AM64X_EVM_BRD_DET_COUNT]; char mac_addr[DAUGHTER_CARD_NO_OF_MAC_ADDR][TI_EEPROM_HDR_ETH_ALEN]; u8 mac_addr_cnt; char name_overlays[1024] = { 0 }; @@ -337,6 +349,7 @@ static int probe_daughtercards(void) return 0; } +#ifdef CONFIG_BOARD_LATE_INIT int board_late_init(void) { if (IS_ENABLED(CONFIG_TI_I2C_BOARD_DETECT)) { @@ -374,5 +387,7 @@ void spl_board_init(void) /* Init DRAM size for R5/A53 SPL */ dram_init_banksize(); + + probe_daughtercards(); } #endif