diff options
author | Bryan O'Donoghue <bryan.odonoghue@linaro.org> | 2019-08-12 14:16:00 +0100 |
---|---|---|
committer | Bryan O'Donoghue <bryan.odonoghue@linaro.org> | 2019-08-13 17:15:36 +0100 |
commit | 476fc86142f058c7190733243f48c5c0115157e9 (patch) | |
tree | 07a1900ffe9aa1a8158a951883d8b6db4afc2492 | |
parent | 59f85a9afb15e1d52029f6e0ae30080f15841370 (diff) |
core: imx: Use core_mmu_get_va() to access CAAM regslinaro-main
The CAAM may not be mapped linearly with a 1:1 mapping to the physical
address. Ensure we go through core_mmu_get_va() for this case.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
-rw-r--r-- | core/arch/arm/plat-imx/imx_caam.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/core/arch/arm/plat-imx/imx_caam.c b/core/arch/arm/plat-imx/imx_caam.c index aec9030f..e18ec1f8 100644 --- a/core/arch/arm/plat-imx/imx_caam.c +++ b/core/arch/arm/plat-imx/imx_caam.c @@ -10,11 +10,13 @@ #include <kernel/generic_boot.h> #include <platform_config.h> #include <stdint.h> +#include <mm/core_memprot.h> void init_caam(void) { struct imx_caam_ctrl *caam = (struct imx_caam_ctrl *)(vaddr_t)CAAM_BASE; uint32_t reg; + vaddr_t addr; int i; /* @@ -32,9 +34,12 @@ void init_caam(void) * This code below simply sets a default for the case where no * runtime OP-TEE CAAM code will be run */ + for (i = 0; i < CAAM_NUM_JOB_RINGS; i++) { - reg = io_read32((vaddr_t)&caam->jr[i].jrmidr_ms); + addr = core_mmu_get_va((paddr_t)&caam->jr[i].jrmidr_ms, + MEM_AREA_IO_SEC); + reg = io_read32(addr); reg |= JROWN_NS | JROWN_MID; - io_write32((vaddr_t)&caam->jr[i].jrmidr_ms, reg); + io_write32(addr, reg); } } |