Start pci hose scan from hose->current_busno.
authorEd Swarthout <Ed.Swarthout@freescale.com>
Wed, 11 Jul 2007 19:51:35 +0000 (14:51 -0500)
committerWolfgang Denk <wd@denx.de>
Wed, 11 Jul 2007 21:43:11 +0000 (23:43 +0200)
Ensure hose->current_busno is not less than first_busno.  This fixes
broken board code which leaves current_busno=0 when first_busno is
greater than 0 for the cases with multiple controllers.

Signed-off-by: Ed Swarthout <Ed.Swarthout@freescale.com>
drivers/pci.c

index 050582f782677833f755e20dd39994505a7b27c8..41589192c1c835669eaa98437840e9a6f97063ea 100644 (file)
@@ -490,10 +490,16 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
 
 int pci_hose_scan(struct pci_controller *hose)
 {
+       /* Start scan at current_busno.
+        * PCIe will start scan at first_busno+1.
+        */
+       /* For legacy support, ensure current>=first */
+       if (hose->first_busno > hose->current_busno)
+               hose->current_busno = hose->first_busno;
 #ifdef CONFIG_PCI_PNP
        pciauto_config_init(hose);
 #endif
-       return pci_hose_scan_bus(hose, hose->first_busno);
+       return pci_hose_scan_bus(hose, hose->current_busno);
 }
 
 void pci_init(void)