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