The function blob_encap_dek accesses a CAAM register CONFIG_SYS_FSL_JR0_ADDR + 0x102c, before the CAAM clock has been enabled, which causes the system to lock-up at the dek_blob command.
This patch enables and disables the CAAM clock, because this is also done in arch/arm/imx-common/hab.c:authenticate_image(). However in my opinion controlling the clock should be done in one of the underlaying layers, so this needs further cleanup. Please comment on a clean implementation of controlling of the CAAM clock. Signed-off-by: Henri Roosen <henri.roo...@ginzinger.com> --- arch/arm/imx-common/cmd_dek.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/arch/arm/imx-common/cmd_dek.c b/arch/arm/imx-common/cmd_dek.c index ada8adf..72a7d49 100644 --- a/arch/arm/imx-common/cmd_dek.c +++ b/arch/arm/imx-common/cmd_dek.c @@ -30,20 +30,22 @@ static int blob_encap_dek(const u8 *src, u8 *dst, u32 len) { int ret = 0; u32 jr_size = 4; - - u32 out_jr_size = sec_in32(CONFIG_SYS_FSL_JR0_ADDR + 0x102c); - if (out_jr_size != jr_size) { - hab_caam_clock_enable(1); - sec_init(); - } + u32 out_jr_size; if (!((len == 128) | (len == 192) | (len == 256))) { debug("Invalid DEK size. Valid sizes are 128, 192 and 256b\n"); return -1; } + hab_caam_clock_enable(1); + out_jr_size = sec_in32(CONFIG_SYS_FSL_JR0_ADDR + 0x102c); + if (out_jr_size != jr_size) { + sec_init(); + } + len /= 8; ret = blob_dek(src, dst, len); + hab_caam_clock_enable(0); return ret; } -- 2.1.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot