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