From: Hou Zhiqiang <zhiqiang....@nxp.com>

As the PCIe specification recommend reading the Vendor ID register
to determine if a Function is present, read the Vendor ID of a
non-existent Function must not result in system error, so we'd better
make the first CFG read to Vendor ID instead of Header Type register
in the PCIe enumeration.

Signed-off-by: Hou Zhiqiang <zhiqiang....@nxp.com>
---
 drivers/pci/pci.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 221054593e..590f7b123a 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -361,13 +361,13 @@ int pci_hose_scan_bus(struct pci_controller *hose, int 
bus)
                if (PCI_FUNC(dev) && !found_multi)
                        continue;
 
-               pci_hose_read_config_byte(hose, dev, PCI_HEADER_TYPE, 
&header_type);
-
                pci_hose_read_config_word(hose, dev, PCI_VENDOR_ID, &vendor);
 
                if (vendor == 0xffff || vendor == 0x0000)
                        continue;
 
+               pci_hose_read_config_byte(hose, dev, PCI_HEADER_TYPE, 
&header_type);
+
                if (!PCI_FUNC(dev))
                        found_multi = header_type & 0x80;
 
-- 
2.17.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to