Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/compat/linuxkpi/common/include/linux/dma-buf-map.h
39604 views
1
/* Public domain. */
2
3
#ifndef _LINUX_DMA_BUF_MAP_H
4
#define _LINUX_DMA_BUF_MAP_H
5
6
#include <linux/io.h>
7
#include <linux/string.h>
8
9
struct dma_buf_map {
10
union {
11
void *vaddr_iomem;
12
void *vaddr;
13
};
14
bool is_iomem;
15
};
16
17
static inline void
18
dma_buf_map_incr(struct dma_buf_map *dbm, size_t n)
19
{
20
if (dbm->is_iomem)
21
dbm->vaddr_iomem += n;
22
else
23
dbm->vaddr += n;
24
}
25
26
static inline void
27
dma_buf_map_memcpy_to(struct dma_buf_map *dbm, const void *src, size_t len)
28
{
29
if (dbm->is_iomem)
30
memcpy_toio(dbm->vaddr_iomem, src, len);
31
else
32
memcpy(dbm->vaddr, src, len);
33
}
34
35
static inline bool
36
dma_buf_map_is_null(const struct dma_buf_map *dbm)
37
{
38
if (dbm->is_iomem)
39
return (dbm->vaddr_iomem == NULL);
40
else
41
return (dbm->vaddr == NULL);
42
}
43
44
static inline bool
45
dma_buf_map_is_set(const struct dma_buf_map *dbm)
46
{
47
if (dbm->is_iomem)
48
return (dbm->vaddr_iomem != NULL);
49
else
50
return (dbm->vaddr != NULL);
51
}
52
53
static inline bool
54
dma_buf_map_is_equal(
55
const struct dma_buf_map *dbm_a, const struct dma_buf_map *dbm_b)
56
{
57
if (dbm_a->is_iomem != dbm_b->is_iomem)
58
return (false);
59
60
if (dbm_a->is_iomem)
61
return (dbm_a->vaddr_iomem == dbm_b->vaddr_iomem);
62
else
63
return (dbm_a->vaddr == dbm_b->vaddr);
64
}
65
66
static inline void
67
dma_buf_map_clear(struct dma_buf_map *dbm)
68
{
69
if (dbm->is_iomem) {
70
dbm->vaddr_iomem = NULL;
71
dbm->is_iomem = false;
72
} else {
73
dbm->vaddr = NULL;
74
}
75
}
76
77
static inline void
78
dma_buf_map_set_vaddr_iomem(struct dma_buf_map *dbm, void *addr)
79
{
80
dbm->vaddr_iomem = addr;
81
dbm->is_iomem = true;
82
}
83
84
static inline void
85
dma_buf_map_set_vaddr(struct dma_buf_map *dbm, void *addr)
86
{
87
dbm->vaddr = addr;
88
dbm->is_iomem = false;
89
}
90
91
#endif
92
93