summaryrefslogtreecommitdiff
path: root/sys/dev/pci/drm/include/linux/io.h
blob: 2b9e956c3fcb4d1daad4d05829f2eb31e540d21c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/* Public domain. */

#ifndef _LINUX_IO_H
#define _LINUX_IO_H

#include <sys/systm.h>
#include <linux/types.h>
#include <linux/compiler.h>

#define memcpy_toio(d, s, n)	memcpy(d, s, n)
#define memcpy_fromio(d, s, n)	memcpy(d, s, n)
#define memset_io(d, b, n)	memset(d, b, n)

static inline u8
ioread8(const volatile void __iomem *addr)
{
	return (*(volatile uint8_t *)addr);
}

static inline u16
ioread16(const volatile void __iomem *addr)
{
	return (*(volatile uint16_t *)addr);
}

static inline u32
ioread32(const volatile void __iomem *addr)
{
	return (*(volatile uint32_t *)addr);
}

static inline u64
ioread64(const volatile void __iomem *addr)
{
	return (*(volatile uint64_t *)addr);
}

static inline void
iowrite8(u8 val, volatile void __iomem *addr)
{
	*(volatile uint8_t *)addr = val;
}

static inline void
iowrite16(u16 val, volatile void __iomem *addr)
{
	*(volatile uint16_t *)addr = val;
}

static inline void
iowrite32(u32 val, volatile void __iomem *addr)
{
	*(volatile uint32_t *)addr = val;
}

static inline void
iowrite64(u64 val, volatile void __iomem *addr)
{
	*(volatile uint64_t *)addr = val;
}

#define readb(p) ioread8(p)
#define writeb(v, p) iowrite8(v, p)
#define readw(p) ioread16(p)
#define writew(v, p) iowrite16(v, p)
#define readl(p) ioread32(p)
#define writel(v, p) iowrite32(v, p)
#define readq(p) ioread64(p)
#define writeq(v, p) iowrite64(v, p)

#endif