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-sh64 / pci.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.3 KB  |  121 lines

  1. #ifndef __ASM_SH64_PCI_H
  2. #define __ASM_SH64_PCI_H
  3.  
  4. #ifdef __KERNEL__
  5.  
  6. #include <linux/dma-mapping.h>
  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. #define pcibios_assign_all_busses()     1
  13.  
  14. /*
  15.  * These are currently the correct values for the STM overdrive board
  16.  * We need some way of setting this on a board specific way, it will
  17.  * not be the same on other boards I think
  18.  */
  19. #if defined(CONFIG_CPU_SUBTYPE_SH5_101) || defined(CONFIG_CPU_SUBTYPE_SH5_103)
  20. #define PCIBIOS_MIN_IO          0x2000
  21. #define PCIBIOS_MIN_MEM         0x40000000
  22. #endif
  23.  
  24. extern void pcibios_set_master(struct pci_dev *dev);
  25.  
  26. /*
  27.  * Set penalize isa irq function
  28.  */
  29. static inline void pcibios_penalize_isa_irq(int irq, int active)
  30. {
  31.     /* We don't do dynamic PCI IRQ allocation */
  32. }
  33.  
  34. /* Dynamic DMA mapping stuff.
  35.  * SuperH has everything mapped statically like x86.
  36.  */
  37.  
  38. /* The PCI address space does equal the physical memory
  39.  * address space.  The networking and block device layers use
  40.  * this boolean for bounce buffer decisions.
  41.  */
  42. #define PCI_DMA_BUS_IS_PHYS    (1)
  43.  
  44. #include <linux/types.h>
  45. #include <linux/slab.h>
  46. #include <asm/scatterlist.h>
  47. #include <linux/string.h>
  48. #include <asm/io.h>
  49.  
  50. /* pci_unmap_{single,page} being a nop depends upon the
  51.  * configuration.
  52.  */
  53. #ifdef CONFIG_SH_PCIDMA_NONCOHERENT
  54. #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)    \
  55.     dma_addr_t ADDR_NAME;
  56. #define DECLARE_PCI_UNMAP_LEN(LEN_NAME)        \
  57.     __u32 LEN_NAME;
  58. #define pci_unmap_addr(PTR, ADDR_NAME)            \
  59.     ((PTR)->ADDR_NAME)
  60. #define pci_unmap_addr_set(PTR, ADDR_NAME, VAL)        \
  61.     (((PTR)->ADDR_NAME) = (VAL))
  62. #define pci_unmap_len(PTR, LEN_NAME)            \
  63.     ((PTR)->LEN_NAME)
  64. #define pci_unmap_len_set(PTR, LEN_NAME, VAL)        \
  65.     (((PTR)->LEN_NAME) = (VAL))
  66. #else
  67. #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)
  68. #define DECLARE_PCI_UNMAP_LEN(LEN_NAME)
  69. #define pci_unmap_addr(PTR, ADDR_NAME)        (0)
  70. #define pci_unmap_addr_set(PTR, ADDR_NAME, VAL)    do { } while (0)
  71. #define pci_unmap_len(PTR, LEN_NAME)        (0)
  72. #define pci_unmap_len_set(PTR, LEN_NAME, VAL)    do { } while (0)
  73. #endif
  74.  
  75. /* Not supporting more than 32-bit PCI bus addresses now, but
  76.  * must satisfy references to this function.  Change if needed.
  77.  */
  78. #define pci_dac_dma_supported(pci_dev, mask) (0)
  79.  
  80. /* These macros should be used after a pci_map_sg call has been done
  81.  * to get bus addresses of each of the SG entries and their lengths.
  82.  * You should only work with the number of sg entries pci_map_sg
  83.  * returns, or alternatively stop on the first sg_dma_len(sg) which
  84.  * is 0.
  85.  */
  86. #define sg_dma_address(sg)    ((sg)->dma_address)
  87. #define sg_dma_len(sg)        ((sg)->length)
  88.  
  89. #ifdef CONFIG_PCI
  90. static inline void pci_dma_burst_advice(struct pci_dev *pdev,
  91.                     enum pci_dma_burst_strategy *strat,
  92.                     unsigned long *strategy_parameter)
  93. {
  94.     *strat = PCI_DMA_BURST_INFINITY;
  95.     *strategy_parameter = ~0UL;
  96. }
  97. #endif
  98.  
  99. /* Board-specific fixup routines. */
  100. extern void pcibios_fixup(void);
  101. extern void pcibios_fixup_irqs(void);
  102.  
  103. #ifdef CONFIG_PCI_AUTO
  104. extern int pciauto_assign_resources(int busno, struct pci_channel *hose);
  105. #endif
  106.  
  107. static inline void pcibios_add_platform_entries(struct pci_dev *dev)
  108. {
  109. }
  110.  
  111. #endif /* __KERNEL__ */
  112.  
  113. /* generic pci stuff */
  114. #include <asm-generic/pci.h>
  115.  
  116. /* generic DMA-mapping stuff */
  117. #include <asm-generic/pci-dma-compat.h>
  118.  
  119. #endif /* __ASM_SH64_PCI_H */
  120.  
  121.