addrmap: Support on sandbox
Update this feature so that it works on sandbox, using a basic identity mapping. This allows us to run the 'ut addrmap' test. Also fix up the test to use the correct macros to access the linker list, so that the 'ut addrmap' command actually works. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
109dbdf042
commit
281996110c
5 changed files with 17 additions and 5 deletions
|
@ -4,6 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
|
#include <addr_map.h>
|
||||||
#include <cpu_func.h>
|
#include <cpu_func.h>
|
||||||
#include <cros_ec.h>
|
#include <cros_ec.h>
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
|
@ -155,3 +156,11 @@ int board_late_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int init_addr_map(void)
|
||||||
|
{
|
||||||
|
if (IS_ENABLED(CONFIG_ADDR_MAP))
|
||||||
|
addrmap_set_entry(0, 0, CONFIG_SYS_SDRAM_SIZE, 0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -315,6 +315,7 @@ CONFIG_WDT_GPIO=y
|
||||||
CONFIG_WDT_SANDBOX=y
|
CONFIG_WDT_SANDBOX=y
|
||||||
CONFIG_FS_CBFS=y
|
CONFIG_FS_CBFS=y
|
||||||
CONFIG_FS_CRAMFS=y
|
CONFIG_FS_CRAMFS=y
|
||||||
|
CONFIG_ADDR_MAP=y
|
||||||
CONFIG_CMD_DHRYSTONE=y
|
CONFIG_CMD_DHRYSTONE=y
|
||||||
CONFIG_ECDSA=y
|
CONFIG_ECDSA=y
|
||||||
CONFIG_ECDSA_VERIFY=y
|
CONFIG_ECDSA_VERIFY=y
|
||||||
|
|
|
@ -14,7 +14,9 @@ struct addrmap {
|
||||||
unsigned long vaddr;
|
unsigned long vaddr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef CONFIG_ADDR_MAP
|
||||||
extern struct addrmap address_map[CONFIG_SYS_NUM_ADDR_MAP];
|
extern struct addrmap address_map[CONFIG_SYS_NUM_ADDR_MAP];
|
||||||
|
#endif
|
||||||
|
|
||||||
phys_addr_t addrmap_virt_to_phys(void *vaddr);
|
phys_addr_t addrmap_virt_to_phys(void *vaddr);
|
||||||
void *addrmap_phys_to_virt(phys_addr_t paddr);
|
void *addrmap_phys_to_virt(phys_addr_t paddr);
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <addr_map.h>
|
#include <addr_map.h>
|
||||||
|
#include <mapmem.h>
|
||||||
|
|
||||||
struct addrmap address_map[CONFIG_SYS_NUM_ADDR_MAP];
|
struct addrmap address_map[CONFIG_SYS_NUM_ADDR_MAP];
|
||||||
|
|
||||||
|
@ -18,7 +19,7 @@ phys_addr_t addrmap_virt_to_phys(void * vaddr)
|
||||||
if (address_map[i].size == 0)
|
if (address_map[i].size == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
addr = (u64)((u32)vaddr);
|
addr = map_to_sysmem(vaddr);
|
||||||
base = (u64)(address_map[i].vaddr);
|
base = (u64)(address_map[i].vaddr);
|
||||||
upper = (u64)(address_map[i].size) + base - 1;
|
upper = (u64)(address_map[i].size) + base - 1;
|
||||||
|
|
||||||
|
@ -48,7 +49,7 @@ void *addrmap_phys_to_virt(phys_addr_t paddr)
|
||||||
|
|
||||||
offset = address_map[i].paddr - address_map[i].vaddr;
|
offset = address_map[i].paddr - address_map[i].vaddr;
|
||||||
|
|
||||||
return (void *)(unsigned long)(paddr - offset);
|
return map_sysmem(paddr - offset, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,9 +29,8 @@ ADDRMAP_TEST(addrmap_test_basic, UT_TESTF_CONSOLE_REC);
|
||||||
|
|
||||||
int do_ut_addrmap(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
|
int do_ut_addrmap(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
|
||||||
{
|
{
|
||||||
struct unit_test *tests = ll_entry_start(struct unit_test,
|
struct unit_test *tests = UNIT_TEST_SUITE_START(addrmap_test);
|
||||||
addrmap_test);
|
const int n_ents = UNIT_TEST_SUITE_COUNT(addrmap_test);
|
||||||
const int n_ents = ll_entry_count(struct unit_test, addrmap_test);
|
|
||||||
|
|
||||||
return cmd_ut_category("cmd_addrmap", "cmd_addrmap_", tests, n_ents,
|
return cmd_ut_category("cmd_addrmap", "cmd_addrmap_", tests, n_ents,
|
||||||
argc, argv);
|
argc, argv);
|
||||||
|
|
Loading…
Reference in a new issue