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