1/* 2 * Arch specific extensions to struct device 3 * 4 * This file is released under the GPLv2 5 */ 6#ifndef _ASM_POWERPC_DEVICE_H 7#define _ASM_POWERPC_DEVICE_H 8 9struct dma_map_ops; 10struct device_node; 11#ifdef CONFIG_PPC64 12struct pci_dn; 13#endif 14 15/* 16 * Arch extensions to struct device. 17 * 18 * When adding fields, consider macio_add_one_device in 19 * drivers/macintosh/macio_asic.c 20 */ 21struct dev_archdata { 22 /* DMA operations on that device */ 23 struct dma_map_ops *dma_ops; 24 25 /* 26 * When an iommu is in use, dma_data is used as a ptr to the base of the 27 * iommu_table. Otherwise, it is a simple numerical offset. 28 */ 29 union { 30 dma_addr_t dma_offset; 31 void *iommu_table_base; 32 } dma_data; 33 34#ifdef CONFIG_IOMMU_API 35 void *iommu_domain; 36#endif 37#ifdef CONFIG_SWIOTLB 38 dma_addr_t max_direct_dma_addr; 39#endif 40#ifdef CONFIG_PPC64 41 struct pci_dn *pci_data; 42#endif 43#ifdef CONFIG_EEH 44 struct eeh_dev *edev; 45#endif 46#ifdef CONFIG_FAIL_IOMMU 47 int fail_iommu; 48#endif 49}; 50 51struct pdev_archdata { 52 u64 dma_mask; 53}; 54 55#define ARCH_HAS_DMA_GET_REQUIRED_MASK 56 57#endif /* _ASM_POWERPC_DEVICE_H */ 58