mirror of
https://github.com/smaeul/u-boot.git
synced 2025-10-14 04:46:01 +01:00
ARM: uniphier: check DT to determine whether to use support card
If CONFIG_MICRO_SUPPORT_CARD is enabled, U-Boot tries to get access to the devices on the support card, which may not actually exist. Check the DT and search for the on-board devices run-time. If the nodes are not found in DT, then disable the code. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
This commit is contained in:
parent
9a2f0e5ccd
commit
92d6524b4f
@ -18,6 +18,25 @@
|
|||||||
#define MICRO_SUPPORT_CARD_RESET ((MICRO_SUPPORT_CARD_BASE) + 0xd0034)
|
#define MICRO_SUPPORT_CARD_RESET ((MICRO_SUPPORT_CARD_BASE) + 0xd0034)
|
||||||
#define MICRO_SUPPORT_CARD_REVISION ((MICRO_SUPPORT_CARD_BASE) + 0xd00E0)
|
#define MICRO_SUPPORT_CARD_REVISION ((MICRO_SUPPORT_CARD_BASE) + 0xd00E0)
|
||||||
|
|
||||||
|
static bool support_card_found;
|
||||||
|
|
||||||
|
static void support_card_detect(void)
|
||||||
|
{
|
||||||
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
const void *fdt = gd->fdt_blob;
|
||||||
|
int offset;
|
||||||
|
|
||||||
|
offset = fdt_node_offset_by_compatible(fdt, 0, "smsc,lan9118");
|
||||||
|
if (offset < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
offset = fdt_node_offset_by_compatible(fdt, 0, "ns16550a");
|
||||||
|
if (offset < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
support_card_found = true;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 0: reset deassert, 1: reset
|
* 0: reset deassert, 1: reset
|
||||||
*
|
*
|
||||||
@ -51,6 +70,11 @@ static int support_card_show_revision(void)
|
|||||||
|
|
||||||
void support_card_init(void)
|
void support_card_init(void)
|
||||||
{
|
{
|
||||||
|
support_card_detect();
|
||||||
|
|
||||||
|
if (!support_card_found)
|
||||||
|
return;
|
||||||
|
|
||||||
support_card_reset();
|
support_card_reset();
|
||||||
/*
|
/*
|
||||||
* After power on, we need to keep the LAN controller in reset state
|
* After power on, we need to keep the LAN controller in reset state
|
||||||
@ -67,6 +91,9 @@ void support_card_init(void)
|
|||||||
|
|
||||||
int board_eth_init(bd_t *bis)
|
int board_eth_init(bd_t *bis)
|
||||||
{
|
{
|
||||||
|
if (!support_card_found)
|
||||||
|
return 0;
|
||||||
|
|
||||||
return smc911x_initialize(0, SMC911X_BASE);
|
return smc911x_initialize(0, SMC911X_BASE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -161,6 +188,9 @@ static void detect_num_flash_banks(void)
|
|||||||
|
|
||||||
void support_card_late_init(void)
|
void support_card_late_init(void)
|
||||||
{
|
{
|
||||||
|
if (!support_card_found)
|
||||||
|
return;
|
||||||
|
|
||||||
detect_num_flash_banks();
|
detect_num_flash_banks();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,6 +251,9 @@ void led_puts(const char *s)
|
|||||||
int i;
|
int i;
|
||||||
u32 val = 0;
|
u32 val = 0;
|
||||||
|
|
||||||
|
if (!support_card_found)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!s)
|
if (!s)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user