Hi Suneel, On Tue, 29 Oct 2019 at 14:08, Suneel Garapati <suneelgli...@gmail.com> wrote: > > From: Suneel Garapati <sgarap...@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 <sgarap...@marvell.com> > --- > drivers/pci/pci-uclass.c | 25 +++++++++++++++++++------ > 1 file changed, 19 insertions(+), 6 deletions(-) >
Reviewed-by: Simon Glass <s...@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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot