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 device_node; 10#ifdef CONFIG_PPC64 11struct pci_dn; 12struct iommu_table; 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 /* 23 * These two used to be a union. However, with the hybrid ops we need 24 * both so here we store both a DMA offset for direct mappings and 25 * an iommu_table for remapped DMA. 26 */ 27 dma_addr_t dma_offset; 28 29#ifdef CONFIG_PPC64 30 struct iommu_table *iommu_table_base; 31#endif 32 33#ifdef CONFIG_IOMMU_API 34 void *iommu_domain; 35#endif 36#ifdef CONFIG_SWIOTLB 37 dma_addr_t max_direct_dma_addr; 38#endif 39#ifdef CONFIG_PPC64 40 struct pci_dn *pci_data; 41#endif 42#ifdef CONFIG_EEH 43 struct eeh_dev *edev; 44#endif 45#ifdef CONFIG_FAIL_IOMMU 46 int fail_iommu; 47#endif 48#ifdef CONFIG_CXL_BASE 49 struct cxl_context *cxl_ctx; 50#endif 51}; 52 53struct pdev_archdata { 54 u64 dma_mask; 55}; 56 57#define ARCH_HAS_DMA_GET_REQUIRED_MASK 58 59#endif /* _ASM_POWERPC_DEVICE_H */ 60