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

introduce generic header file for the software IO/TLB

A series of patches introduce a generic header file for the software
IO/TLB implementation in lib/swiotlb.c. Currently each architecture using
this code defines the prototypes itself. The prototypes are moved to
include/linux/swiotlb.h and this file is included in architecture specific
code for X86 and IA64.

This patch:

Create include/linux/swiotlb.h file which contains all function prototypes
for the lib/swiotlb.c file.

(akpm: the dependent patches will be trickled through arch trees)

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Joerg Roedel and committed by
Linus Torvalds
1648993f 459fc208

+83
+83
include/linux/swiotlb.h
··· 1 + #ifndef __LINUX_SWIOTLB_H 2 + #define __LINUX_SWIOTLB_H 3 + 4 + #include <linux/types.h> 5 + 6 + struct device; 7 + struct dma_attrs; 8 + struct scatterlist; 9 + 10 + extern void 11 + swiotlb_init(void); 12 + 13 + extern void 14 + *swiotlb_alloc_coherent(struct device *hwdev, size_t size, 15 + dma_addr_t *dma_handle, gfp_t flags); 16 + 17 + extern void 18 + swiotlb_free_coherent(struct device *hwdev, size_t size, 19 + void *vaddr, dma_addr_t dma_handle); 20 + 21 + extern dma_addr_t 22 + swiotlb_map_single(struct device *hwdev, void *ptr, size_t size, int dir); 23 + 24 + extern void 25 + swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr, 26 + size_t size, int dir); 27 + 28 + extern dma_addr_t 29 + swiotlb_map_single_attrs(struct device *hwdev, void *ptr, size_t size, 30 + int dir, struct dma_attrs *attrs); 31 + 32 + extern void 33 + swiotlb_unmap_single_attrs(struct device *hwdev, dma_addr_t dev_addr, 34 + size_t size, int dir, struct dma_attrs *attrs); 35 + 36 + extern int 37 + swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg, int nents, 38 + int direction); 39 + 40 + extern void 41 + swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents, 42 + int direction); 43 + 44 + extern int 45 + swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems, 46 + int dir, struct dma_attrs *attrs); 47 + 48 + extern void 49 + swiotlb_unmap_sg_attrs(struct device *hwdev, struct scatterlist *sgl, 50 + int nelems, int dir, struct dma_attrs *attrs); 51 + 52 + extern void 53 + swiotlb_sync_single_for_cpu(struct device *hwdev, dma_addr_t dev_addr, 54 + size_t size, int dir); 55 + 56 + extern void 57 + swiotlb_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, 58 + int nelems, int dir); 59 + 60 + extern void 61 + swiotlb_sync_single_for_device(struct device *hwdev, dma_addr_t dev_addr, 62 + size_t size, int dir); 63 + 64 + extern void 65 + swiotlb_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, 66 + int nelems, int dir); 67 + 68 + extern void 69 + swiotlb_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dev_addr, 70 + unsigned long offset, size_t size, int dir); 71 + 72 + extern void 73 + swiotlb_sync_single_range_for_device(struct device *hwdev, dma_addr_t dev_addr, 74 + unsigned long offset, size_t size, 75 + int dir); 76 + 77 + extern int 78 + swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr); 79 + 80 + extern int 81 + swiotlb_dma_supported(struct device *hwdev, u64 mask); 82 + 83 + #endif /* __LINUX_SWIOTLB_H */