sandbox: Use asm-generic/io.h

Convert the sandbox architecture to make use of the new asm-generic/io.h
to provide address mapping functions. As sandbox actually performs
non-identity mapping between physical & virtual addresses we can't
simply make use of the generic mapping functions, but are able to
implement phys_to_virt() & make use of it from map_physmem().

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: Simon Glass <sjg@chromium.org>
Acked-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Paul Burton 2017-09-14 15:05:13 -07:00 committed by Tom Rini
parent ae07d609e9
commit f7ae1ca3e8
2 changed files with 20 additions and 10 deletions

View File

@ -56,6 +56,16 @@ int cleanup_before_linux_select(int flags)
return 0;
}
void *phys_to_virt(phys_addr_t paddr)
{
return (void *)(gd->arch.ram_buf + paddr);
}
phys_addr_t virt_to_phys(void *vaddr)
{
return (phys_addr_t)((uint8_t *)vaddr - gd->arch.ram_buf);
}
void *map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags)
{
#if defined(CONFIG_PCI) && !defined(CONFIG_SPL_BUILD)
@ -73,7 +83,7 @@ void *map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags)
}
#endif
return (void *)(gd->arch.ram_buf + paddr);
return phys_to_virt(paddr);
}
void unmap_physmem(const void *vaddr, unsigned long flags)

View File

@ -7,22 +7,22 @@
#ifndef __SANDBOX_ASM_IO_H
#define __SANDBOX_ASM_IO_H
/*
* Given a physical address and a length, return a virtual address
* that can be used to access the memory range with the caching
* properties specified by "flags".
*/
#define MAP_NOCACHE (0)
#define MAP_WRCOMBINE (0)
#define MAP_WRBACK (0)
#define MAP_WRTHROUGH (0)
void *phys_to_virt(phys_addr_t paddr);
#define phys_to_virt phys_to_virt
phys_addr_t virt_to_phys(void *vaddr);
#define virt_to_phys virt_to_phys
void *map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags);
#define map_physmem map_physmem
/*
* Take down a mapping set up by map_physmem().
*/
void unmap_physmem(const void *vaddr, unsigned long flags);
#define unmap_physmem unmap_physmem
#include <asm-generic/io.h>
/* For sandbox, we want addresses to point into our RAM buffer */
static inline void *map_sysmem(phys_addr_t paddr, unsigned long len)