xref: /openbmc/linux/arch/arm/include/asm/pci.h (revision 4baa9922)
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 
74baa9922SRussell King #include <asm/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  */
334baa9922SRussell King #define PCI_DMA_BUS_IS_PHYS     (0)
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