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>
This commit is contained in:
parent
03b0a5db9a
commit
1c738366e8
|
|
@ -30,6 +30,8 @@ enum {
|
||||||
AM64X_EVM_BRD_DET_COUNT,
|
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 */
|
/* Max number of MAC addresses that are parsed/processed per daughter card */
|
||||||
#define DAUGHTER_CARD_NO_OF_MAC_ADDR 8
|
#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)
|
int board_fit_config_name_match(const char *name)
|
||||||
{
|
{
|
||||||
bool eeprom_read = board_ti_was_eeprom_read();
|
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 (!eeprom_read || board_is_am64x_gpevm()) {
|
||||||
if (!strcmp(name, "k3-am642-r5-evm") || !strcmp(name, "k3-am642-evm"))
|
if (is_nand) {
|
||||||
return 0;
|
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()) {
|
} else if (board_is_am64x_skevm()) {
|
||||||
if (!strcmp(name, "k3-am642-r5-sk") || !strcmp(name, "k3-am642-sk"))
|
if (!strcmp(name, "k3-am642-r5-sk") || !strcmp(name, "k3-am642-sk"))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -177,7 +191,6 @@ static void setup_serial(void)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_BOARD_LATE_INIT
|
|
||||||
static const char *k3_dtbo_list[AM64X_MAX_DAUGHTER_CARDS] = {NULL};
|
static const char *k3_dtbo_list[AM64X_MAX_DAUGHTER_CARDS] = {NULL};
|
||||||
|
|
||||||
static int init_daughtercard_det_gpio(char *gpio_name, struct gpio_desc *desc)
|
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)
|
static int probe_daughtercards(void)
|
||||||
{
|
{
|
||||||
struct ti_am6_eeprom ep;
|
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];
|
char mac_addr[DAUGHTER_CARD_NO_OF_MAC_ADDR][TI_EEPROM_HDR_ETH_ALEN];
|
||||||
u8 mac_addr_cnt;
|
u8 mac_addr_cnt;
|
||||||
char name_overlays[1024] = { 0 };
|
char name_overlays[1024] = { 0 };
|
||||||
|
|
@ -337,6 +349,7 @@ static int probe_daughtercards(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_BOARD_LATE_INIT
|
||||||
int board_late_init(void)
|
int board_late_init(void)
|
||||||
{
|
{
|
||||||
if (IS_ENABLED(CONFIG_TI_I2C_BOARD_DETECT)) {
|
if (IS_ENABLED(CONFIG_TI_I2C_BOARD_DETECT)) {
|
||||||
|
|
@ -374,5 +387,7 @@ void spl_board_init(void)
|
||||||
|
|
||||||
/* Init DRAM size for R5/A53 SPL */
|
/* Init DRAM size for R5/A53 SPL */
|
||||||
dram_init_banksize();
|
dram_init_banksize();
|
||||||
|
|
||||||
|
probe_daughtercards();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue