Commit b2b74551 authored by Breno Lima's avatar Breno Lima Committed by Ye Li
Browse files

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: default avatarBreno Lima <breno.lima@nxp.com>
Reviewed-by: default avatarYe Li <ye.li@nxp.com>
parent f4e19b92
......@@ -11,6 +11,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
DECLARE_GLOBAL_DATA_PTR;
......@@ -77,6 +81,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
......
......@@ -298,6 +298,9 @@ struct sg_entry {
#define FSL_CAAM_MP_PRVK_BYTES 32
#define FSL_CAAM_MP_MES_DGST_BYTES 32
#define FSL_CAAM_ORSR_JRa_OFFSET 0x102c
#define FSL_CAAM_MAX_JR_SIZE 4
/* blob_dek:
* Encapsulates the src in a secure blob and stores it dst
* @src: reference to the plaintext
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment