xref: /rk3399_rockchip-uboot/arch/sandbox/include/asm/io.h (revision 9569c40668290408eac447f9be99dab603c8e34c)
1744d9859SSimon Glass /*
2744d9859SSimon Glass  * Copyright (c) 2011 The Chromium OS Authors.
3744d9859SSimon Glass  *
41a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
5744d9859SSimon Glass  */
6744d9859SSimon Glass 
7a733b06bSSimon Glass #ifndef __SANDBOX_ASM_IO_H
8a733b06bSSimon Glass #define __SANDBOX_ASM_IO_H
9a733b06bSSimon Glass 
10744d9859SSimon Glass /*
11744d9859SSimon Glass  * Given a physical address and a length, return a virtual address
12744d9859SSimon Glass  * that can be used to access the memory range with the caching
13744d9859SSimon Glass  * properties specified by "flags".
14744d9859SSimon Glass  */
15744d9859SSimon Glass #define MAP_NOCACHE	(0)
16744d9859SSimon Glass #define MAP_WRCOMBINE	(0)
17744d9859SSimon Glass #define MAP_WRBACK	(0)
18744d9859SSimon Glass #define MAP_WRTHROUGH	(0)
19744d9859SSimon Glass 
20744d9859SSimon Glass void *map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags);
21744d9859SSimon Glass 
22744d9859SSimon Glass /*
23744d9859SSimon Glass  * Take down a mapping set up by map_physmem().
24744d9859SSimon Glass  */
25*9569c406SSimon Glass void unmap_physmem(const void *vaddr, unsigned long flags);
264213fc29SSimon Glass 
274213fc29SSimon Glass /* For sandbox, we want addresses to point into our RAM buffer */
284213fc29SSimon Glass static inline void *map_sysmem(phys_addr_t paddr, unsigned long len)
294213fc29SSimon Glass {
304213fc29SSimon Glass 	return map_physmem(paddr, len, MAP_WRBACK);
314213fc29SSimon Glass }
324213fc29SSimon Glass 
33*9569c406SSimon Glass /* Remove a previous mapping */
344213fc29SSimon Glass static inline void unmap_sysmem(const void *vaddr)
354213fc29SSimon Glass {
36*9569c406SSimon Glass 	unmap_physmem(vaddr, MAP_WRBACK);
374213fc29SSimon Glass }
38781adb57SSimon Glass 
39781adb57SSimon Glass /* Map from a pointer to our RAM buffer */
40ed072b96SSimon Glass phys_addr_t map_to_sysmem(const void *ptr);
41a733b06bSSimon Glass 
4242d3b29dSSimon Glass /* Define nops for sandbox I/O access */
4342d3b29dSSimon Glass #define readb(addr) 0
4442d3b29dSSimon Glass #define readw(addr) 0
4542d3b29dSSimon Glass #define readl(addr) 0
4642d3b29dSSimon Glass #define writeb(v, addr)
4742d3b29dSSimon Glass #define writew(v, addr)
4842d3b29dSSimon Glass #define writel(v, addr)
4942d3b29dSSimon Glass 
50*9569c406SSimon Glass /* I/O access functions */
51*9569c406SSimon Glass int inl(unsigned int addr);
52*9569c406SSimon Glass int inw(unsigned int addr);
53*9569c406SSimon Glass int inb(unsigned int addr);
54*9569c406SSimon Glass 
55*9569c406SSimon Glass void outl(unsigned int value, unsigned int addr);
56*9569c406SSimon Glass void outw(unsigned int value, unsigned int addr);
57*9569c406SSimon Glass void outb(unsigned int value, unsigned int addr);
58*9569c406SSimon Glass 
5942d3b29dSSimon Glass #include <iotrace.h>
6042d3b29dSSimon Glass 
61a733b06bSSimon Glass #endif
62