14baa9922SRussell King #ifndef ASMARM_PCI_H 24baa9922SRussell King #define ASMARM_PCI_H 34baa9922SRussell King 44baa9922SRussell King #ifdef __KERNEL__ 54baa9922SRussell King #include <asm-generic/pci-dma-compat.h> 64baa9922SRussell King 7a09e64fbSRussell King #include <mach/hardware.h> /* for PCIBIOS_MIN_* */ 84baa9922SRussell King 94baa9922SRussell King #define pcibios_scan_all_fns(a, b) 0 104baa9922SRussell King 114baa9922SRussell King #ifdef CONFIG_PCI_HOST_ITE8152 124baa9922SRussell King /* ITE bridge requires setting latency timer to avoid early bus access 134baa9922SRussell King termination by PIC bus mater devices 144baa9922SRussell King */ 154baa9922SRussell King extern void pcibios_set_master(struct pci_dev *dev); 164baa9922SRussell King #else 174baa9922SRussell King static inline void pcibios_set_master(struct pci_dev *dev) 184baa9922SRussell King { 194baa9922SRussell King /* No special bus mastering setup handling */ 204baa9922SRussell King } 214baa9922SRussell King #endif 224baa9922SRussell King 234baa9922SRussell King static inline void pcibios_penalize_isa_irq(int irq, int active) 244baa9922SRussell King { 254baa9922SRussell King /* We don't do dynamic PCI IRQ allocation */ 264baa9922SRussell King } 274baa9922SRussell King 284baa9922SRussell King /* 294baa9922SRussell King * The PCI address space does equal the physical memory address space. 304baa9922SRussell King * The networking and block device layers use this boolean for bounce 314baa9922SRussell King * buffer decisions. 324baa9922SRussell King */ 3388c381bfSRussell King #define PCI_DMA_BUS_IS_PHYS (1) 344baa9922SRussell King 354baa9922SRussell King /* 364baa9922SRussell King * Whether pci_unmap_{single,page} is a nop depends upon the 374baa9922SRussell King * configuration. 384baa9922SRussell King */ 394baa9922SRussell King #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME; 404baa9922SRussell King #define DECLARE_PCI_UNMAP_LEN(LEN_NAME) __u32 LEN_NAME; 414baa9922SRussell King #define pci_unmap_addr(PTR, ADDR_NAME) ((PTR)->ADDR_NAME) 424baa9922SRussell King #define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) (((PTR)->ADDR_NAME) = (VAL)) 434baa9922SRussell King #define pci_unmap_len(PTR, LEN_NAME) ((PTR)->LEN_NAME) 444baa9922SRussell King #define pci_unmap_len_set(PTR, LEN_NAME, VAL) (((PTR)->LEN_NAME) = (VAL)) 454baa9922SRussell King 464baa9922SRussell King #ifdef CONFIG_PCI 474baa9922SRussell King static inline void pci_dma_burst_advice(struct pci_dev *pdev, 484baa9922SRussell King enum pci_dma_burst_strategy *strat, 494baa9922SRussell King unsigned long *strategy_parameter) 504baa9922SRussell King { 514baa9922SRussell King *strat = PCI_DMA_BURST_INFINITY; 524baa9922SRussell King *strategy_parameter = ~0UL; 534baa9922SRussell King } 544baa9922SRussell King #endif 554baa9922SRussell King 564baa9922SRussell King #define HAVE_PCI_MMAP 574baa9922SRussell King extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, 584baa9922SRussell King enum pci_mmap_state mmap_state, int write_combine); 594baa9922SRussell King 604baa9922SRussell King extern void 614baa9922SRussell King pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region, 624baa9922SRussell King struct resource *res); 634baa9922SRussell King 644baa9922SRussell King extern void 654baa9922SRussell King pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, 664baa9922SRussell King struct pci_bus_region *region); 674baa9922SRussell King 684baa9922SRussell King static inline struct resource * 694baa9922SRussell King pcibios_select_root(struct pci_dev *pdev, struct resource *res) 704baa9922SRussell King { 714baa9922SRussell King struct resource *root = NULL; 724baa9922SRussell King 734baa9922SRussell King if (res->flags & IORESOURCE_IO) 744baa9922SRussell King root = &ioport_resource; 754baa9922SRussell King if (res->flags & IORESOURCE_MEM) 764baa9922SRussell King root = &iomem_resource; 774baa9922SRussell King 784baa9922SRussell King return root; 794baa9922SRussell King } 804baa9922SRussell King 814baa9922SRussell King /* 824baa9922SRussell King * Dummy implementation; always return 0. 834baa9922SRussell King */ 844baa9922SRussell King static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) 854baa9922SRussell King { 864baa9922SRussell King return 0; 874baa9922SRussell King } 884baa9922SRussell King 894baa9922SRussell King #endif /* __KERNEL__ */ 904baa9922SRussell King 914baa9922SRussell King #endif 92