Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at b1404069f64457c94de241738fdca142c2e5698f 114 lines 2.7 kB view raw
1#ifndef __x86_PCI_H 2#define __x86_PCI_H 3 4#include <linux/mm.h> /* for struct page */ 5#include <linux/types.h> 6#include <linux/slab.h> 7#include <linux/string.h> 8#include <asm/scatterlist.h> 9#include <asm/io.h> 10 11#ifdef __KERNEL__ 12 13struct pci_sysdata { 14 int domain; /* PCI domain */ 15 int node; /* NUMA node */ 16#ifdef CONFIG_X86_64 17 void *iommu; /* IOMMU private data */ 18#endif 19}; 20 21extern int pci_routeirq; 22 23/* scan a bus after allocating a pci_sysdata for it */ 24extern struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops, 25 int node); 26extern struct pci_bus *pci_scan_bus_with_sysdata(int busno); 27 28static inline int pci_domain_nr(struct pci_bus *bus) 29{ 30 struct pci_sysdata *sd = bus->sysdata; 31 return sd->domain; 32} 33 34static inline int pci_proc_domain(struct pci_bus *bus) 35{ 36 return pci_domain_nr(bus); 37} 38 39 40/* Can be used to override the logic in pci_scan_bus for skipping 41 already-configured bus numbers - to be used for buggy BIOSes 42 or architectures with incomplete PCI setup by the loader */ 43 44#ifdef CONFIG_PCI 45extern unsigned int pcibios_assign_all_busses(void); 46#else 47#define pcibios_assign_all_busses() 0 48#endif 49#define pcibios_scan_all_fns(a, b) 0 50 51extern unsigned long pci_mem_start; 52#define PCIBIOS_MIN_IO 0x1000 53#define PCIBIOS_MIN_MEM (pci_mem_start) 54 55#define PCIBIOS_MIN_CARDBUS_IO 0x4000 56 57void pcibios_config_init(void); 58struct pci_bus *pcibios_scan_root(int bus); 59 60void pcibios_set_master(struct pci_dev *dev); 61void pcibios_penalize_isa_irq(int irq, int active); 62struct irq_routing_table *pcibios_get_irq_routing_table(void); 63int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq); 64 65 66#define HAVE_PCI_MMAP 67extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, 68 enum pci_mmap_state mmap_state, 69 int write_combine); 70 71 72#ifdef CONFIG_PCI 73extern void early_quirks(void); 74static inline void pci_dma_burst_advice(struct pci_dev *pdev, 75 enum pci_dma_burst_strategy *strat, 76 unsigned long *strategy_parameter) 77{ 78 *strat = PCI_DMA_BURST_INFINITY; 79 *strategy_parameter = ~0UL; 80} 81#else 82static inline void early_quirks(void) { } 83#endif 84 85#endif /* __KERNEL__ */ 86 87#ifdef CONFIG_X86_32 88# include "pci_32.h" 89#else 90# include "pci_64.h" 91#endif 92 93/* implement the pci_ DMA API in terms of the generic device dma_ one */ 94#include <asm-generic/pci-dma-compat.h> 95 96/* generic pci stuff */ 97#include <asm-generic/pci.h> 98 99#ifdef CONFIG_NUMA 100/* Returns the node based on pci bus */ 101static inline int __pcibus_to_node(struct pci_bus *bus) 102{ 103 struct pci_sysdata *sd = bus->sysdata; 104 105 return sd->node; 106} 107 108static inline cpumask_t __pcibus_to_cpumask(struct pci_bus *bus) 109{ 110 return node_to_cpumask(__pcibus_to_node(bus)); 111} 112#endif 113 114#endif