diff options
Diffstat (limited to 'arch/arm/include/asm/pci.h')
| -rw-r--r-- | arch/arm/include/asm/pci.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/arch/arm/include/asm/pci.h b/arch/arm/include/asm/pci.h new file mode 100644 index 000000000000..2d84792f2e12 --- /dev/null +++ b/arch/arm/include/asm/pci.h | |||
| @@ -0,0 +1,91 @@ | |||
| 1 | #ifndef ASMARM_PCI_H | ||
| 2 | #define ASMARM_PCI_H | ||
| 3 | |||
| 4 | #ifdef __KERNEL__ | ||
| 5 | #include <asm-generic/pci-dma-compat.h> | ||
| 6 | |||
| 7 | #include <asm/hardware.h> /* for PCIBIOS_MIN_* */ | ||
| 8 | |||
| 9 | #define pcibios_scan_all_fns(a, b) 0 | ||
| 10 | |||
| 11 | #ifdef CONFIG_PCI_HOST_ITE8152 | ||
| 12 | /* ITE bridge requires setting latency timer to avoid early bus access | ||
| 13 | termination by PIC bus mater devices | ||
| 14 | */ | ||
| 15 | extern void pcibios_set_master(struct pci_dev *dev); | ||
| 16 | #else | ||
| 17 | static inline void pcibios_set_master(struct pci_dev *dev) | ||
| 18 | { | ||
| 19 | /* No special bus mastering setup handling */ | ||
| 20 | } | ||
| 21 | #endif | ||
| 22 | |||
| 23 | static inline void pcibios_penalize_isa_irq(int irq, int active) | ||
| 24 | { | ||
| 25 | /* We don't do dynamic PCI IRQ allocation */ | ||
| 26 | } | ||
| 27 | |||
| 28 | /* | ||
| 29 | * The PCI address space does equal the physical memory address space. | ||
| 30 | * The networking and block device layers use this boolean for bounce | ||
| 31 | * buffer decisions. | ||
| 32 | */ | ||
| 33 | #define PCI_DMA_BUS_IS_PHYS (0) | ||
| 34 | |||
| 35 | /* | ||
| 36 | * Whether pci_unmap_{single,page} is a nop depends upon the | ||
| 37 | * configuration. | ||
| 38 | */ | ||
| 39 | #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME; | ||
| 40 | #define DECLARE_PCI_UNMAP_LEN(LEN_NAME) __u32 LEN_NAME; | ||
| 41 | #define pci_unmap_addr(PTR, ADDR_NAME) ((PTR)->ADDR_NAME) | ||
| 42 | #define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) (((PTR)->ADDR_NAME) = (VAL)) | ||
| 43 | #define pci_unmap_len(PTR, LEN_NAME) ((PTR)->LEN_NAME) | ||
| 44 | #define pci_unmap_len_set(PTR, LEN_NAME, VAL) (((PTR)->LEN_NAME) = (VAL)) | ||
| 45 | |||
| 46 | #ifdef CONFIG_PCI | ||
| 47 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
| 48 | enum pci_dma_burst_strategy *strat, | ||
| 49 | unsigned long *strategy_parameter) | ||
| 50 | { | ||
| 51 | *strat = PCI_DMA_BURST_INFINITY; | ||
| 52 | *strategy_parameter = ~0UL; | ||
| 53 | } | ||
| 54 | #endif | ||
| 55 | |||
| 56 | #define HAVE_PCI_MMAP | ||
| 57 | extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, | ||
| 58 | enum pci_mmap_state mmap_state, int write_combine); | ||
| 59 | |||
| 60 | extern void | ||
| 61 | pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region, | ||
| 62 | struct resource *res); | ||
| 63 | |||
| 64 | extern void | ||
| 65 | pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, | ||
| 66 | struct pci_bus_region *region); | ||
| 67 | |||
| 68 | static inline struct resource * | ||
| 69 | pcibios_select_root(struct pci_dev *pdev, struct resource *res) | ||
| 70 | { | ||
| 71 | struct resource *root = NULL; | ||
| 72 | |||
| 73 | if (res->flags & IORESOURCE_IO) | ||
| 74 | root = &ioport_resource; | ||
| 75 | if (res->flags & IORESOURCE_MEM) | ||
| 76 | root = &iomem_resource; | ||
| 77 | |||
| 78 | return root; | ||
| 79 | } | ||
| 80 | |||
| 81 | /* | ||
| 82 | * Dummy implementation; always return 0. | ||
| 83 | */ | ||
| 84 | static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) | ||
| 85 | { | ||
| 86 | return 0; | ||
| 87 | } | ||
| 88 | |||
| 89 | #endif /* __KERNEL__ */ | ||
| 90 | |||
| 91 | #endif | ||
