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