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