board_r: Introduce CONFIG_PCI_INIT_R Kconfig option

With CONFIG_DM_PCI enabled, PCI buses are not enumerated at boot, as they
are without that config option enabled. However, there are cases such as DM
PCI-based Ethernet devices that need the PCI bus enumerated so that they
can be discovered by their drivers.

Currently, to solve this, some boards enumerate the pci bus using
"pci enum" preboot command, while others do it manually in board files
(in board_init/board_late_init/etc. functions).

In order to possibly make the pci enumeration process uniform across all
boards, introduce CONFIG_PCI_INIT_R Kconfig option.

This change also preserves the current behavior in the !DM_PCI case
(pci_init is run unconditionally at boot).

Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
This commit is contained in:
Ovidiu Panait 2020-05-06 20:38:44 +03:00 committed by Tom Rini
parent 9441f8cbfe
commit 98bf46f7bd
2 changed files with 12 additions and 3 deletions

View File

@ -932,6 +932,16 @@ config LAST_STAGE_INIT
U-Boot calls last_stage_init() before the command-line interpreter is
started.
config PCI_INIT_R
bool "Enumerate PCI buses during init"
depends on PCI
default y if !DM_PCI
help
With this option U-Boot will call pci_init() soon after relocation,
which will enumerate PCI buses. This is needed, for instance, in the
case of DM PCI-based Ethernet devices, which will not be detected
without having the enumeration performed earlier.
endmenu
menu "Security support"

View File

@ -232,9 +232,8 @@ static int initr_unlock_ram_in_cache(void)
#ifdef CONFIG_PCI
static int initr_pci(void)
{
#ifndef CONFIG_DM_PCI
pci_init();
#endif
if (IS_ENABLED(CONFIG_PCI_INIT_R))
pci_init();
return 0;
}