Subversion Repositories Kolibri OS

Rev

Rev 7143 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6102 serge 1
#ifndef _ASM_X86_PCI_H
2
#define _ASM_X86_PCI_H
3
 
4
#include  /* for struct page */
5
#include 
6
#include 
7
#include 
8
#include 
9
#include 
10
#include 
11
 
12
#ifdef __KERNEL__
13
 
14
struct pci_sysdata {
15
	int		domain;		/* PCI domain */
16
	int		node;		/* NUMA node */
17
#ifdef CONFIG_ACPI
18
	struct acpi_device *companion;	/* ACPI companion device */
19
#endif
20
#ifdef CONFIG_X86_64
21
	void		*iommu;		/* IOMMU private data */
22
#endif
7143 serge 23
#ifdef CONFIG_PCI_MSI_IRQ_DOMAIN
24
	void		*fwnode;	/* IRQ domain for MSI assignment */
25
#endif
6102 serge 26
};
27
 
28
extern int pci_routeirq;
29
extern int noioapicquirk;
30
extern int noioapicreroute;
31
 
32
#ifdef CONFIG_PCI
33
 
34
#ifdef CONFIG_PCI_DOMAINS
35
static inline int pci_domain_nr(struct pci_bus *bus)
36
{
37
	struct pci_sysdata *sd = bus->sysdata;
7143 serge 38
 
6102 serge 39
	return sd->domain;
40
}
41
 
42
static inline int pci_proc_domain(struct pci_bus *bus)
43
{
44
	return pci_domain_nr(bus);
45
}
46
#endif
47
 
7143 serge 48
#ifdef CONFIG_PCI_MSI_IRQ_DOMAIN
49
static inline void *_pci_root_bus_fwnode(struct pci_bus *bus)
50
{
51
	struct pci_sysdata *sd = bus->sysdata;
52
 
53
	return sd->fwnode;
54
}
55
 
56
#define pci_root_bus_fwnode	_pci_root_bus_fwnode
57
#endif
58
 
6102 serge 59
/* Can be used to override the logic in pci_scan_bus for skipping
60
   already-configured bus numbers - to be used for buggy BIOSes
61
   or architectures with incomplete PCI setup by the loader */
62
 
9493 turbocat 63
extern int pcibios_assign_all_busses(void);
6102 serge 64
extern int pci_legacy_init(void);
65
# ifdef CONFIG_ACPI
66
#  define x86_default_pci_init pci_acpi_init
67
# else
68
#  define x86_default_pci_init pci_legacy_init
69
# endif
70
#else
71
# define pcibios_assign_all_busses()	0
72
# define x86_default_pci_init		NULL
73
#endif
74
 
75
extern unsigned long pci_mem_start;
76
#define PCIBIOS_MIN_IO		0x1000
77
#define PCIBIOS_MIN_MEM		(pci_mem_start)
78
 
79
#define PCIBIOS_MIN_CARDBUS_IO	0x4000
80
 
81
extern int pcibios_enabled;
82
void pcibios_config_init(void);
83
void pcibios_scan_root(int bus);
84
 
85
void pcibios_set_master(struct pci_dev *dev);
86
struct irq_routing_table *pcibios_get_irq_routing_table(void);
87
int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq);
88
 
89
 
90
#define HAVE_PCI_MMAP
91
extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
92
			       enum pci_mmap_state mmap_state,
93
			       int write_combine);
94
 
95
 
96
#ifdef CONFIG_PCI
97
extern void early_quirks(void);
98
#else
99
static inline void early_quirks(void) { }
100
#endif
101
 
102
extern void pci_iommu_alloc(void);
103
 
104
#ifdef CONFIG_PCI_MSI
105
/* implemented in arch/x86/kernel/apic/io_apic. */
106
struct msi_desc;
107
int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type);
108
void native_teardown_msi_irq(unsigned int irq);
109
void native_restore_msi_irqs(struct pci_dev *dev);
110
#else
111
#define native_setup_msi_irqs		NULL
112
#define native_teardown_msi_irq		NULL
113
#endif
114
 
115
#define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys)
116
 
117
#endif  /* __KERNEL__ */
118
 
119
#ifdef CONFIG_X86_64
120
#include 
121
#endif
122
 
123
/* generic pci stuff */
124
#include 
125
 
126
#ifdef CONFIG_NUMA
127
/* Returns the node based on pci bus */
128
static inline int __pcibus_to_node(const struct pci_bus *bus)
129
{
130
	const struct pci_sysdata *sd = bus->sysdata;
131
 
132
	return sd->node;
133
}
134
 
135
static inline const struct cpumask *
136
cpumask_of_pcibus(const struct pci_bus *bus)
137
{
138
	int node;
139
 
140
	node = __pcibus_to_node(bus);
141
	return (node == -1) ? cpu_online_mask :
142
			      cpumask_of_node(node);
143
}
144
#endif
145
 
146
struct pci_setup_rom {
7143 serge 147
	uint16_t vendor;
6102 serge 148
	uint16_t devid;
149
	uint64_t pcilen;
150
	unsigned long segment;
151
	unsigned long bus;
152
	unsigned long device;
153
	unsigned long function;
154
	uint8_t romdata[0];
155
};
156
 
157
#endif /* _ASM_X86_PCI_H */