Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v5.11 90 lines 2.2 kB view raw
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/errno.h> 9#include <linux/types.h> 10 11#ifdef CONFIG_IOMMU_DMA 12#include <linux/dma-mapping.h> 13#include <linux/iommu.h> 14#include <linux/msi.h> 15 16/* Domain management interface for IOMMU drivers */ 17int iommu_get_dma_cookie(struct iommu_domain *domain); 18int iommu_get_msi_cookie(struct iommu_domain *domain, dma_addr_t base); 19void iommu_put_dma_cookie(struct iommu_domain *domain); 20 21/* Setup call for arch DMA mapping code */ 22void iommu_setup_dma_ops(struct device *dev, u64 dma_base, u64 size); 23 24/* The DMA API isn't _quite_ the whole story, though... */ 25/* 26 * iommu_dma_prepare_msi() - Map the MSI page in the IOMMU device 27 * 28 * The MSI page will be stored in @desc. 29 * 30 * Return: 0 on success otherwise an error describing the failure. 31 */ 32int iommu_dma_prepare_msi(struct msi_desc *desc, phys_addr_t msi_addr); 33 34/* Update the MSI message if required. */ 35void iommu_dma_compose_msi_msg(struct msi_desc *desc, 36 struct msi_msg *msg); 37 38void iommu_dma_get_resv_regions(struct device *dev, struct list_head *list); 39 40void iommu_dma_free_cpu_cached_iovas(unsigned int cpu, 41 struct iommu_domain *domain); 42 43#else /* CONFIG_IOMMU_DMA */ 44 45struct iommu_domain; 46struct msi_desc; 47struct msi_msg; 48struct device; 49 50static inline void iommu_setup_dma_ops(struct device *dev, u64 dma_base, 51 u64 size) 52{ 53} 54 55static inline int iommu_get_dma_cookie(struct iommu_domain *domain) 56{ 57 return -ENODEV; 58} 59 60static inline int iommu_get_msi_cookie(struct iommu_domain *domain, dma_addr_t base) 61{ 62 return -ENODEV; 63} 64 65static inline void iommu_put_dma_cookie(struct iommu_domain *domain) 66{ 67} 68 69static inline int iommu_dma_prepare_msi(struct msi_desc *desc, 70 phys_addr_t msi_addr) 71{ 72 return 0; 73} 74 75static inline void iommu_dma_compose_msi_msg(struct msi_desc *desc, 76 struct msi_msg *msg) 77{ 78} 79 80static inline void iommu_dma_get_resv_regions(struct device *dev, struct list_head *list) 81{ 82} 83 84static inline void iommu_dma_free_cpu_cached_iovas(unsigned int cpu, 85 struct iommu_domain *domain) 86{ 87} 88 89#endif /* CONFIG_IOMMU_DMA */ 90#endif /* __DMA_IOMMU_H */