pci: Show a message if PCI autoconfig fails
authorSimon Glass <sjg@chromium.org>
Wed, 25 Sep 2019 14:56:16 +0000 (08:56 -0600)
committerBin Meng <bmeng.cn@gmail.com>
Tue, 8 Oct 2019 05:57:42 +0000 (13:57 +0800)
At present this fails silently which can be confusing since some devices
on the PCI bus may not work correctly. Show a message in this case.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
[bmeng: add a '\n' in the PCI autoconfig fail message]
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
drivers/pci/pci_auto.c

index 1a3bf708347d2269cff25aa7b4f566335ac6ad15..28667bde8da79d6167296072ea6ed898010dd40f 100644 (file)
@@ -39,6 +39,8 @@ void dm_pciauto_setup_device(struct udevice *dev, int bars_num,
 
        for (bar = PCI_BASE_ADDRESS_0;
             bar < PCI_BASE_ADDRESS_0 + (bars_num * 4); bar += 4) {
+               int ret = 0;
+
                /* Tickle the BAR and get the response */
                if (!enum_only)
                        dm_pci_write_config32(dev, bar, 0xffffffff);
@@ -97,9 +99,13 @@ void dm_pciauto_setup_device(struct udevice *dev, int bars_num,
                              (unsigned long long)bar_size);
                }
 
-               if (!enum_only && pciauto_region_allocate(bar_res, bar_size,
-                                                         &bar_value,
-                                                         found_mem64) == 0) {
+               if (!enum_only) {
+                       ret = pciauto_region_allocate(bar_res, bar_size,
+                                                     &bar_value, found_mem64);
+                       if (ret)
+                               printf("PCI: Failed autoconfig bar %x\n", bar);
+               }
+               if (!enum_only && !ret) {
                        /* Write it out and update our limit */
                        dm_pci_write_config32(dev, bar, (u32)bar_value);