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 v2.6.31-rc2 102 lines 3.1 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(struct device *hwdev, 31 phys_addr_t address); 32extern phys_addr_t swiotlb_bus_to_phys(struct device *hwdev, 33 dma_addr_t address); 34 35extern int swiotlb_arch_range_needs_mapping(phys_addr_t paddr, size_t size); 36 37extern void 38*swiotlb_alloc_coherent(struct device *hwdev, size_t size, 39 dma_addr_t *dma_handle, gfp_t flags); 40 41extern void 42swiotlb_free_coherent(struct device *hwdev, size_t size, 43 void *vaddr, dma_addr_t dma_handle); 44 45extern dma_addr_t swiotlb_map_page(struct device *dev, struct page *page, 46 unsigned long offset, size_t size, 47 enum dma_data_direction dir, 48 struct dma_attrs *attrs); 49extern void swiotlb_unmap_page(struct device *hwdev, dma_addr_t dev_addr, 50 size_t size, enum dma_data_direction dir, 51 struct dma_attrs *attrs); 52 53extern int 54swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg, int nents, 55 int direction); 56 57extern void 58swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents, 59 int direction); 60 61extern int 62swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems, 63 enum dma_data_direction dir, struct dma_attrs *attrs); 64 65extern void 66swiotlb_unmap_sg_attrs(struct device *hwdev, struct scatterlist *sgl, 67 int nelems, enum dma_data_direction dir, 68 struct dma_attrs *attrs); 69 70extern void 71swiotlb_sync_single_for_cpu(struct device *hwdev, dma_addr_t dev_addr, 72 size_t size, enum dma_data_direction dir); 73 74extern void 75swiotlb_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, 76 int nelems, enum dma_data_direction dir); 77 78extern void 79swiotlb_sync_single_for_device(struct device *hwdev, dma_addr_t dev_addr, 80 size_t size, enum dma_data_direction dir); 81 82extern void 83swiotlb_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, 84 int nelems, enum dma_data_direction dir); 85 86extern void 87swiotlb_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dev_addr, 88 unsigned long offset, size_t size, 89 enum dma_data_direction dir); 90 91extern void 92swiotlb_sync_single_range_for_device(struct device *hwdev, dma_addr_t dev_addr, 93 unsigned long offset, size_t size, 94 enum dma_data_direction dir); 95 96extern int 97swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr); 98 99extern int 100swiotlb_dma_supported(struct device *hwdev, u64 mask); 101 102#endif /* __LINUX_SWIOTLB_H */