Subversion Repositories Kolibri OS

Rev

Rev 6934 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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 <linux/scatterlist.h>
  9. #include <asm/io.h>
  10. #include <asm/x86_init.h>
  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
  23. };
  24.  
  25. extern int pci_routeirq;
  26. extern int noioapicquirk;
  27. extern int noioapicreroute;
  28.  
  29. #ifdef CONFIG_PCI
  30.  
  31. #ifdef CONFIG_PCI_DOMAINS
  32. static inline int pci_domain_nr(struct pci_bus *bus)
  33. {
  34.         struct pci_sysdata *sd = bus->sysdata;
  35.         return sd->domain;
  36. }
  37.  
  38. static inline int pci_proc_domain(struct pci_bus *bus)
  39. {
  40.         return pci_domain_nr(bus);
  41. }
  42. #endif
  43.  
  44. /* Can be used to override the logic in pci_scan_bus for skipping
  45.    already-configured bus numbers - to be used for buggy BIOSes
  46.    or architectures with incomplete PCI setup by the loader */
  47.  
  48. extern unsigned int pcibios_assign_all_busses(void);
  49. extern int pci_legacy_init(void);
  50. # ifdef CONFIG_ACPI
  51. #  define x86_default_pci_init pci_acpi_init
  52. # else
  53. #  define x86_default_pci_init pci_legacy_init
  54. # endif
  55. #else
  56. # define pcibios_assign_all_busses()    0
  57. # define x86_default_pci_init           NULL
  58. #endif
  59.  
  60. extern unsigned long pci_mem_start;
  61. #define PCIBIOS_MIN_IO          0x1000
  62. #define PCIBIOS_MIN_MEM         (pci_mem_start)
  63.  
  64. #define PCIBIOS_MIN_CARDBUS_IO  0x4000
  65.  
  66. extern int pcibios_enabled;
  67. void pcibios_config_init(void);
  68. void pcibios_scan_root(int bus);
  69.  
  70. void pcibios_set_master(struct pci_dev *dev);
  71. struct irq_routing_table *pcibios_get_irq_routing_table(void);
  72. int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq);
  73.  
  74.  
  75. #define HAVE_PCI_MMAP
  76. extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
  77.                                enum pci_mmap_state mmap_state,
  78.                                int write_combine);
  79.  
  80.  
  81. #ifdef CONFIG_PCI
  82. extern void early_quirks(void);
  83. #else
  84. static inline void early_quirks(void) { }
  85. #endif
  86.  
  87. extern void pci_iommu_alloc(void);
  88.  
  89. #ifdef CONFIG_PCI_MSI
  90. /* implemented in arch/x86/kernel/apic/io_apic. */
  91. struct msi_desc;
  92. int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type);
  93. void native_teardown_msi_irq(unsigned int irq);
  94. void native_restore_msi_irqs(struct pci_dev *dev);
  95. #else
  96. #define native_setup_msi_irqs           NULL
  97. #define native_teardown_msi_irq         NULL
  98. #endif
  99.  
  100. #define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys)
  101.  
  102. #endif  /* __KERNEL__ */
  103.  
  104. #ifdef CONFIG_X86_64
  105. #include <asm/pci_64.h>
  106. #endif
  107.  
  108. /* implement the pci_ DMA API in terms of the generic device dma_ one */
  109. #include <asm-generic/pci-dma-compat.h>
  110.  
  111. /* generic pci stuff */
  112. #include <asm-generic/pci.h>
  113.  
  114. #ifdef CONFIG_NUMA
  115. /* Returns the node based on pci bus */
  116. static inline int __pcibus_to_node(const struct pci_bus *bus)
  117. {
  118.         const struct pci_sysdata *sd = bus->sysdata;
  119.  
  120.         return sd->node;
  121. }
  122.  
  123. static inline const struct cpumask *
  124. cpumask_of_pcibus(const struct pci_bus *bus)
  125. {
  126.         int node;
  127.  
  128.         node = __pcibus_to_node(bus);
  129.         return (node == -1) ? cpu_online_mask :
  130.                               cpumask_of_node(node);
  131. }
  132. #endif
  133.  
  134. struct pci_setup_rom {
  135.     uint16_t vendor;
  136.         uint16_t devid;
  137.         uint64_t pcilen;
  138.         unsigned long segment;
  139.         unsigned long bus;
  140.         unsigned long device;
  141.         unsigned long function;
  142.         uint8_t romdata[0];
  143. };
  144.  
  145. #endif /* _ASM_X86_PCI_H */
  146.