All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/2] dm/pci: Change the first CFG read to Vendor ID in enumeration
@ 2018-10-08  8:35 Zhiqiang Hou
  2018-10-08  8:35 ` [U-Boot] [PATCH 2/2] pci: " Zhiqiang Hou
  2018-10-08  8:53 ` [U-Boot] [PATCH 1/2] dm/pci: " Bin Meng
  0 siblings, 2 replies; 10+ messages in thread
From: Zhiqiang Hou @ 2018-10-08  8:35 UTC (permalink / raw)
  To: u-boot

From: Hou Zhiqiang <Zhiqiang.Hou@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.Hou@nxp.com>
---
 drivers/pci/pci-uclass.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
index eb118f3496..c8cb9cdad9 100644
--- a/drivers/pci/pci-uclass.c
+++ b/drivers/pci/pci-uclass.c
@@ -748,16 +748,19 @@ int pci_bind_bus_devices(struct udevice *bus)
 			found_multi = false;
 		if (PCI_FUNC(bdf) && !found_multi)
 			continue;
+
 		/* Check only the first access, we don't expect problems */
-		ret = pci_bus_read_config(bus, bdf, PCI_HEADER_TYPE,
-					  &header_type, PCI_SIZE_8);
+		ret = pci_bus_read_config(bus, bdf, PCI_VENDOR_ID, &vendor,
+					  PCI_SIZE_16);
 		if (ret)
 			goto error;
-		pci_bus_read_config(bus, bdf, PCI_VENDOR_ID, &vendor,
-				    PCI_SIZE_16);
+
 		if (vendor == 0xffff || vendor == 0x0000)
 			continue;
 
+		pci_bus_read_config(bus, bdf, PCI_HEADER_TYPE,
+				    &header_type, PCI_SIZE_8);
+
 		if (!PCI_FUNC(bdf))
 			found_multi = header_type & 0x80;
 
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2018-11-22 20:22 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-08  8:35 [U-Boot] [PATCH 1/2] dm/pci: Change the first CFG read to Vendor ID in enumeration Zhiqiang Hou
2018-10-08  8:35 ` [U-Boot] [PATCH 2/2] pci: " Zhiqiang Hou
2018-10-08  8:54   ` Bin Meng
2018-10-09  3:40     ` Simon Glass
2018-10-09  5:15       ` Bin Meng
2018-10-09  8:07       ` Z.q. Hou
2018-10-19  3:27         ` Simon Glass
2018-10-08  8:53 ` [U-Boot] [PATCH 1/2] dm/pci: " Bin Meng
2018-10-08  9:20   ` Z.q. Hou
2018-11-22 20:22   ` sjg at google.com

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.