]> git.ipfire.org Git - people/ms/u-boot.git/blame - arch/sandbox/include/asm/io.h
dm: core: Correct address cast in dev_read_addr_ptr()
[people/ms/u-boot.git] / arch / sandbox / include / asm / io.h
CommitLineData
744d9859
SG
1/*
2 * Copyright (c) 2011 The Chromium OS Authors.
3 *
3765b3e7 4 * SPDX-License-Identifier: GPL-2.0+
744d9859
SG
5 */
6
a733b06b
SG
7#ifndef __SANDBOX_ASM_IO_H
8#define __SANDBOX_ASM_IO_H
9
f7ae1ca3
PB
10void *phys_to_virt(phys_addr_t paddr);
11#define phys_to_virt phys_to_virt
12
13phys_addr_t virt_to_phys(void *vaddr);
14#define virt_to_phys virt_to_phys
744d9859
SG
15
16void *map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags);
f7ae1ca3 17#define map_physmem map_physmem
744d9859
SG
18
19/*
20 * Take down a mapping set up by map_physmem().
21 */
9569c406 22void unmap_physmem(const void *vaddr, unsigned long flags);
f7ae1ca3
PB
23#define unmap_physmem unmap_physmem
24
25#include <asm-generic/io.h>
4213fc29
SG
26
27/* For sandbox, we want addresses to point into our RAM buffer */
28static inline void *map_sysmem(phys_addr_t paddr, unsigned long len)
29{
30 return map_physmem(paddr, len, MAP_WRBACK);
31}
32
9569c406 33/* Remove a previous mapping */
4213fc29
SG
34static inline void unmap_sysmem(const void *vaddr)
35{
9569c406 36 unmap_physmem(vaddr, MAP_WRBACK);
4213fc29 37}
781adb57
SG
38
39/* Map from a pointer to our RAM buffer */
ed072b96 40phys_addr_t map_to_sysmem(const void *ptr);
a733b06b 41
42d3b29d 42/* Define nops for sandbox I/O access */
80793db9
SG
43#define readb(addr) ((void)addr, 0)
44#define readw(addr) ((void)addr, 0)
45#define readl(addr) ((void)addr, 0)
46#define writeb(v, addr) ((void)addr)
47#define writew(v, addr) ((void)addr)
48#define writel(v, addr) ((void)addr)
42d3b29d 49
9569c406
SG
50/* I/O access functions */
51int inl(unsigned int addr);
52int inw(unsigned int addr);
53int inb(unsigned int addr);
54
55void outl(unsigned int value, unsigned int addr);
56void outw(unsigned int value, unsigned int addr);
57void outb(unsigned int value, unsigned int addr);
58
a4dd8722
MR
59#define out_arch(type,endian,a,v) write##type(cpu_to_##endian(v),a)
60#define in_arch(type,endian,a) endian##_to_cpu(read##type(a))
61
62#define out_le32(a,v) out_arch(l,le32,a,v)
63#define out_le16(a,v) out_arch(w,le16,a,v)
64
65#define in_le32(a) in_arch(l,le32,a)
66#define in_le16(a) in_arch(w,le16,a)
67
68#define out_be32(a,v) out_arch(l,be32,a,v)
69#define out_be16(a,v) out_arch(w,be16,a,v)
70
71#define in_be32(a) in_arch(l,be32,a)
72#define in_be16(a) in_arch(w,be16,a)
73
74#define out_8(a,v) writeb(v,a)
75#define in_8(a) readb(a)
76
77#define clrbits(type, addr, clear) \
78 out_##type((addr), in_##type(addr) & ~(clear))
79
80#define setbits(type, addr, set) \
81 out_##type((addr), in_##type(addr) | (set))
82
83#define clrsetbits(type, addr, clear, set) \
84 out_##type((addr), (in_##type(addr) & ~(clear)) | (set))
85
86#define clrbits_be32(addr, clear) clrbits(be32, addr, clear)
87#define setbits_be32(addr, set) setbits(be32, addr, set)
88#define clrsetbits_be32(addr, clear, set) clrsetbits(be32, addr, clear, set)
89
90#define clrbits_le32(addr, clear) clrbits(le32, addr, clear)
91#define setbits_le32(addr, set) setbits(le32, addr, set)
92#define clrsetbits_le32(addr, clear, set) clrsetbits(le32, addr, clear, set)
93
94#define clrbits_be16(addr, clear) clrbits(be16, addr, clear)
95#define setbits_be16(addr, set) setbits(be16, addr, set)
96#define clrsetbits_be16(addr, clear, set) clrsetbits(be16, addr, clear, set)
97
98#define clrbits_le16(addr, clear) clrbits(le16, addr, clear)
99#define setbits_le16(addr, set) setbits(le16, addr, set)
100#define clrsetbits_le16(addr, clear, set) clrsetbits(le16, addr, clear, set)
101
102#define clrbits_8(addr, clear) clrbits(8, addr, clear)
103#define setbits_8(addr, set) setbits(8, addr, set)
104#define clrsetbits_8(addr, clear, set) clrsetbits(8, addr, clear, set)
105
e54094f2
SG
106static inline void _insw(volatile u16 *port, void *buf, int ns)
107{
108}
109
110static inline void _outsw(volatile u16 *port, const void *buf, int ns)
111{
112}
113
114#define insw(port, buf, ns) _insw((u16 *)port, buf, ns)
115#define outsw(port, buf, ns) _outsw((u16 *)port, buf, ns)
116
117/* For systemace.c */
118#define out16(addr, val)
119#define in16(addr) 0
120
42d3b29d 121#include <iotrace.h>
690d8a92 122#include <asm/types.h>
42d3b29d 123
a733b06b 124#endif