For boards with soc peripherals via the pci devices some devices require
probing during config to be available (ie VNIC on ThunderX SoCs).

Signed-off-by: Tim Harvey <thar...@gateworks.com>
---
 drivers/pci/pci_auto.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/pci/pci_auto.c b/drivers/pci/pci_auto.c
index d7237f6eee..7ab0e06cc7 100644
--- a/drivers/pci/pci_auto.c
+++ b/drivers/pci/pci_auto.c
@@ -9,6 +9,7 @@
 
 #include <common.h>
 #include <dm.h>
+#include <dm/device-internal.h>
 #include <errno.h>
 #include <pci.h>
 
@@ -128,6 +129,23 @@ void dm_pciauto_setup_device(struct udevice *dev, int 
bars_num,
        }
 
        if (!enum_only) {
+               u16 device, vendor;
+
+               dm_pci_read_config16(dev, PCI_DEVICE_ID, &device);
+               dm_pci_read_config16(dev, PCI_VENDOR_ID, &vendor);
+               if ( (vendor == PCI_VENDOR_ID_CAVIUM) &&
+                    ((device == PCI_DEVICE_ID_THUNDERX_SMI) ||
+                     (device == PCI_DEVICE_ID_THUNDERX_RGX) ||
+                     (device == PCI_DEVICE_ID_THUNDERX_BGX) ||
+                     (device == PCI_DEVICE_ID_THUNDERX_NIC_PF) ||
+                     (device == PCI_DEVICE_ID_THUNDERX_NIC_VF_1) ||
+                     (device == PCI_DEVICE_ID_THUNDERX_NIC_VF)) )
+               {
+                       debug("Probing 0x%04x:0x%04x %s\n", vendor, device,
+                             dev->name);
+                       device_probe(dev);
+               }
+
                /* Configure the expansion ROM address */
                dm_pci_read_config8(dev, PCI_HEADER_TYPE, &header_type);
                header_type &= 0x7f;
-- 
2.17.1

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

Reply via email to