1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2014-2015 ARM Ltd. 4 */ 5 #ifndef __DMA_IOMMU_H 6 #define __DMA_IOMMU_H 7 8 #include <linux/iommu.h> 9 10 #ifdef CONFIG_IOMMU_DMA 11 12 int iommu_get_dma_cookie(struct iommu_domain *domain); 13 void iommu_put_dma_cookie(struct iommu_domain *domain); 14 15 int iommu_dma_init_fq(struct iommu_domain *domain); 16 17 void iommu_dma_get_resv_regions(struct device *dev, struct list_head *list); 18 19 extern bool iommu_dma_forcedac; iommu_dma_set_pci_32bit_workaround(struct device * dev)20static inline void iommu_dma_set_pci_32bit_workaround(struct device *dev) 21 { 22 dev->iommu->pci_32bit_workaround = !iommu_dma_forcedac; 23 } 24 25 #else /* CONFIG_IOMMU_DMA */ 26 iommu_dma_init_fq(struct iommu_domain * domain)27static inline int iommu_dma_init_fq(struct iommu_domain *domain) 28 { 29 return -EINVAL; 30 } 31 iommu_get_dma_cookie(struct iommu_domain * domain)32static inline int iommu_get_dma_cookie(struct iommu_domain *domain) 33 { 34 return -ENODEV; 35 } 36 iommu_put_dma_cookie(struct iommu_domain * domain)37static inline void iommu_put_dma_cookie(struct iommu_domain *domain) 38 { 39 } 40 iommu_dma_get_resv_regions(struct device * dev,struct list_head * list)41static inline void iommu_dma_get_resv_regions(struct device *dev, struct list_head *list) 42 { 43 } 44 iommu_dma_set_pci_32bit_workaround(struct device * dev)45static inline void iommu_dma_set_pci_32bit_workaround(struct device *dev) 46 { 47 } 48 49 #endif /* CONFIG_IOMMU_DMA */ 50 #endif /* __DMA_IOMMU_H */ 51