home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / x86 / include / asm / pci.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.7 KB  |  115 lines

  1. #ifndef _ASM_X86_PCI_H
  2. #define _ASM_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.  
  13. struct 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.  
  21. extern int pci_routeirq;
  22.  
  23. /* scan a bus after allocating a pci_sysdata for it */
  24. extern struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops,
  25.                         int node);
  26. extern struct pci_bus *pci_scan_bus_with_sysdata(int busno);
  27.  
  28. static inline int pci_domain_nr(struct pci_bus *bus)
  29. {
  30.     struct pci_sysdata *sd = bus->sysdata;
  31.     return sd->domain;
  32. }
  33.  
  34. static 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
  45. extern 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.  
  51. extern 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.  
  57. void pcibios_config_init(void);
  58. struct pci_bus *pcibios_scan_root(int bus);
  59.  
  60. void pcibios_set_master(struct pci_dev *dev);
  61. void pcibios_penalize_isa_irq(int irq, int active);
  62. struct irq_routing_table *pcibios_get_irq_routing_table(void);
  63. int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq);
  64.  
  65.  
  66. #define HAVE_PCI_MMAP
  67. extern 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
  73. extern void early_quirks(void);
  74. static 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
  82. static 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 */
  101. static inline int __pcibus_to_node(struct pci_bus *bus)
  102. {
  103.     struct pci_sysdata *sd = bus->sysdata;
  104.  
  105.     return sd->node;
  106. }
  107.  
  108. static 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 /* _ASM_X86_PCI_H */
  115.