libpayload: armv7: Add cache control function to invalidate range.

When dealing with DMA, we need a function to invalidate cache without corrupting
contents on main memory (clean).

Change-Id: I28e632ae57a7b7ed1accee74e76045b92f92a699
Signed-off-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61078
Reviewed-by: Gabe Black <gabeblack@chromium.org>
Commit-Queue: Gabe Black <gabeblack@chromium.org>
Reviewed-on: http://review.coreboot.org/4345
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
Hung-Te Lin 2013-07-08 12:27:13 +08:00 committed by Stefan Reinauer
parent d0fa1d1a61
commit cb0aeef0a9
2 changed files with 12 additions and 0 deletions

View File

@ -80,6 +80,7 @@ enum dcache_op {
OP_DCISW,
OP_DCCIMVAC,
OP_DCCMVAC,
OP_DCIMVAC,
};
/*
@ -220,6 +221,9 @@ static void dcache_op_mva(unsigned long addr,
case OP_DCCMVAC:
dccmvac(line);
break;
case OP_DCIMVAC:
dcimvac(line);
break;
default:
break;
}
@ -238,6 +242,11 @@ void dcache_clean_invalidate_by_mva(unsigned long addr, unsigned long len)
dcache_op_mva(addr, len, OP_DCCIMVAC);
}
void dcache_invalidate_by_mva(unsigned long addr, unsigned long len)
{
dcache_op_mva(addr, len, OP_DCIMVAC);
}
void dcache_mmu_disable(void)
{
uint32_t sctlr;

View File

@ -266,6 +266,9 @@ void dcache_clean_by_mva(unsigned long addr, unsigned long len);
/* dcache clean and invalidate by modified virtual address to PoC */
void dcache_clean_invalidate_by_mva(unsigned long addr, unsigned long len);
/* dcache invalidate by modified virtual address to PoC */
void dcache_invalidate_by_mva(unsigned long addr, unsigned long len);
/* dcache invalidate all (on current level given by CCSELR) */
void dcache_invalidate_all(void);