aboutsummaryrefslogtreecommitdiff
path: root/arch/x86/pci/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/pci/init.c')
-rw-r--r--arch/x86/pci/init.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/arch/x86/pci/init.c b/arch/x86/pci/init.c
index b821f4462d9..adb62aaa7ec 100644
--- a/arch/x86/pci/init.c
+++ b/arch/x86/pci/init.c
@@ -1,10 +1,11 @@
#include <linux/pci.h>
#include <linux/init.h>
-#include "pci.h"
+#include <asm/pci_x86.h>
+#include <asm/x86_init.h>
/* arch_initcall has too random ordering, so call the initializers
in the right sequence from here. */
-static __init int pci_access_init(void)
+static __init int pci_arch_init(void)
{
#ifdef CONFIG_PCI_DIRECT
int type = 0;
@@ -12,12 +13,12 @@ static __init int pci_access_init(void)
type = pci_direct_probe();
#endif
- pci_mmcfg_early_init();
+ if (!(pci_probe & PCI_PROBE_NOEARLY))
+ pci_mmcfg_early_init();
+
+ if (x86_init.pci.arch_init && !x86_init.pci.arch_init())
+ return 0;
-#ifdef CONFIG_PCI_OLPC
- if (!pci_olpc_init())
- return 0; /* skip additional checks if it's an XO */
-#endif
#ifdef CONFIG_PCI_BIOS
pci_pcbios_init();
#endif
@@ -40,4 +41,4 @@ static __init int pci_access_init(void)
return 0;
}
-arch_initcall(pci_access_init);
+arch_initcall(pci_arch_init);