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

Configure Feed

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

at v5.8-rc2 82 lines 2.0 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 40#else /* CONFIG_IOMMU_DMA */ 41 42struct iommu_domain; 43struct msi_desc; 44struct msi_msg; 45struct device; 46 47static inline void iommu_setup_dma_ops(struct device *dev, u64 dma_base, 48 u64 size) 49{ 50} 51 52static inline int iommu_get_dma_cookie(struct iommu_domain *domain) 53{ 54 return -ENODEV; 55} 56 57static inline int iommu_get_msi_cookie(struct iommu_domain *domain, dma_addr_t base) 58{ 59 return -ENODEV; 60} 61 62static inline void iommu_put_dma_cookie(struct iommu_domain *domain) 63{ 64} 65 66static inline int iommu_dma_prepare_msi(struct msi_desc *desc, 67 phys_addr_t msi_addr) 68{ 69 return 0; 70} 71 72static inline void iommu_dma_compose_msi_msg(struct msi_desc *desc, 73 struct msi_msg *msg) 74{ 75} 76 77static inline void iommu_dma_get_resv_regions(struct device *dev, struct list_head *list) 78{ 79} 80 81#endif /* CONFIG_IOMMU_DMA */ 82#endif /* __DMA_IOMMU_H */