]> git.sur5r.net Git - u-boot/commitdiff
pci: Add CONFIG_PCI_SKIP_HOST_BRIDGE config option
authorNobuhiro Iwamatsu <iwamatsu@nigauri.org>
Fri, 7 Mar 2008 07:04:25 +0000 (16:04 +0900)
committerWolfgang Denk <wd@denx.de>
Sun, 23 Mar 2008 00:38:22 +0000 (01:38 +0100)
In current source code, when the device number of PCI is 0, process PCI
bridge without fail. However, when the device number is 0, it is not PCI
always bridge. There are times when device of PCI allocates.

When CONFIG_PCI_SKIP_HOST_BRIDGE is enable, this problem is solved when
use this patch.

Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Acked-by: Stefan Roese <sr@denx.de>
drivers/pci/pci.c

index 50ca6b0bad67a2345992799f5bd24db101e147a6..7944b6684aeee601b2ec7bd380728988ac469c9e 100644 (file)
@@ -425,6 +425,9 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
             dev <  PCI_BDF(bus,PCI_MAX_PCI_DEVICES-1,PCI_MAX_PCI_FUNCTIONS-1);
             dev += PCI_BDF(0,0,1))
        {
+
+       /* Bus 0 is not necessarily PCI bridge. */
+#if defined(CONFIG_PCI_SKIP_HOST_BRIDGE)
                /* Skip our host bridge */
                if ( dev == PCI_BDF(hose->first_busno,0,0) ) {
 #if defined(CONFIG_PCI_CONFIG_HOST_BRIDGE)              /* don't skip host bridge */
@@ -434,10 +437,11 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
                        if (getenv("pciconfighost") == NULL) {
                                continue; /* Skip our host bridge */
                        }
-#else
+#else /* CONFIG_PCI_CONFIG_HOST_BRIDGE */
                        continue; /* Skip our host bridge */
-#endif
+#endif /* CONFIG_PCI_CONFIG_HOST_BRIDGE */
                }
+#endif /* CONFIG_PCI_SKIP_HOST_BRIDGE */
 
                if (PCI_FUNC(dev) && !found_multi)
                        continue;
@@ -473,8 +477,11 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
                                hose->fixup_irq(hose, dev);
 
 #ifdef CONFIG_PCI_SCAN_SHOW
+#if defined(CONFIG_PCI_SKIP_HOST_BRIDGE)
                        /* Skip our host bridge */
-                       if ( dev != PCI_BDF(hose->first_busno,0,0) ) {
+                       if ( dev != PCI_BDF(hose->first_busno,0,0) )
+#endif
+                       {
                            unsigned char int_line;
 
                            pci_hose_read_config_byte(hose, dev, PCI_INTERRUPT_LINE,