diff options
author | Roger Quadros <rogerq@kernel.org> | 2022-02-02 13:21:47 +0200 |
---|---|---|
committer | Praneeth Bajjuri <praneeth@ti.com> | 2022-02-02 16:22:01 -0600 |
commit | 1c738366e81baaf18a54b921680d57b31de09b09 (patch) | |
tree | bda24528830e5e5dc509cda0a486b1549bac60f1 /board/ti | |
parent | 03b0a5db9a0c3075f60c687af0dd83a71aa142a0 (diff) |
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 <rogerq@kernel.org>
Diffstat (limited to 'board/ti')
-rw-r--r-- | board/ti/am64x/evm.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/board/ti/am64x/evm.c b/board/ti/am64x/evm.c index e50890ecea7..43079069984 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 |