1#include <linux/pci.h>
2#include <linux/init.h>
3#include "pci.h"
4
5/* arch_initcall has too random ordering, so call the initializers
6   in the right sequence from here. */
7static __init int pci_access_init(void)
8{
9	int type __maybe_unused = 0;
10
11#ifdef CONFIG_PCI_DIRECT
12	type = pci_direct_probe();
13#endif
14#ifdef CONFIG_PCI_MMCONFIG
15	pci_mmcfg_init(type);
16#endif
17	if (raw_pci_ops)
18		return 0;
19#ifdef CONFIG_PCI_BIOS
20	pci_pcbios_init();
21#endif
22	/*
23	 * don't check for raw_pci_ops here because we want pcbios as last
24	 * fallback, yet it's needed to run first to set pcibios_last_bus
25	 * in case legacy PCI probing is used. otherwise detecting peer busses
26	 * fails.
27	 */
28#ifdef CONFIG_PCI_DIRECT
29	pci_direct_init(type);
30#endif
31	if (!raw_pci_ops)
32		printk(KERN_ERR
33		"PCI: Fatal: No config space access function found\n");
34
35	return 0;
36}
37arch_initcall(pci_access_init);
38