home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-i386 / pci.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.1 KB  |  120 lines

  1. #ifndef __i386_PCI_H
  2. #define __i386_PCI_H
  3.  
  4.  
  5. #ifdef __KERNEL__
  6. #include <linux/mm.h>        /* for struct page */
  7.  
  8. /* Can be used to override the logic in pci_scan_bus for skipping
  9.    already-configured bus numbers - to be used for buggy BIOSes
  10.    or architectures with incomplete PCI setup by the loader */
  11.  
  12. #ifdef CONFIG_PCI
  13. extern unsigned int pcibios_assign_all_busses(void);
  14. #else
  15. #define pcibios_assign_all_busses()    0
  16. #endif
  17. #define pcibios_scan_all_fns(a, b)    0
  18.  
  19. extern unsigned long pci_mem_start;
  20. #define PCIBIOS_MIN_IO        0x1000
  21. #define PCIBIOS_MIN_MEM        (pci_mem_start)
  22.  
  23. #define PCIBIOS_MIN_CARDBUS_IO    0x4000
  24.  
  25. void pcibios_config_init(void);
  26. struct pci_bus * pcibios_scan_root(int bus);
  27.  
  28. void pcibios_set_master(struct pci_dev *dev);
  29. void pcibios_penalize_isa_irq(int irq, int active);
  30. struct irq_routing_table *pcibios_get_irq_routing_table(void);
  31. int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq);
  32.  
  33. /* Dynamic DMA mapping stuff.
  34.  * i386 has everything mapped statically.
  35.  */
  36.  
  37. #include <linux/types.h>
  38. #include <linux/slab.h>
  39. #include <asm/scatterlist.h>
  40. #include <linux/string.h>
  41. #include <asm/io.h>
  42.  
  43. struct pci_dev;
  44.  
  45. /* The PCI address space does equal the physical memory
  46.  * address space.  The networking and block device layers use
  47.  * this boolean for bounce buffer decisions.
  48.  */
  49. #define PCI_DMA_BUS_IS_PHYS    (1)
  50.  
  51. /* pci_unmap_{page,single} is a nop so... */
  52. #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)
  53. #define DECLARE_PCI_UNMAP_LEN(LEN_NAME)
  54. #define pci_unmap_addr(PTR, ADDR_NAME)        (0)
  55. #define pci_unmap_addr_set(PTR, ADDR_NAME, VAL)    do { } while (0)
  56. #define pci_unmap_len(PTR, LEN_NAME)        (0)
  57. #define pci_unmap_len_set(PTR, LEN_NAME, VAL)    do { } while (0)
  58.  
  59. /* This is always fine. */
  60. #define pci_dac_dma_supported(pci_dev, mask)    (1)
  61.  
  62. static inline dma64_addr_t
  63. pci_dac_page_to_dma(struct pci_dev *pdev, struct page *page, unsigned long offset, int direction)
  64. {
  65.     return ((dma64_addr_t) page_to_phys(page) +
  66.         (dma64_addr_t) offset);
  67. }
  68.  
  69. static inline struct page *
  70. pci_dac_dma_to_page(struct pci_dev *pdev, dma64_addr_t dma_addr)
  71. {
  72.     return pfn_to_page(dma_addr >> PAGE_SHIFT);
  73. }
  74.  
  75. static inline unsigned long
  76. pci_dac_dma_to_offset(struct pci_dev *pdev, dma64_addr_t dma_addr)
  77. {
  78.     return (dma_addr & ~PAGE_MASK);
  79. }
  80.  
  81. static inline void
  82. pci_dac_dma_sync_single_for_cpu(struct pci_dev *pdev, dma64_addr_t dma_addr, size_t len, int direction)
  83. {
  84. }
  85.  
  86. static inline void
  87. pci_dac_dma_sync_single_for_device(struct pci_dev *pdev, dma64_addr_t dma_addr, size_t len, int direction)
  88. {
  89.     flush_write_buffers();
  90. }
  91.  
  92. #define HAVE_PCI_MMAP
  93. extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
  94.                    enum pci_mmap_state mmap_state, int write_combine);
  95.  
  96.  
  97. static inline void pcibios_add_platform_entries(struct pci_dev *dev)
  98. {
  99. }
  100.  
  101. #ifdef CONFIG_PCI
  102. static inline void pci_dma_burst_advice(struct pci_dev *pdev,
  103.                     enum pci_dma_burst_strategy *strat,
  104.                     unsigned long *strategy_parameter)
  105. {
  106.     *strat = PCI_DMA_BURST_INFINITY;
  107.     *strategy_parameter = ~0UL;
  108. }
  109. #endif
  110.  
  111. #endif /* __KERNEL__ */
  112.  
  113. /* implement the pci_ DMA API in terms of the generic device dma_ one */
  114. #include <asm-generic/pci-dma-compat.h>
  115.  
  116. /* generic pci stuff */
  117. #include <asm-generic/pci.h>
  118.  
  119. #endif /* __i386_PCI_H */
  120.