xref: /openbsd/sys/dev/pci/drm/include/linux/dma-mapping.h (revision 667382c7)
1 /* Public domain. */
2 
3 #ifndef _LINUX_DMA_MAPPING_H
4 #define _LINUX_DMA_MAPPING_H
5 
6 #include <linux/sizes.h>
7 #include <linux/scatterlist.h>
8 #include <linux/dma-direction.h>
9 
10 struct device;
11 
12 #define DMA_BIT_MASK(n)	(((n) == 64) ? ~0ULL : (1ULL<<(n)) -1)
13 
14 #define DMA_MAPPING_ERROR (dma_addr_t)-1
15 
16 static inline int
dma_set_coherent_mask(struct device * dev,uint64_t m)17 dma_set_coherent_mask(struct device *dev, uint64_t m)
18 {
19 	return 0;
20 }
21 
22 static inline int
dma_set_max_seg_size(struct device * dev,unsigned int sz)23 dma_set_max_seg_size(struct device *dev, unsigned int sz)
24 {
25 	return 0;
26 }
27 
28 static inline int
dma_set_mask(struct device * dev,uint64_t m)29 dma_set_mask(struct device *dev, uint64_t m)
30 {
31 	return 0;
32 }
33 
34 static inline int
dma_set_mask_and_coherent(void * dev,uint64_t m)35 dma_set_mask_and_coherent(void *dev, uint64_t m)
36 {
37 	return 0;
38 }
39 
40 static inline bool
dma_addressing_limited(void * dev)41 dma_addressing_limited(void *dev)
42 {
43 	return false;
44 }
45 
46 static inline dma_addr_t
dma_map_page(void * dev,struct vm_page * page,size_t offset,size_t size,enum dma_data_direction dir)47 dma_map_page(void *dev, struct vm_page *page, size_t offset,
48     size_t size, enum dma_data_direction dir)
49 {
50 	return VM_PAGE_TO_PHYS(page);
51 }
52 
53 static inline void
dma_unmap_page(void * dev,dma_addr_t addr,size_t size,enum dma_data_direction dir)54 dma_unmap_page(void *dev, dma_addr_t addr, size_t size,
55     enum dma_data_direction dir)
56 {
57 }
58 
59 static inline int
dma_mapping_error(void * dev,dma_addr_t addr)60 dma_mapping_error(void *dev, dma_addr_t addr)
61 {
62 	return 0;
63 }
64 
65 void *dma_alloc_coherent(struct device *, size_t, dma_addr_t *, int);
66 void dma_free_coherent(struct device *, size_t, void *, dma_addr_t);
67 
68 static inline void *
dmam_alloc_coherent(struct device * dev,size_t size,dma_addr_t * dva,int gfp)69 dmam_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dva, int gfp)
70 {
71 	return dma_alloc_coherent(dev, size, dva, gfp);
72 }
73 
74 int	dma_get_sgtable(struct device *, struct sg_table *, void *,
75 	    dma_addr_t, size_t);
76 int	dma_map_sgtable(struct device *, struct sg_table *,
77 	    enum dma_data_direction, u_long);
78 void	dma_unmap_sgtable(struct device *, struct sg_table *,
79 	    enum dma_data_direction, u_long);
80 
81 dma_addr_t dma_map_resource(struct device *, phys_addr_t, size_t,
82     enum dma_data_direction, u_long);
83 
84 #endif
85