summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorRoger Quadros <rogerq@kernel.org>2023-11-24 17:03:20 +0200
committerPraneeth Bajjuri <praneeth@ti.com>2023-11-24 16:53:29 -0600
commit63c591d6f5f6a507b61cb3dce3b08da1b536d455 (patch)
treeb3b2b59ada938d9d3abaee2af9062e8e3e2706bc /board
parentd507c6b2ba2957cdfb9451b6bd10babfda3195e2 (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. Signed-off-by: Roger Quadros <rogerq@kernel.org>
Diffstat (limited to 'board')
-rw-r--r--board/ti/am64x/evm.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/board/ti/am64x/evm.c b/board/ti/am64x/evm.c
index 577bdfd6f4..12b4f26325 100644
--- a/board/ti/am64x/evm.c
+++ b/board/ti/am64x/evm.c
@@ -35,6 +35,10 @@ enum {
AM64X_EVM_BRD_DET_COUNT,
};
+#define AM642_NAND_DTBO "k3-am642-evm-nand.dtbo"
+
+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
@@ -67,14 +71,20 @@ int dram_init_banksize(void)
return ret;
}
+static bool is_nand;
#if defined(CONFIG_SPL_LOAD_FIT)
int board_fit_config_name_match(const char *name)
{
bool eeprom_read = board_ti_was_eeprom_read();
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;
@@ -236,7 +246,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)
@@ -264,7 +273,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 };
@@ -292,7 +300,7 @@ static int probe_daughtercards(void)
{
AM64X_EVM_HSE_BRD_DET,
"TMDS64DC02EVM",
- "k3-am642-evm-nand.dtbo",
+ AM642_NAND_DTBO,
0,
},
};
@@ -373,6 +381,9 @@ static int probe_daughtercards(void)
dtboname = cards[i].dtbo_name;
k3_dtbo_list[nb_dtbos++] = dtboname;
+ if (!strcmp(dtboname, AM642_NAND_DTBO))
+ is_nand = true;
+
/*
* Make sure we are not running out of buffer space by checking
* if we can fit the new overlay, a trailing space to be used
@@ -396,6 +407,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)) {
@@ -434,5 +446,9 @@ void spl_board_init(void)
/* Init DRAM size for R5/A53 SPL */
dram_init_banksize();
+
+ /* Check for and probe any plugged-in daughtercards */
+ if (board_is_am64x_gpevm())
+ probe_daughtercards();
}
#endif