Commit 824877111cd7f2b4fd2fe6947c5c5cbbb3ac5bd8
Committed by
Ingo Molnar
1 parent
c854c91979
Exists in
master
and in
4 other branches
x86, pci: move arch/x86/pci/pci.h to arch/x86/include/asm/pci_x86.h
Impact: cleanup Now that arch/x86/pci/pci.h is used in a number of other places as well, move the lowlevel x86 pci definitions into the architecture include files. (not to be confused with the existing arch/x86/include/asm/pci.h file, which provides public details about x86 PCI) Tested on: X86_32_UP, X86_32_SMP and X86_64_SMP Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com> Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Showing 24 changed files with 188 additions and 194 deletions Side-by-side Diff
- arch/x86/include/asm/pci_x86.h
- arch/x86/kernel/mmconf-fam10h_64.c
- arch/x86/kernel/reboot.c
- arch/x86/pci/acpi.c
- arch/x86/pci/amd_bus.c
- arch/x86/pci/common.c
- arch/x86/pci/direct.c
- arch/x86/pci/early.c
- arch/x86/pci/fixup.c
- arch/x86/pci/i386.c
- arch/x86/pci/init.c
- arch/x86/pci/irq.c
- arch/x86/pci/legacy.c
- arch/x86/pci/mmconfig-shared.c
- arch/x86/pci/mmconfig_32.c
- arch/x86/pci/mmconfig_64.c
- arch/x86/pci/numaq_32.c
- arch/x86/pci/olpc.c
- arch/x86/pci/pcbios.c
- arch/x86/pci/pci.h
- arch/x86/pci/visws.c
- drivers/pci/hotplug/cpqphp_core.c
- drivers/pci/hotplug/cpqphp_pci.c
- drivers/pci/hotplug/ibmphp_core.c
arch/x86/include/asm/pci_x86.h
1 | +/* | |
2 | + * Low-Level PCI Access for i386 machines. | |
3 | + * | |
4 | + * (c) 1999 Martin Mares <mj@ucw.cz> | |
5 | + */ | |
6 | + | |
7 | +#undef DEBUG | |
8 | + | |
9 | +#ifdef DEBUG | |
10 | +#define DBG(x...) printk(x) | |
11 | +#else | |
12 | +#define DBG(x...) | |
13 | +#endif | |
14 | + | |
15 | +#define PCI_PROBE_BIOS 0x0001 | |
16 | +#define PCI_PROBE_CONF1 0x0002 | |
17 | +#define PCI_PROBE_CONF2 0x0004 | |
18 | +#define PCI_PROBE_MMCONF 0x0008 | |
19 | +#define PCI_PROBE_MASK 0x000f | |
20 | +#define PCI_PROBE_NOEARLY 0x0010 | |
21 | + | |
22 | +#define PCI_NO_CHECKS 0x0400 | |
23 | +#define PCI_USE_PIRQ_MASK 0x0800 | |
24 | +#define PCI_ASSIGN_ROMS 0x1000 | |
25 | +#define PCI_BIOS_IRQ_SCAN 0x2000 | |
26 | +#define PCI_ASSIGN_ALL_BUSSES 0x4000 | |
27 | +#define PCI_CAN_SKIP_ISA_ALIGN 0x8000 | |
28 | +#define PCI_USE__CRS 0x10000 | |
29 | +#define PCI_CHECK_ENABLE_AMD_MMCONF 0x20000 | |
30 | +#define PCI_HAS_IO_ECS 0x40000 | |
31 | +#define PCI_NOASSIGN_ROMS 0x80000 | |
32 | + | |
33 | +extern unsigned int pci_probe; | |
34 | +extern unsigned long pirq_table_addr; | |
35 | + | |
36 | +enum pci_bf_sort_state { | |
37 | + pci_bf_sort_default, | |
38 | + pci_force_nobf, | |
39 | + pci_force_bf, | |
40 | + pci_dmi_bf, | |
41 | +}; | |
42 | + | |
43 | +/* pci-i386.c */ | |
44 | + | |
45 | +extern unsigned int pcibios_max_latency; | |
46 | + | |
47 | +void pcibios_resource_survey(void); | |
48 | + | |
49 | +/* pci-pc.c */ | |
50 | + | |
51 | +extern int pcibios_last_bus; | |
52 | +extern struct pci_bus *pci_root_bus; | |
53 | +extern struct pci_ops pci_root_ops; | |
54 | + | |
55 | +/* pci-irq.c */ | |
56 | + | |
57 | +struct irq_info { | |
58 | + u8 bus, devfn; /* Bus, device and function */ | |
59 | + struct { | |
60 | + u8 link; /* IRQ line ID, chipset dependent, | |
61 | + 0 = not routed */ | |
62 | + u16 bitmap; /* Available IRQs */ | |
63 | + } __attribute__((packed)) irq[4]; | |
64 | + u8 slot; /* Slot number, 0=onboard */ | |
65 | + u8 rfu; | |
66 | +} __attribute__((packed)); | |
67 | + | |
68 | +struct irq_routing_table { | |
69 | + u32 signature; /* PIRQ_SIGNATURE should be here */ | |
70 | + u16 version; /* PIRQ_VERSION */ | |
71 | + u16 size; /* Table size in bytes */ | |
72 | + u8 rtr_bus, rtr_devfn; /* Where the interrupt router lies */ | |
73 | + u16 exclusive_irqs; /* IRQs devoted exclusively to | |
74 | + PCI usage */ | |
75 | + u16 rtr_vendor, rtr_device; /* Vendor and device ID of | |
76 | + interrupt router */ | |
77 | + u32 miniport_data; /* Crap */ | |
78 | + u8 rfu[11]; | |
79 | + u8 checksum; /* Modulo 256 checksum must give 0 */ | |
80 | + struct irq_info slots[0]; | |
81 | +} __attribute__((packed)); | |
82 | + | |
83 | +extern unsigned int pcibios_irq_mask; | |
84 | + | |
85 | +extern int pcibios_scanned; | |
86 | +extern spinlock_t pci_config_lock; | |
87 | + | |
88 | +extern int (*pcibios_enable_irq)(struct pci_dev *dev); | |
89 | +extern void (*pcibios_disable_irq)(struct pci_dev *dev); | |
90 | + | |
91 | +struct pci_raw_ops { | |
92 | + int (*read)(unsigned int domain, unsigned int bus, unsigned int devfn, | |
93 | + int reg, int len, u32 *val); | |
94 | + int (*write)(unsigned int domain, unsigned int bus, unsigned int devfn, | |
95 | + int reg, int len, u32 val); | |
96 | +}; | |
97 | + | |
98 | +extern struct pci_raw_ops *raw_pci_ops; | |
99 | +extern struct pci_raw_ops *raw_pci_ext_ops; | |
100 | + | |
101 | +extern struct pci_raw_ops pci_direct_conf1; | |
102 | +extern bool port_cf9_safe; | |
103 | + | |
104 | +/* arch_initcall level */ | |
105 | +extern int pci_direct_probe(void); | |
106 | +extern void pci_direct_init(int type); | |
107 | +extern void pci_pcbios_init(void); | |
108 | +extern int pci_olpc_init(void); | |
109 | +extern void __init dmi_check_pciprobe(void); | |
110 | +extern void __init dmi_check_skip_isa_align(void); | |
111 | + | |
112 | +/* some common used subsys_initcalls */ | |
113 | +extern int __init pci_acpi_init(void); | |
114 | +extern int __init pcibios_irq_init(void); | |
115 | +extern int __init pci_visws_init(void); | |
116 | +extern int __init pci_numaq_init(void); | |
117 | +extern int __init pcibios_init(void); | |
118 | + | |
119 | +/* pci-mmconfig.c */ | |
120 | + | |
121 | +extern int __init pci_mmcfg_arch_init(void); | |
122 | +extern void __init pci_mmcfg_arch_free(void); | |
123 | + | |
124 | +/* | |
125 | + * AMD Fam10h CPUs are buggy, and cannot access MMIO config space | |
126 | + * on their northbrige except through the * %eax register. As such, you MUST | |
127 | + * NOT use normal IOMEM accesses, you need to only use the magic mmio-config | |
128 | + * accessor functions. | |
129 | + * In fact just use pci_config_*, nothing else please. | |
130 | + */ | |
131 | +static inline unsigned char mmio_config_readb(void __iomem *pos) | |
132 | +{ | |
133 | + u8 val; | |
134 | + asm volatile("movb (%1),%%al" : "=a" (val) : "r" (pos)); | |
135 | + return val; | |
136 | +} | |
137 | + | |
138 | +static inline unsigned short mmio_config_readw(void __iomem *pos) | |
139 | +{ | |
140 | + u16 val; | |
141 | + asm volatile("movw (%1),%%ax" : "=a" (val) : "r" (pos)); | |
142 | + return val; | |
143 | +} | |
144 | + | |
145 | +static inline unsigned int mmio_config_readl(void __iomem *pos) | |
146 | +{ | |
147 | + u32 val; | |
148 | + asm volatile("movl (%1),%%eax" : "=a" (val) : "r" (pos)); | |
149 | + return val; | |
150 | +} | |
151 | + | |
152 | +static inline void mmio_config_writeb(void __iomem *pos, u8 val) | |
153 | +{ | |
154 | + asm volatile("movb %%al,(%1)" : : "a" (val), "r" (pos) : "memory"); | |
155 | +} | |
156 | + | |
157 | +static inline void mmio_config_writew(void __iomem *pos, u16 val) | |
158 | +{ | |
159 | + asm volatile("movw %%ax,(%1)" : : "a" (val), "r" (pos) : "memory"); | |
160 | +} | |
161 | + | |
162 | +static inline void mmio_config_writel(void __iomem *pos, u32 val) | |
163 | +{ | |
164 | + asm volatile("movl %%eax,(%1)" : : "a" (val), "r" (pos) : "memory"); | |
165 | +} |
arch/x86/kernel/mmconf-fam10h_64.c
arch/x86/kernel/reboot.c
... | ... | @@ -12,6 +12,7 @@ |
12 | 12 | #include <asm/proto.h> |
13 | 13 | #include <asm/reboot_fixups.h> |
14 | 14 | #include <asm/reboot.h> |
15 | +#include <asm/pci_x86.h> | |
15 | 16 | |
16 | 17 | #ifdef CONFIG_X86_32 |
17 | 18 | # include <linux/dmi.h> |
... | ... | @@ -22,8 +23,6 @@ |
22 | 23 | #endif |
23 | 24 | |
24 | 25 | #include <mach_ipi.h> |
25 | -#include "../pci/pci.h" | |
26 | - | |
27 | 26 | |
28 | 27 | /* |
29 | 28 | * Power off function, if any |
arch/x86/pci/acpi.c
arch/x86/pci/amd_bus.c
arch/x86/pci/common.c
arch/x86/pci/direct.c
arch/x86/pci/early.c
arch/x86/pci/fixup.c
arch/x86/pci/i386.c
arch/x86/pci/init.c
arch/x86/pci/irq.c
arch/x86/pci/legacy.c
arch/x86/pci/mmconfig-shared.c
arch/x86/pci/mmconfig_32.c
... | ... | @@ -13,7 +13,7 @@ |
13 | 13 | #include <linux/init.h> |
14 | 14 | #include <linux/acpi.h> |
15 | 15 | #include <asm/e820.h> |
16 | -#include "pci.h" | |
16 | +#include <asm/pci_x86.h> | |
17 | 17 | |
18 | 18 | /* Assume systems with more busses have correct MCFG */ |
19 | 19 | #define mmcfg_virt_addr ((void __iomem *) fix_to_virt(FIX_PCIE_MCFG)) |
arch/x86/pci/mmconfig_64.c
arch/x86/pci/numaq_32.c
arch/x86/pci/olpc.c
arch/x86/pci/pcbios.c
... | ... | @@ -6,9 +6,8 @@ |
6 | 6 | #include <linux/init.h> |
7 | 7 | #include <linux/module.h> |
8 | 8 | #include <linux/uaccess.h> |
9 | -#include "pci.h" | |
10 | -#include "pci-functions.h" | |
11 | - | |
9 | +#include <asm/pci_x86.h> | |
10 | +#include <asm/mach-default/pci-functions.h> | |
12 | 11 | |
13 | 12 | /* BIOS32 signature: "_32_" */ |
14 | 13 | #define BIOS32_SIGNATURE (('_' << 0) + ('3' << 8) + ('2' << 16) + ('_' << 24)) |
arch/x86/pci/pci.h
1 | -/* | |
2 | - * Low-Level PCI Access for i386 machines. | |
3 | - * | |
4 | - * (c) 1999 Martin Mares <mj@ucw.cz> | |
5 | - */ | |
6 | - | |
7 | -#undef DEBUG | |
8 | - | |
9 | -#ifdef DEBUG | |
10 | -#define DBG(x...) printk(x) | |
11 | -#else | |
12 | -#define DBG(x...) | |
13 | -#endif | |
14 | - | |
15 | -#define PCI_PROBE_BIOS 0x0001 | |
16 | -#define PCI_PROBE_CONF1 0x0002 | |
17 | -#define PCI_PROBE_CONF2 0x0004 | |
18 | -#define PCI_PROBE_MMCONF 0x0008 | |
19 | -#define PCI_PROBE_MASK 0x000f | |
20 | -#define PCI_PROBE_NOEARLY 0x0010 | |
21 | - | |
22 | -#define PCI_NO_CHECKS 0x0400 | |
23 | -#define PCI_USE_PIRQ_MASK 0x0800 | |
24 | -#define PCI_ASSIGN_ROMS 0x1000 | |
25 | -#define PCI_BIOS_IRQ_SCAN 0x2000 | |
26 | -#define PCI_ASSIGN_ALL_BUSSES 0x4000 | |
27 | -#define PCI_CAN_SKIP_ISA_ALIGN 0x8000 | |
28 | -#define PCI_USE__CRS 0x10000 | |
29 | -#define PCI_CHECK_ENABLE_AMD_MMCONF 0x20000 | |
30 | -#define PCI_HAS_IO_ECS 0x40000 | |
31 | -#define PCI_NOASSIGN_ROMS 0x80000 | |
32 | - | |
33 | -extern unsigned int pci_probe; | |
34 | -extern unsigned long pirq_table_addr; | |
35 | - | |
36 | -enum pci_bf_sort_state { | |
37 | - pci_bf_sort_default, | |
38 | - pci_force_nobf, | |
39 | - pci_force_bf, | |
40 | - pci_dmi_bf, | |
41 | -}; | |
42 | - | |
43 | -/* pci-i386.c */ | |
44 | - | |
45 | -extern unsigned int pcibios_max_latency; | |
46 | - | |
47 | -void pcibios_resource_survey(void); | |
48 | - | |
49 | -/* pci-pc.c */ | |
50 | - | |
51 | -extern int pcibios_last_bus; | |
52 | -extern struct pci_bus *pci_root_bus; | |
53 | -extern struct pci_ops pci_root_ops; | |
54 | - | |
55 | -/* pci-irq.c */ | |
56 | - | |
57 | -struct irq_info { | |
58 | - u8 bus, devfn; /* Bus, device and function */ | |
59 | - struct { | |
60 | - u8 link; /* IRQ line ID, chipset dependent, 0=not routed */ | |
61 | - u16 bitmap; /* Available IRQs */ | |
62 | - } __attribute__((packed)) irq[4]; | |
63 | - u8 slot; /* Slot number, 0=onboard */ | |
64 | - u8 rfu; | |
65 | -} __attribute__((packed)); | |
66 | - | |
67 | -struct irq_routing_table { | |
68 | - u32 signature; /* PIRQ_SIGNATURE should be here */ | |
69 | - u16 version; /* PIRQ_VERSION */ | |
70 | - u16 size; /* Table size in bytes */ | |
71 | - u8 rtr_bus, rtr_devfn; /* Where the interrupt router lies */ | |
72 | - u16 exclusive_irqs; /* IRQs devoted exclusively to PCI usage */ | |
73 | - u16 rtr_vendor, rtr_device; /* Vendor and device ID of interrupt router */ | |
74 | - u32 miniport_data; /* Crap */ | |
75 | - u8 rfu[11]; | |
76 | - u8 checksum; /* Modulo 256 checksum must give zero */ | |
77 | - struct irq_info slots[0]; | |
78 | -} __attribute__((packed)); | |
79 | - | |
80 | -extern unsigned int pcibios_irq_mask; | |
81 | - | |
82 | -extern int pcibios_scanned; | |
83 | -extern spinlock_t pci_config_lock; | |
84 | - | |
85 | -extern int (*pcibios_enable_irq)(struct pci_dev *dev); | |
86 | -extern void (*pcibios_disable_irq)(struct pci_dev *dev); | |
87 | - | |
88 | -struct pci_raw_ops { | |
89 | - int (*read)(unsigned int domain, unsigned int bus, unsigned int devfn, | |
90 | - int reg, int len, u32 *val); | |
91 | - int (*write)(unsigned int domain, unsigned int bus, unsigned int devfn, | |
92 | - int reg, int len, u32 val); | |
93 | -}; | |
94 | - | |
95 | -extern struct pci_raw_ops *raw_pci_ops; | |
96 | -extern struct pci_raw_ops *raw_pci_ext_ops; | |
97 | - | |
98 | -extern struct pci_raw_ops pci_direct_conf1; | |
99 | -extern bool port_cf9_safe; | |
100 | - | |
101 | -/* arch_initcall level */ | |
102 | -extern int pci_direct_probe(void); | |
103 | -extern void pci_direct_init(int type); | |
104 | -extern void pci_pcbios_init(void); | |
105 | -extern int pci_olpc_init(void); | |
106 | -extern void __init dmi_check_pciprobe(void); | |
107 | -extern void __init dmi_check_skip_isa_align(void); | |
108 | - | |
109 | -/* some common used subsys_initcalls */ | |
110 | -extern int __init pci_acpi_init(void); | |
111 | -extern int __init pcibios_irq_init(void); | |
112 | -extern int __init pci_visws_init(void); | |
113 | -extern int __init pci_numaq_init(void); | |
114 | -extern int __init pcibios_init(void); | |
115 | - | |
116 | -/* pci-mmconfig.c */ | |
117 | - | |
118 | -extern int __init pci_mmcfg_arch_init(void); | |
119 | -extern void __init pci_mmcfg_arch_free(void); | |
120 | - | |
121 | -/* | |
122 | - * AMD Fam10h CPUs are buggy, and cannot access MMIO config space | |
123 | - * on their northbrige except through the * %eax register. As such, you MUST | |
124 | - * NOT use normal IOMEM accesses, you need to only use the magic mmio-config | |
125 | - * accessor functions. | |
126 | - * In fact just use pci_config_*, nothing else please. | |
127 | - */ | |
128 | -static inline unsigned char mmio_config_readb(void __iomem *pos) | |
129 | -{ | |
130 | - u8 val; | |
131 | - asm volatile("movb (%1),%%al" : "=a" (val) : "r" (pos)); | |
132 | - return val; | |
133 | -} | |
134 | - | |
135 | -static inline unsigned short mmio_config_readw(void __iomem *pos) | |
136 | -{ | |
137 | - u16 val; | |
138 | - asm volatile("movw (%1),%%ax" : "=a" (val) : "r" (pos)); | |
139 | - return val; | |
140 | -} | |
141 | - | |
142 | -static inline unsigned int mmio_config_readl(void __iomem *pos) | |
143 | -{ | |
144 | - u32 val; | |
145 | - asm volatile("movl (%1),%%eax" : "=a" (val) : "r" (pos)); | |
146 | - return val; | |
147 | -} | |
148 | - | |
149 | -static inline void mmio_config_writeb(void __iomem *pos, u8 val) | |
150 | -{ | |
151 | - asm volatile("movb %%al,(%1)" :: "a" (val), "r" (pos) : "memory"); | |
152 | -} | |
153 | - | |
154 | -static inline void mmio_config_writew(void __iomem *pos, u16 val) | |
155 | -{ | |
156 | - asm volatile("movw %%ax,(%1)" :: "a" (val), "r" (pos) : "memory"); | |
157 | -} | |
158 | - | |
159 | -static inline void mmio_config_writel(void __iomem *pos, u32 val) | |
160 | -{ | |
161 | - asm volatile("movl %%eax,(%1)" :: "a" (val), "r" (pos) : "memory"); | |
162 | -} |
arch/x86/pci/visws.c
... | ... | @@ -9,10 +9,9 @@ |
9 | 9 | #include <linux/init.h> |
10 | 10 | |
11 | 11 | #include <asm/setup.h> |
12 | +#include <asm/pci_x86.h> | |
12 | 13 | #include <asm/visws/cobalt.h> |
13 | 14 | #include <asm/visws/lithium.h> |
14 | - | |
15 | -#include "pci.h" | |
16 | 15 | |
17 | 16 | static int pci_visws_enable_irq(struct pci_dev *dev) { return 0; } |
18 | 17 | static void pci_visws_disable_irq(struct pci_dev *dev) { } |
drivers/pci/hotplug/cpqphp_core.c
drivers/pci/hotplug/cpqphp_pci.c
drivers/pci/hotplug/ibmphp_core.c
... | ... | @@ -35,7 +35,7 @@ |
35 | 35 | #include <linux/delay.h> |
36 | 36 | #include <linux/wait.h> |
37 | 37 | #include "../pci.h" |
38 | -#include "../../../arch/x86/pci/pci.h" /* for struct irq_routing_table */ | |
38 | +#include <asm/pci_x86.h> /* for struct irq_routing_table */ | |
39 | 39 | #include "ibmphp.h" |
40 | 40 | |
41 | 41 | #define attn_on(sl) ibmphp_hpc_writeslot (sl, HPC_SLOT_ATTNON) |