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 12int iommu_get_dma_cookie(struct iommu_domain *domain); 13void iommu_put_dma_cookie(struct iommu_domain *domain); 14 15int iommu_dma_init_fq(struct iommu_domain *domain); 16 17void iommu_dma_get_resv_regions(struct device *dev, struct list_head *list); 18 19extern bool iommu_dma_forcedac; 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 27static inline int iommu_dma_init_fq(struct iommu_domain *domain) 28{ 29 return -EINVAL; 30} 31 32static inline int iommu_get_dma_cookie(struct iommu_domain *domain) 33{ 34 return -ENODEV; 35} 36 37static inline void iommu_put_dma_cookie(struct iommu_domain *domain) 38{ 39} 40 41static inline void iommu_dma_get_resv_regions(struct device *dev, struct list_head *list) 42{ 43} 44 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