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