diff options
Diffstat (limited to 'drivers/crypto')
-rw-r--r-- | drivers/crypto/fsl/jr.c | 25 | ||||
-rw-r--r-- | drivers/crypto/fsl/jr.h | 2 | ||||
-rw-r--r-- | drivers/crypto/fsl/sec.c | 20 |
3 files changed, 29 insertions, 18 deletions
diff --git a/drivers/crypto/fsl/jr.c b/drivers/crypto/fsl/jr.c index f99d59480c8..17392c9813f 100644 --- a/drivers/crypto/fsl/jr.c +++ b/drivers/crypto/fsl/jr.c @@ -406,10 +406,19 @@ static void kick_trng(int ent_delay) sec_out32(&rng->rtsdctl, val); /* min. freq. count, equal to 1/4 of the entropy sample length */ sec_out32(&rng->rtfreqmin, ent_delay >> 2); - /* max. freq. count, equal to 8 times the entropy sample length */ - sec_out32(&rng->rtfreqmax, ent_delay << 3); + /* disable maximum frequency count */ + sec_out32(&rng->rtfreqmax, RTFRQMAX_DISABLE); + /* read the control register */ + val = sec_in32(&rng->rtmctl); + /* + * select raw sampling in both entropy shifter + * and statistical checker + */ + sec_setbits32(&val, RTMCTL_SAMP_MODE_RAW_ES_SC); /* put RNG4 into run mode */ - sec_clrbits32(&rng->rtmctl, RTMCTL_PRGM); + sec_clrbits32(&val, RTMCTL_PRGM); + /* write back the control register */ + sec_out32(&rng->rtmctl, val); } static int rng_init(void) @@ -459,14 +468,16 @@ static int rng_init(void) int sec_init(void) { - int ret = 0; - -#ifdef CONFIG_PHYS_64BIT ccsr_sec_t *sec = (void *)CONFIG_SYS_FSL_SEC_ADDR; uint32_t mcr = sec_in32(&sec->mcfgr); + int ret = 0; - sec_out32(&sec->mcfgr, mcr | 1 << MCFGR_PS_SHIFT); + mcr = (mcr & ~MCFGR_AWCACHE_MASK) | (0x2 << MCFGR_AWCACHE_SHIFT); +#ifdef CONFIG_PHYS_64BIT + mcr |= (1 << MCFGR_PS_SHIFT); #endif + sec_out32(&sec->mcfgr, mcr); + ret = jr_init(); if (ret < 0) { printf("SEC initialization failed\n"); diff --git a/drivers/crypto/fsl/jr.h b/drivers/crypto/fsl/jr.h index cce2c589ce0..15260600884 100644 --- a/drivers/crypto/fsl/jr.h +++ b/drivers/crypto/fsl/jr.h @@ -21,6 +21,8 @@ #define MCFGR_SWRST ((uint32_t)(1)<<31) /* Software Reset */ #define MCFGR_DMA_RST ((uint32_t)(1)<<28) /* DMA Reset */ #define MCFGR_PS_SHIFT 16 +#define MCFGR_AWCACHE_SHIFT 8 +#define MCFGR_AWCACHE_MASK (0xf << MCFGR_AWCACHE_SHIFT) #define JR_INTMASK 0x00000001 #define JRCR_RESET 0x01 #define JRINT_ERR_HALT_INPROGRESS 0x4 diff --git a/drivers/crypto/fsl/sec.c b/drivers/crypto/fsl/sec.c index 443ee964fea..0940faf768c 100644 --- a/drivers/crypto/fsl/sec.c +++ b/drivers/crypto/fsl/sec.c @@ -60,27 +60,26 @@ void fdt_fixup_crypto_node(void *blob, int sec_rev) return; } - val = cpu_to_fdt32(sec_rev_prop_list[sec_idx].num_channels); - err = fdt_setprop(blob, crypto_node, "fsl,num-channels", &val, 4); + err = fdt_setprop_u32(blob, crypto_node, "fsl,num-channels", + sec_rev_prop_list[sec_idx].num_channels); if (err < 0) printf("WARNING: could not set crypto property: %s\n", fdt_strerror(err)); - val = cpu_to_fdt32(sec_rev_prop_list[sec_idx].descriptor_types_mask); - err = fdt_setprop(blob, crypto_node, "fsl,descriptor-types-mask", - &val, 4); + err = fdt_setprop_u32(blob, crypto_node, "fsl,descriptor-types-mask", + sec_rev_prop_list[sec_idx].descriptor_types_mask); if (err < 0) printf("WARNING: could not set crypto property: %s\n", fdt_strerror(err)); - val = cpu_to_fdt32(sec_rev_prop_list[sec_idx].exec_units_mask); - err = fdt_setprop(blob, crypto_node, "fsl,exec-units-mask", &val, 4); + err = fdt_setprop_u32(blob, crypto_node, "fsl,exec-units-mask", + sec_rev_prop_list[sec_idx].exec_units_mask); if (err < 0) printf("WARNING: could not set crypto property: %s\n", fdt_strerror(err)); - val = cpu_to_fdt32(sec_rev_prop_list[sec_idx].channel_fifo_len); - err = fdt_setprop(blob, crypto_node, "fsl,channel-fifo-len", &val, 4); + err = fdt_setprop_u32(blob, crypto_node, "fsl,channel-fifo-len", + sec_rev_prop_list[sec_idx].channel_fifo_len); if (err < 0) printf("WARNING: could not set crypto property: %s\n", fdt_strerror(err)); @@ -155,8 +154,7 @@ static void fdt_fixup_crypto_era(void *blob, u32 era) return; } - err = fdt_setprop(blob, crypto_node, "fsl,sec-era", &era, - sizeof(era)); + err = fdt_setprop_u32(blob, crypto_node, "fsl,sec-era", era); if (err < 0) { printf("ERROR: could not set fsl,sec-era property: %s\n", fdt_strerror(err)); |