summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorBreno Lima <breno.lima@nxp.com>2018-03-23 17:05:47 -0300
committerYe Li <ye.li@nxp.com>2020-04-26 23:21:49 -0700
commit864316b3b30c54089ecbfab074d8280a64283fb6 (patch)
tree3e55cf09837fac25d85b435d4b5204bbf0ef2b3e /cmd
parenta7472d556283613944498319283d8afb1d75b2d9 (diff)
MLK-17915: cmd: blob: Instantiate RNG before running CMD_BLOB
U-Boot can instantiate CAAM RNG if needed by crypto operations. Call sec_init() prior running a blob operation to ensure RNG is correctly instantiated. Make sure CAAM clock is enabled and check if a job ring is available for that operation. Signed-off-by: Breno Lima <breno.lima@nxp.com> Reviewed-by: Ye Li <ye.li@nxp.com> (cherry picked from commit b2b745515d06f05ea288524e26cf2389d6924ff2) (cherry picked from commit fe33f7296336b7364fb24ad21b0be32eb5810262) (cherry picked from commit 1339300cba26dc32289633c3a8c2cc86a1180949)
Diffstat (limited to 'cmd')
-rw-r--r--cmd/blob.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/cmd/blob.c b/cmd/blob.c
index 80478b8802..5de36b4d45 100644
--- a/cmd/blob.c
+++ b/cmd/blob.c
@@ -9,6 +9,10 @@
#include <malloc.h>
#include <asm/byteorder.h>
#include <linux/compiler.h>
+#if defined(CONFIG_ARCH_MX6) || defined(CONFIG_ARCH_MX7)
+#include <fsl_sec.h>
+#include <asm/arch/clock.h>
+#endif
/**
* blob_decap() - Decapsulate the data as a blob
@@ -73,6 +77,16 @@ static int do_blob(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
src_ptr = (uint8_t *)(uintptr_t)src_addr;
dst_ptr = (uint8_t *)(uintptr_t)dst_addr;
+#if defined(CONFIG_ARCH_MX6) || defined(CONFIG_ARCH_MX7)
+
+ hab_caam_clock_enable(1);
+
+ u32 out_jr_size = sec_in32(CONFIG_SYS_FSL_JR0_ADDR +
+ FSL_CAAM_ORSR_JRa_OFFSET);
+ if (out_jr_size != FSL_CAAM_MAX_JR_SIZE)
+ sec_init();
+#endif
+
if (enc)
ret = blob_encap(km_ptr, src_ptr, dst_ptr, len);
else