
Hi Suneel,
On Tue, 29 Oct 2019 at 14:08, Suneel Garapati suneelglinux@gmail.com wrote:
From: Suneel Garapati sgarapati@marvell.com
If Enhanced Allocation capability is present in bridges, use it to read the fixed sub-ordinate bus number.
Signed-off-by: Suneel Garapati sgarapati@marvell.com
drivers/pci/pci-uclass.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c index f17e83565c..51f7135723 100644 --- a/drivers/pci/pci-uclass.c +++ b/drivers/pci/pci-uclass.c @@ -599,10 +599,20 @@ int dm_pci_hose_probe_bus(struct udevice *bus) { int sub_bus; int ret;
int ea_pos;
u8 reg; debug("%s\n", __func__);
sub_bus = pci_get_bus_max() + 1;
ea_pos = dm_pci_find_capability(bus, PCI_CAP_ID_EA);
if (ea_pos) {
dm_pci_read_config8(bus, ea_pos + sizeof(u32) + sizeof(u8),
®);
sub_bus = reg;
} else {
sub_bus = pci_get_bus_max() + 1;
} debug("%s: bus = %d/%s\n", __func__, sub_bus, bus->name); dm_pciauto_prescan_setup_bridge(bus, sub_bus);
@@ -612,12 +622,15 @@ int dm_pci_hose_probe_bus(struct udevice *bus) ret); return ret; }
if (sub_bus != bus->seq) {
printf("%s: Internal error, bus '%s' got seq %d, expected %d\n",
__func__, bus->name, bus->seq, sub_bus);
return -EPIPE;
if (!ea_pos) {
if (sub_bus != bus->seq) {
printf("%s: Internal error, bus '%s' got seq %d, expected %d\n",
__func__, bus->name, bus->seq, sub_bus);
Can we change to debug() - for code size?
return -EPIPE;
}
sub_bus = pci_get_bus_max(); }
sub_bus = pci_get_bus_max(); dm_pciauto_postscan_setup_bridge(bus, sub_bus); return sub_bus;
-- 2.23.0
Regards, Simon