diff options
Diffstat (limited to 'drivers/pci/pci.c')
| -rw-r--r-- | drivers/pci/pci.c | 30 | 
1 files changed, 17 insertions, 13 deletions
| diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 1a0b14cd8..5f1f12812 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -695,6 +695,23 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)  int pci_hose_scan(struct pci_controller *hose)  { +#if defined(CONFIG_PCI_BOOTDELAY) +	static int pcidelay_done; +	char *s; +	int i; + +	if (!pcidelay_done) { +		/* wait "pcidelay" ms (if defined)... */ +		s = getenv("pcidelay"); +		if (s) { +			int val = simple_strtoul(s, NULL, 10); +			for (i = 0; i < val; i++) +				udelay(1000); +		} +		pcidelay_done = 1; +	} +#endif /* CONFIG_PCI_BOOTDELAY */ +  	/* Start scan at current_busno.  	 * PCIe will start scan at first_busno+1.  	 */ @@ -709,19 +726,6 @@ int pci_hose_scan(struct pci_controller *hose)  void pci_init(void)  { -#if defined(CONFIG_PCI_BOOTDELAY) -	char *s; -	int i; - -	/* wait "pcidelay" ms (if defined)... */ -	s = getenv ("pcidelay"); -	if (s) { -		int val = simple_strtoul (s, NULL, 10); -		for (i=0; i<val; i++) -			udelay (1000); -	} -#endif /* CONFIG_PCI_BOOTDELAY */ -  	hose_head = NULL;  	/* now call board specific pci_init()... */ |