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 d1e99d7ae4e6bbd1ebb5e81ecd3af2b8793efee0 105 lines 3.0 kB view raw
1#ifndef __LINUX_SWIOTLB_H 2#define __LINUX_SWIOTLB_H 3 4#include <linux/types.h> 5 6struct device; 7struct dma_attrs; 8struct scatterlist; 9 10/* 11 * Maximum allowable number of contiguous slabs to map, 12 * must be a power of 2. What is the appropriate value ? 13 * The complexity of {map,unmap}_single is linearly dependent on this value. 14 */ 15#define IO_TLB_SEGSIZE 128 16 17 18/* 19 * log of the size of each IO TLB slab. The number of slabs is command line 20 * controllable. 21 */ 22#define IO_TLB_SHIFT 11 23 24extern void 25swiotlb_init(void); 26 27extern void *swiotlb_alloc_boot(size_t bytes, unsigned long nslabs); 28extern void *swiotlb_alloc(unsigned order, unsigned long nslabs); 29 30extern dma_addr_t swiotlb_phys_to_bus(phys_addr_t address); 31extern phys_addr_t swiotlb_bus_to_phys(dma_addr_t address); 32 33extern int swiotlb_arch_range_needs_mapping(void *ptr, size_t size); 34 35extern void 36*swiotlb_alloc_coherent(struct device *hwdev, size_t size, 37 dma_addr_t *dma_handle, gfp_t flags); 38 39extern void 40swiotlb_free_coherent(struct device *hwdev, size_t size, 41 void *vaddr, dma_addr_t dma_handle); 42 43extern dma_addr_t 44swiotlb_map_single(struct device *hwdev, void *ptr, size_t size, int dir); 45 46extern void 47swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr, 48 size_t size, int dir); 49 50extern dma_addr_t 51swiotlb_map_single_attrs(struct device *hwdev, void *ptr, size_t size, 52 int dir, struct dma_attrs *attrs); 53 54extern void 55swiotlb_unmap_single_attrs(struct device *hwdev, dma_addr_t dev_addr, 56 size_t size, int dir, struct dma_attrs *attrs); 57 58extern int 59swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg, int nents, 60 int direction); 61 62extern void 63swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents, 64 int direction); 65 66extern int 67swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems, 68 int dir, struct dma_attrs *attrs); 69 70extern void 71swiotlb_unmap_sg_attrs(struct device *hwdev, struct scatterlist *sgl, 72 int nelems, int dir, struct dma_attrs *attrs); 73 74extern void 75swiotlb_sync_single_for_cpu(struct device *hwdev, dma_addr_t dev_addr, 76 size_t size, int dir); 77 78extern void 79swiotlb_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, 80 int nelems, int dir); 81 82extern void 83swiotlb_sync_single_for_device(struct device *hwdev, dma_addr_t dev_addr, 84 size_t size, int dir); 85 86extern void 87swiotlb_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, 88 int nelems, int dir); 89 90extern void 91swiotlb_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dev_addr, 92 unsigned long offset, size_t size, int dir); 93 94extern void 95swiotlb_sync_single_range_for_device(struct device *hwdev, dma_addr_t dev_addr, 96 unsigned long offset, size_t size, 97 int dir); 98 99extern int 100swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr); 101 102extern int 103swiotlb_dma_supported(struct device *hwdev, u64 mask); 104 105#endif /* __LINUX_SWIOTLB_H */