Instead of hard-coding the bus id to 0, grab the bus id from the first word of the "bus-range" property. In particular this allows us to correctly navigate the DT when trying to access a node with a unit id.
Signed-off-by: Mark Cave-Ayland mark.cave-ayland@ilande.co.uk --- drivers/pci.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/pci.c b/drivers/pci.c index f8d18c4..2a59a75 100644 --- a/drivers/pci.c +++ b/drivers/pci.c @@ -181,7 +181,7 @@ ob_pci_decode_unit(int *idx) ucell hi, mid, lo; const char *arg = pop_fstr_copy(); int dev, fn, reg, ss, n, p, t; - int bus = 0; /* no information */ + int bus, len; char *ptr;
PCI_DPRINTF("ob_pci_decode_unit idx=%p\n", idx); @@ -273,6 +273,8 @@ ob_pci_decode_unit(int *idx) } free((char*)arg);
+ bus = get_int_property(get_cur_dev(), "bus-range", &len); + hi = n | p | t | (ss << 24) | (bus << 16) | (dev << 11) | (fn << 8) | reg;
PUSH(lo);