summaryrefslogtreecommitdiff
path: root/board/ti
diff options
context:
space:
mode:
authorRoger Quadros <rogerq@kernel.org>2022-02-02 13:21:47 +0200
committerPraneeth Bajjuri <praneeth@ti.com>2022-02-02 16:22:01 -0600
commit1c738366e81baaf18a54b921680d57b31de09b09 (patch)
treebda24528830e5e5dc509cda0a486b1549bac60f1 /board/ti
parent03b0a5db9a0c3075f60c687af0dd83a71aa142a0 (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.c23
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