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> 6dc8d966bSRob Herring #include <asm-generic/pci-bridge.h> 74baa9922SRussell King 852882173SAnton Vorontsov #include <asm/mach/pci.h> /* for pci_sys_data */ 9a09e64fbSRussell King #include <mach/hardware.h> /* for PCIBIOS_MIN_* */ 104baa9922SRussell King 11dc8d966bSRob Herring static inline int pcibios_assign_all_busses(void) 12dc8d966bSRob Herring { 13dc8d966bSRob Herring return pci_has_flag(PCI_REASSIGN_ALL_RSRC); 14dc8d966bSRob Herring } 15dc8d966bSRob Herring 1652882173SAnton Vorontsov #ifdef CONFIG_PCI_DOMAINS 1752882173SAnton Vorontsov static inline int pci_domain_nr(struct pci_bus *bus) 1852882173SAnton Vorontsov { 1952882173SAnton Vorontsov struct pci_sys_data *root = bus->sysdata; 2052882173SAnton Vorontsov 2152882173SAnton Vorontsov return root->domain; 2252882173SAnton Vorontsov } 2352882173SAnton Vorontsov 2452882173SAnton Vorontsov static inline int pci_proc_domain(struct pci_bus *bus) 2552882173SAnton Vorontsov { 2652882173SAnton Vorontsov return pci_domain_nr(bus); 2752882173SAnton Vorontsov } 2852882173SAnton Vorontsov #endif /* CONFIG_PCI_DOMAINS */ 2952882173SAnton Vorontsov 304baa9922SRussell King #ifdef CONFIG_PCI_HOST_ITE8152 314baa9922SRussell King /* ITE bridge requires setting latency timer to avoid early bus access 324baa9922SRussell King termination by PIC bus mater devices 334baa9922SRussell King */ 344baa9922SRussell King extern void pcibios_set_master(struct pci_dev *dev); 354baa9922SRussell King #else 364baa9922SRussell King static inline void pcibios_set_master(struct pci_dev *dev) 374baa9922SRussell King { 384baa9922SRussell King /* No special bus mastering setup handling */ 394baa9922SRussell King } 404baa9922SRussell King #endif 414baa9922SRussell King 424baa9922SRussell King static inline void pcibios_penalize_isa_irq(int irq, int active) 434baa9922SRussell King { 444baa9922SRussell King /* We don't do dynamic PCI IRQ allocation */ 454baa9922SRussell King } 464baa9922SRussell King 474baa9922SRussell King /* 484baa9922SRussell King * The PCI address space does equal the physical memory address space. 494baa9922SRussell King * The networking and block device layers use this boolean for bounce 504baa9922SRussell King * buffer decisions. 514baa9922SRussell King */ 5288c381bfSRussell King #define PCI_DMA_BUS_IS_PHYS (1) 534baa9922SRussell King 544baa9922SRussell King #ifdef CONFIG_PCI 554baa9922SRussell King static inline void pci_dma_burst_advice(struct pci_dev *pdev, 564baa9922SRussell King enum pci_dma_burst_strategy *strat, 574baa9922SRussell King unsigned long *strategy_parameter) 584baa9922SRussell King { 594baa9922SRussell King *strat = PCI_DMA_BURST_INFINITY; 604baa9922SRussell King *strategy_parameter = ~0UL; 614baa9922SRussell King } 624baa9922SRussell King #endif 634baa9922SRussell King 644baa9922SRussell King #define HAVE_PCI_MMAP 654baa9922SRussell King extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, 664baa9922SRussell King enum pci_mmap_state mmap_state, int write_combine); 674baa9922SRussell King 684baa9922SRussell King extern void 694baa9922SRussell King pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region, 704baa9922SRussell King struct resource *res); 714baa9922SRussell King 724baa9922SRussell King extern void 734baa9922SRussell King pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, 744baa9922SRussell King struct pci_bus_region *region); 754baa9922SRussell King 764baa9922SRussell King /* 774baa9922SRussell King * Dummy implementation; always return 0. 784baa9922SRussell King */ 794baa9922SRussell King static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) 804baa9922SRussell King { 814baa9922SRussell King return 0; 824baa9922SRussell King } 834baa9922SRussell King 844baa9922SRussell King #endif /* __KERNEL__ */ 854baa9922SRussell King 864baa9922SRussell King #endif 87