linux/drivers/crypto
Krzysztof Kozlowski c46ea13f55 crypto: exynos - Add new Exynos RNG driver
Replace existing hw_ranndom/exynos-rng driver with a new, reworked one.
This is a driver for pseudo random number generator block which on
Exynos4 chipsets must be seeded with some value.  On newer Exynos5420
chipsets it might seed itself from true random number generator block
but this is not implemented yet.

New driver is a complete rework to use the crypto ALGAPI instead of
hw_random API.  Rationale for the change:
1. hw_random interface is for true RNG devices.
2. The old driver was seeding itself with jiffies which is not a
   reliable source for randomness.
3. Device generates five random 32-bit numbers in each pass but old
   driver was returning only one 32-bit number thus its performance was
   reduced.

Compatibility with DeviceTree bindings is preserved.

New driver does not use runtime power management but manually enables
and disables the clock when needed.  This is preferred approach because
using runtime PM just to toggle clock is huge overhead.

Another difference is reseeding itself with generated random data
periodically and during resuming from system suspend (previously driver
was re-seeding itself again with jiffies).

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Reviewed-by: Stephan Müller <smueller@chronox.de>
Reviewed-by: PrasannaKumar Muralidharan <prasannatsmkumar@gmail.com>
Reviewed-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2017-04-21 20:30:46 +08:00
..
amcc crypto: crypto4xx - Fix size used in dma_free_coherent() 2016-10-21 11:03:41 +08:00
bcm crypto: bcm - fix spelling mistake: "genereate" -> "generate" 2017-03-09 18:34:27 +08:00
caam crypto: caam - fix error return code in caam_qi_init() 2017-04-21 20:30:37 +08:00
cavium crypto: zip - add a cast for printing atomic64_t values 2017-03-24 22:03:01 +08:00
ccp crypto: ccp - Rearrange structure members to minimize size 2017-04-05 21:58:35 +08:00
chelsio crypto: chcr - Add fallback for AEAD algos 2017-04-21 20:30:35 +08:00
marvell Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2016-12-27 17:51:36 -08:00
mediatek crypto: mediatek - make hardware operation flow more efficient 2017-03-16 17:58:57 +08:00
nx crypto: nx - drop duplicate header types.h 2016-11-17 23:34:55 +08:00
qat crypto: kpp - constify buffer passed to crypto_kpp_set_secret() 2017-03-09 18:34:27 +08:00
qce crypto: qce - Use skcipher for fallback 2016-07-01 23:45:09 +08:00
rockchip crypto: rockchip - use devm_add_action_or_reset() 2016-08-24 21:07:11 +08:00
stm32 crypto: stm32 - Support for STM32 CRC32 crypto module 2017-04-05 21:58:33 +08:00
sunxi-ss crypto: sun4i-ss - mark sun4i_hash() static 2016-09-22 18:32:48 +08:00
ux500 scripts/spelling.txt: add "disble(d)" pattern and fix typo instances 2017-03-09 17:01:09 -08:00
virtio virtio, vhost: optimizations, fixes 2017-03-02 13:53:13 -08:00
vmx crypto: vmx - Use skcipher for xts fallback 2017-03-02 18:57:31 +08:00
atmel-aes-regs.h crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes 2017-02-03 18:16:14 +08:00
atmel-aes.c crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes 2017-02-03 18:16:14 +08:00
atmel-authenc.h crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes 2017-02-03 18:16:14 +08:00
atmel-sha-regs.h crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes 2017-02-03 18:16:14 +08:00
atmel-sha.c crypto: atmel-sha - fix error management in atmel_sha_start() 2017-02-15 13:23:33 +08:00
atmel-tdes-regs.h
atmel-tdes.c crypto: atmel - fix 64-bit build warnings 2017-02-11 17:52:29 +08:00
bfin_crc.c crypto: bfin_crc - Fix format printing warning 2016-12-27 17:50:51 +08:00
bfin_crc.h crypto: bfin_crc - Remove unneeded linux/miscdevice.h include 2016-12-27 17:50:51 +08:00
exynos-rng.c crypto: exynos - Add new Exynos RNG driver 2017-04-21 20:30:46 +08:00
geode-aes.c
geode-aes.h
hifn_795x.c crypto: squash lines for simple wrapper functions 2016-09-13 20:27:26 +08:00
img-hash.c crypto: img-hash - use dma_data_direction when calling dma_map_sg 2017-01-23 22:50:23 +08:00
ixp4xx_crypto.c crypto: ixp4xx - Use sg_virt() 2017-03-24 22:03:01 +08:00
Kconfig crypto: exynos - Add new Exynos RNG driver 2017-04-21 20:30:46 +08:00
Makefile crypto: exynos - Add new Exynos RNG driver 2017-04-21 20:30:46 +08:00
mv_cesa.c Crypto: mv_cesa - Switch to using managed resources 2016-11-13 17:45:01 +08:00
mv_cesa.h
mxc-scc.c crypto: mxc-scc - check clk_prepare_enable() error 2016-08-24 21:04:50 +08:00
mxs-dcp.c crypto: mxs-dcp - Use skcipher for fallback 2016-07-01 23:45:08 +08:00
n2_asm.S
n2_core.c crypto: n2 - Remove return statement from void function 2016-04-05 20:35:44 +08:00
n2_core.h
omap-aes.c crypto: omap-aes - fix error return code in omap_aes_probe() 2016-09-22 18:27:35 +08:00
omap-des.c crypto: omap-des - fix error return code in omap_des_probe() 2016-09-22 18:27:34 +08:00
omap-sham.c crypto: omap-sham - shrink the internal buffer size 2016-09-22 18:32:53 +08:00
padlock-aes.c x86/fpu: Remove irq_ts_save() and irq_ts_restore() 2016-11-01 07:47:54 +01:00
padlock-sha.c x86/fpu: Remove irq_ts_save() and irq_ts_restore() 2016-11-01 07:47:54 +01:00
picoxcell_crypto_regs.h
picoxcell_crypto.c crypto: picoxcell - Remove spacc_is_compatible() wrapper function 2017-01-13 00:24:41 +08:00
s5p-sss.c crypto: s5p-sss - Document the struct s5p_aes_dev 2017-03-24 22:03:00 +08:00
sahara.c crypto: sahara - fix typo "Decidated" -> "Dedicated" 2016-11-01 08:37:12 +08:00
talitos.c crypto: talitos - fix spelling mistake 2016-11-13 17:44:59 +08:00
talitos.h crypto: talitos - add new crypto modes 2015-12-04 22:29:56 +08:00