1 /* 2 * Copyright (c) 2011 The Chromium OS Authors. 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 */ 6 7 #ifndef __SANDBOX_ASM_IO_H 8 #define __SANDBOX_ASM_IO_H 9 10 /* 11 * Given a physical address and a length, return a virtual address 12 * that can be used to access the memory range with the caching 13 * properties specified by "flags". 14 */ 15 #define MAP_NOCACHE (0) 16 #define MAP_WRCOMBINE (0) 17 #define MAP_WRBACK (0) 18 #define MAP_WRTHROUGH (0) 19 20 void *map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags); 21 22 /* 23 * Take down a mapping set up by map_physmem(). 24 */ 25 void unmap_physmem(const void *vaddr, unsigned long flags); 26 27 /* For sandbox, we want addresses to point into our RAM buffer */ 28 static inline void *map_sysmem(phys_addr_t paddr, unsigned long len) 29 { 30 return map_physmem(paddr, len, MAP_WRBACK); 31 } 32 33 /* Remove a previous mapping */ 34 static inline void unmap_sysmem(const void *vaddr) 35 { 36 unmap_physmem(vaddr, MAP_WRBACK); 37 } 38 39 /* Map from a pointer to our RAM buffer */ 40 phys_addr_t map_to_sysmem(const void *ptr); 41 42 /* Define nops for sandbox I/O access */ 43 #define readb(addr) 0 44 #define readw(addr) 0 45 #define readl(addr) 0 46 #define writeb(v, addr) 47 #define writew(v, addr) 48 #define writel(v, addr) 49 50 /* I/O access functions */ 51 int inl(unsigned int addr); 52 int inw(unsigned int addr); 53 int inb(unsigned int addr); 54 55 void outl(unsigned int value, unsigned int addr); 56 void outw(unsigned int value, unsigned int addr); 57 void outb(unsigned int value, unsigned int addr); 58 59 static inline void _insw(volatile u16 *port, void *buf, int ns) 60 { 61 } 62 63 static inline void _outsw(volatile u16 *port, const void *buf, int ns) 64 { 65 } 66 67 #define insw(port, buf, ns) _insw((u16 *)port, buf, ns) 68 #define outsw(port, buf, ns) _outsw((u16 *)port, buf, ns) 69 70 /* For systemace.c */ 71 #define out16(addr, val) 72 #define in16(addr) 0 73 74 #include <iotrace.h> 75 #include <asm/types.h> 76 77 #endif 78