| /kernel/linux/linux-4.19/drivers/crypto/ |
| D | exynos-rng.c | 3 * exynos-rng.c - Random Number Generator driver for the Exynos 7 * Loosely based on old driver from drivers/char/hw_random/exynos-rng.c: 21 #include <crypto/internal/rng.h> 66 struct exynos_rng_dev *rng; member 87 static u32 exynos_rng_readl(struct exynos_rng_dev *rng, u32 offset) in exynos_rng_readl() argument 89 return readl_relaxed(rng->mem + offset); in exynos_rng_readl() 92 static void exynos_rng_writel(struct exynos_rng_dev *rng, u32 val, u32 offset) in exynos_rng_writel() argument 94 writel_relaxed(val, rng->mem + offset); in exynos_rng_writel() 97 static int exynos_rng_set_seed(struct exynos_rng_dev *rng, in exynos_rng_set_seed() argument 117 exynos_rng_writel(rng, val, EXYNOS_RNG_SEED(seed_reg)); in exynos_rng_set_seed() [all …]
|
| D | qcom-rng.c | 4 // Based on msm-rng.c and downstream driver 6 #include <crypto/internal/rng.h> 36 struct qcom_rng *rng; member 41 static int qcom_rng_read(struct qcom_rng *rng, u8 *data, unsigned int max) in qcom_rng_read() argument 48 val = readl_relaxed(rng->base + PRNG_STATUS); in qcom_rng_read() 52 val = readl_relaxed(rng->base + PRNG_DATA_OUT); in qcom_rng_read() 75 struct qcom_rng *rng = ctx->rng; in qcom_rng_generate() local 78 ret = clk_prepare_enable(rng->clk); in qcom_rng_generate() 82 mutex_lock(&rng->lock); in qcom_rng_generate() 84 ret = qcom_rng_read(rng, dstn, dlen); in qcom_rng_generate() [all …]
|
| /kernel/linux/linux-5.10/drivers/crypto/ |
| D | exynos-rng.c | 3 * exynos-rng.c - Random Number Generator driver for the Exynos 7 * Loosely based on old driver from drivers/char/hw_random/exynos-rng.c: 21 #include <crypto/internal/rng.h> 66 struct exynos_rng_dev *rng; member 87 static u32 exynos_rng_readl(struct exynos_rng_dev *rng, u32 offset) in exynos_rng_readl() argument 89 return readl_relaxed(rng->mem + offset); in exynos_rng_readl() 92 static void exynos_rng_writel(struct exynos_rng_dev *rng, u32 val, u32 offset) in exynos_rng_writel() argument 94 writel_relaxed(val, rng->mem + offset); in exynos_rng_writel() 97 static int exynos_rng_set_seed(struct exynos_rng_dev *rng, in exynos_rng_set_seed() argument 117 exynos_rng_writel(rng, val, EXYNOS_RNG_SEED(seed_reg)); in exynos_rng_set_seed() [all …]
|
| D | qcom-rng.c | 4 // Based on msm-rng.c and downstream driver 6 #include <crypto/internal/rng.h> 37 struct qcom_rng *rng; member 42 static int qcom_rng_read(struct qcom_rng *rng, u8 *data, unsigned int max) in qcom_rng_read() argument 49 val = readl_relaxed(rng->base + PRNG_STATUS); in qcom_rng_read() 53 val = readl_relaxed(rng->base + PRNG_DATA_OUT); in qcom_rng_read() 76 struct qcom_rng *rng = ctx->rng; in qcom_rng_generate() local 79 ret = clk_prepare_enable(rng->clk); in qcom_rng_generate() 83 mutex_lock(&rng->lock); in qcom_rng_generate() 85 ret = qcom_rng_read(rng, dstn, dlen); in qcom_rng_generate() [all …]
|
| /kernel/linux/linux-5.10/drivers/char/hw_random/ |
| D | Makefile | 3 # Makefile for HW Random Number Generator (RNG) device drivers. 6 obj-$(CONFIG_HW_RANDOM) += rng-core.o 7 rng-core-y := core.o 8 obj-$(CONFIG_HW_RANDOM_TIMERIOMEM) += timeriomem-rng.o 9 obj-$(CONFIG_HW_RANDOM_INTEL) += intel-rng.o 10 obj-$(CONFIG_HW_RANDOM_AMD) += amd-rng.o 11 obj-$(CONFIG_HW_RANDOM_ATMEL) += atmel-rng.o 12 obj-$(CONFIG_HW_RANDOM_BA431) += ba431-rng.o 13 obj-$(CONFIG_HW_RANDOM_GEODE) += geode-rng.o 14 obj-$(CONFIG_HW_RANDOM_N2RNG) += n2-rng.o [all …]
|
| D | core.c | 31 /* the current rng has been explicitly chosen by user via sysfs */ 38 /* Protects rng read functions, data_avail, rng_buffer and rng_fillbuf */ 53 static int hwrng_init(struct hwrng *rng); 56 static inline int rng_get_data(struct hwrng *rng, u8 *buffer, size_t size, 64 static void add_early_randomness(struct hwrng *rng) in add_early_randomness() argument 70 bytes_read = rng_get_data(rng, rng_buffer, size, 0); in add_early_randomness() 78 struct hwrng *rng = container_of(kref, struct hwrng, ref); in cleanup_rng() local 80 if (rng->cleanup) in cleanup_rng() 81 rng->cleanup(rng); in cleanup_rng() 83 complete(&rng->cleanup_done); in cleanup_rng() [all …]
|
| D | hisi-rng.c | 23 #define to_hisi_rng(p) container_of(p, struct hisi_rng, rng) 31 struct hwrng rng; member 34 static int hisi_rng_init(struct hwrng *rng) in hisi_rng_init() argument 36 struct hisi_rng *hrng = to_hisi_rng(rng); in hisi_rng_init() 57 static void hisi_rng_cleanup(struct hwrng *rng) in hisi_rng_cleanup() argument 59 struct hisi_rng *hrng = to_hisi_rng(rng); in hisi_rng_cleanup() 64 static int hisi_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in hisi_rng_read() argument 66 struct hisi_rng *hrng = to_hisi_rng(rng); in hisi_rng_read() 75 struct hisi_rng *rng; in hisi_rng_probe() local 78 rng = devm_kzalloc(&pdev->dev, sizeof(*rng), GFP_KERNEL); in hisi_rng_probe() [all …]
|
| D | cavium-rng.c | 25 /* Enable the RNG hardware and activate the VF */ 29 struct cavium_rng_pf *rng; in cavium_rng_probe() local 32 rng = devm_kzalloc(&pdev->dev, sizeof(*rng), GFP_KERNEL); in cavium_rng_probe() 33 if (!rng) in cavium_rng_probe() 36 /*Map the RNG control */ in cavium_rng_probe() 37 rng->control_status = pcim_iomap(pdev, 0, 0); in cavium_rng_probe() 38 if (!rng->control_status) { in cavium_rng_probe() 44 /* Enable the RNG hardware and entropy source */ in cavium_rng_probe() 46 rng->control_status); in cavium_rng_probe() 48 pci_set_drvdata(pdev, rng); in cavium_rng_probe() [all …]
|
| D | ingenic-rng.c | 18 /* RNG register offsets */ 36 struct hwrng rng; member 39 static int ingenic_rng_init(struct hwrng *rng) in ingenic_rng_init() argument 41 struct ingenic_rng *priv = container_of(rng, struct ingenic_rng, rng); in ingenic_rng_init() 48 static void ingenic_rng_cleanup(struct hwrng *rng) in ingenic_rng_cleanup() argument 50 struct ingenic_rng *priv = container_of(rng, struct ingenic_rng, rng); in ingenic_rng_cleanup() 55 static int ingenic_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in ingenic_rng_read() argument 57 struct ingenic_rng *priv = container_of(rng, struct ingenic_rng, rng); in ingenic_rng_read() 66 pr_err("%s: Wait for RNG data ready timeout\n", __func__); in ingenic_rng_read() 71 * A delay is required so that the current RNG data is not bit shifted in ingenic_rng_read() [all …]
|
| D | mtk-rng.c | 33 #define to_mtk_rng(p) container_of(p, struct mtk_rng, rng) 38 struct hwrng rng; member 41 static int mtk_rng_init(struct hwrng *rng) in mtk_rng_init() argument 43 struct mtk_rng *priv = to_mtk_rng(rng); in mtk_rng_init() 58 static void mtk_rng_cleanup(struct hwrng *rng) in mtk_rng_cleanup() argument 60 struct mtk_rng *priv = to_mtk_rng(rng); in mtk_rng_cleanup() 70 static bool mtk_rng_wait_ready(struct hwrng *rng, bool wait) in mtk_rng_wait_ready() argument 72 struct mtk_rng *priv = to_mtk_rng(rng); in mtk_rng_wait_ready() 83 static int mtk_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in mtk_rng_read() argument 85 struct mtk_rng *priv = to_mtk_rng(rng); in mtk_rng_read() [all …]
|
| D | stm32-rng.c | 31 struct hwrng rng; member 38 static int stm32_rng_read(struct hwrng *rng, void *data, size_t max, bool wait) in stm32_rng_read() argument 41 container_of(rng, struct stm32_rng_private, rng); in stm32_rng_read() 45 pm_runtime_get_sync((struct device *) priv->rng.priv); in stm32_rng_read() 50 /* care of initial delay time when enabling rng */ in stm32_rng_read() 57 dev_err((struct device *)priv->rng.priv, in stm32_rng_read() 64 "bad RNG status - %x\n", sr)) in stm32_rng_read() 76 pm_runtime_mark_last_busy((struct device *) priv->rng.priv); in stm32_rng_read() 77 pm_runtime_put_sync_autosuspend((struct device *) priv->rng.priv); in stm32_rng_read() 82 static int stm32_rng_init(struct hwrng *rng) in stm32_rng_init() argument [all …]
|
| D | npcm-rng.c | 29 #define to_npcm_rng(p) container_of(p, struct npcm_rng, rng) 33 struct hwrng rng; member 36 static int npcm_rng_init(struct hwrng *rng) in npcm_rng_init() argument 38 struct npcm_rng *priv = to_npcm_rng(rng); in npcm_rng_init() 46 static void npcm_rng_cleanup(struct hwrng *rng) in npcm_rng_cleanup() argument 48 struct npcm_rng *priv = to_npcm_rng(rng); in npcm_rng_cleanup() 53 static int npcm_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in npcm_rng_read() argument 55 struct npcm_rng *priv = to_npcm_rng(rng); in npcm_rng_read() 59 pm_runtime_get_sync((struct device *)priv->rng.priv); in npcm_rng_read() 81 pm_runtime_mark_last_busy((struct device *)priv->rng.priv); in npcm_rng_read() [all …]
|
| D | cavium-rng-vf.c | 23 /* Read data from the RNG unit */ 24 static int cavium_rng_read(struct hwrng *rng, void *dat, size_t max, bool wait) in cavium_rng_read() argument 26 struct cavium_rng *p = container_of(rng, struct cavium_rng, ops); in cavium_rng_read() 42 /* Map Cavium RNG to an HWRNG object */ 46 struct cavium_rng *rng; in cavium_rng_probe_vf() local 49 rng = devm_kzalloc(&pdev->dev, sizeof(*rng), GFP_KERNEL); in cavium_rng_probe_vf() 50 if (!rng) in cavium_rng_probe_vf() 53 /* Map the RNG result */ in cavium_rng_probe_vf() 54 rng->result = pcim_iomap(pdev, 0, 0); in cavium_rng_probe_vf() 55 if (!rng->result) { in cavium_rng_probe_vf() [all …]
|
| D | bcm2835-rng.c | 22 /* enable rng */ 31 struct hwrng rng; member 37 static inline struct bcm2835_rng_priv *to_rng_priv(struct hwrng *rng) in to_rng_priv() argument 39 return container_of(rng, struct bcm2835_rng_priv, rng); in to_rng_priv() 62 static int bcm2835_rng_read(struct hwrng *rng, void *buf, size_t max, in bcm2835_rng_read() argument 65 struct bcm2835_rng_priv *priv = to_rng_priv(rng); in bcm2835_rng_read() 85 static int bcm2835_rng_init(struct hwrng *rng) in bcm2835_rng_init() argument 87 struct bcm2835_rng_priv *priv = to_rng_priv(rng); in bcm2835_rng_init() 111 static void bcm2835_rng_cleanup(struct hwrng *rng) in bcm2835_rng_cleanup() argument 113 struct bcm2835_rng_priv *priv = to_rng_priv(rng); in bcm2835_rng_cleanup() [all …]
|
| D | octeon-rng.c | 28 static int octeon_rng_init(struct hwrng *rng) in octeon_rng_init() argument 31 struct octeon_rng *p = container_of(rng, struct octeon_rng, ops); in octeon_rng_init() 35 ctl.s.rng_en = 1; /* Enable the RNG hardware. */ in octeon_rng_init() 40 static void octeon_rng_cleanup(struct hwrng *rng) in octeon_rng_cleanup() argument 43 struct octeon_rng *p = container_of(rng, struct octeon_rng, ops); in octeon_rng_cleanup() 50 static int octeon_rng_data_read(struct hwrng *rng, u32 *data) in octeon_rng_data_read() argument 52 struct octeon_rng *p = container_of(rng, struct octeon_rng, ops); in octeon_rng_data_read() 62 struct octeon_rng *rng; in octeon_rng_probe() local 71 rng = devm_kzalloc(&pdev->dev, sizeof(*rng), GFP_KERNEL); in octeon_rng_probe() 72 if (!rng) in octeon_rng_probe() [all …]
|
| /kernel/linux/linux-4.19/drivers/char/hw_random/ |
| D | core.c | 31 /* the current rng has been explicitly chosen by user via sysfs */ 38 /* Protects rng read functions, data_avail, rng_buffer and rng_fillbuf */ 53 static int hwrng_init(struct hwrng *rng); 56 static inline int rng_get_data(struct hwrng *rng, u8 *buffer, size_t size, 64 static void add_early_randomness(struct hwrng *rng) in add_early_randomness() argument 70 bytes_read = rng_get_data(rng, rng_buffer, size, 0); in add_early_randomness() 78 struct hwrng *rng = container_of(kref, struct hwrng, ref); in cleanup_rng() local 80 if (rng->cleanup) in cleanup_rng() 81 rng->cleanup(rng); in cleanup_rng() 83 complete(&rng->cleanup_done); in cleanup_rng() [all …]
|
| D | Makefile | 3 # Makefile for HW Random Number Generator (RNG) device drivers. 6 obj-$(CONFIG_HW_RANDOM) += rng-core.o 7 rng-core-y := core.o 8 obj-$(CONFIG_HW_RANDOM_TIMERIOMEM) += timeriomem-rng.o 9 obj-$(CONFIG_HW_RANDOM_INTEL) += intel-rng.o 10 obj-$(CONFIG_HW_RANDOM_AMD) += amd-rng.o 11 obj-$(CONFIG_HW_RANDOM_ATMEL) += atmel-rng.o 12 obj-$(CONFIG_HW_RANDOM_GEODE) += geode-rng.o 13 obj-$(CONFIG_HW_RANDOM_N2RNG) += n2-rng.o 14 n2-rng-y := n2-drv.o n2-asm.o [all …]
|
| D | hisi-rng.c | 26 #define to_hisi_rng(p) container_of(p, struct hisi_rng, rng) 34 struct hwrng rng; member 37 static int hisi_rng_init(struct hwrng *rng) in hisi_rng_init() argument 39 struct hisi_rng *hrng = to_hisi_rng(rng); in hisi_rng_init() 60 static void hisi_rng_cleanup(struct hwrng *rng) in hisi_rng_cleanup() argument 62 struct hisi_rng *hrng = to_hisi_rng(rng); in hisi_rng_cleanup() 67 static int hisi_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in hisi_rng_read() argument 69 struct hisi_rng *hrng = to_hisi_rng(rng); in hisi_rng_read() 78 struct hisi_rng *rng; in hisi_rng_probe() local 82 rng = devm_kzalloc(&pdev->dev, sizeof(*rng), GFP_KERNEL); in hisi_rng_probe() [all …]
|
| D | cavium-rng.c | 25 /* Enable the RNG hardware and activate the VF */ 29 struct cavium_rng_pf *rng; in cavium_rng_probe() local 32 rng = devm_kzalloc(&pdev->dev, sizeof(*rng), GFP_KERNEL); in cavium_rng_probe() 33 if (!rng) in cavium_rng_probe() 36 /*Map the RNG control */ in cavium_rng_probe() 37 rng->control_status = pcim_iomap(pdev, 0, 0); in cavium_rng_probe() 38 if (!rng->control_status) { in cavium_rng_probe() 44 /* Enable the RNG hardware and entropy source */ in cavium_rng_probe() 46 rng->control_status); in cavium_rng_probe() 48 pci_set_drvdata(pdev, rng); in cavium_rng_probe() [all …]
|
| D | cavium-rng-vf.c | 23 /* Read data from the RNG unit */ 24 static int cavium_rng_read(struct hwrng *rng, void *dat, size_t max, bool wait) in cavium_rng_read() argument 26 struct cavium_rng *p = container_of(rng, struct cavium_rng, ops); in cavium_rng_read() 42 /* Map Cavium RNG to an HWRNG object */ 46 struct cavium_rng *rng; in cavium_rng_probe_vf() local 49 rng = devm_kzalloc(&pdev->dev, sizeof(*rng), GFP_KERNEL); in cavium_rng_probe_vf() 50 if (!rng) in cavium_rng_probe_vf() 53 /* Map the RNG result */ in cavium_rng_probe_vf() 54 rng->result = pcim_iomap(pdev, 0, 0); in cavium_rng_probe_vf() 55 if (!rng->result) { in cavium_rng_probe_vf() [all …]
|
| D | stm32-rng.c | 40 struct hwrng rng; member 47 static int stm32_rng_read(struct hwrng *rng, void *data, size_t max, bool wait) in stm32_rng_read() argument 50 container_of(rng, struct stm32_rng_private, rng); in stm32_rng_read() 54 pm_runtime_get_sync((struct device *) priv->rng.priv); in stm32_rng_read() 59 /* care of initial delay time when enabling rng */ in stm32_rng_read() 66 dev_err((struct device *)priv->rng.priv, in stm32_rng_read() 73 "bad RNG status - %x\n", sr)) in stm32_rng_read() 85 pm_runtime_mark_last_busy((struct device *) priv->rng.priv); in stm32_rng_read() 86 pm_runtime_put_sync_autosuspend((struct device *) priv->rng.priv); in stm32_rng_read() 91 static int stm32_rng_init(struct hwrng *rng) in stm32_rng_init() argument [all …]
|
| D | mtk-rng.c | 42 #define to_mtk_rng(p) container_of(p, struct mtk_rng, rng) 47 struct hwrng rng; member 50 static int mtk_rng_init(struct hwrng *rng) in mtk_rng_init() argument 52 struct mtk_rng *priv = to_mtk_rng(rng); in mtk_rng_init() 67 static void mtk_rng_cleanup(struct hwrng *rng) in mtk_rng_cleanup() argument 69 struct mtk_rng *priv = to_mtk_rng(rng); in mtk_rng_cleanup() 79 static bool mtk_rng_wait_ready(struct hwrng *rng, bool wait) in mtk_rng_wait_ready() argument 81 struct mtk_rng *priv = to_mtk_rng(rng); in mtk_rng_wait_ready() 92 static int mtk_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in mtk_rng_read() argument 94 struct mtk_rng *priv = to_mtk_rng(rng); in mtk_rng_read() [all …]
|
| D | bcm2835-rng.c | 25 /* enable rng */ 34 struct hwrng rng; member 40 static inline struct bcm2835_rng_priv *to_rng_priv(struct hwrng *rng) in to_rng_priv() argument 42 return container_of(rng, struct bcm2835_rng_priv, rng); in to_rng_priv() 65 static int bcm2835_rng_read(struct hwrng *rng, void *buf, size_t max, in bcm2835_rng_read() argument 68 struct bcm2835_rng_priv *priv = to_rng_priv(rng); in bcm2835_rng_read() 88 static int bcm2835_rng_init(struct hwrng *rng) in bcm2835_rng_init() argument 90 struct bcm2835_rng_priv *priv = to_rng_priv(rng); in bcm2835_rng_init() 114 static void bcm2835_rng_cleanup(struct hwrng *rng) in bcm2835_rng_cleanup() argument 116 struct bcm2835_rng_priv *priv = to_rng_priv(rng); in bcm2835_rng_cleanup() [all …]
|
| /kernel/linux/linux-5.10/arch/powerpc/platforms/powernv/ |
| D | rng.c | 6 #define pr_fmt(fmt) "powernv-rng: " fmt 34 struct powernv_rng *rng; in powernv_hwrng_present() local 36 rng = get_cpu_var(powernv_rng); in powernv_hwrng_present() 37 put_cpu_var(rng); in powernv_hwrng_present() 38 return rng != NULL; in powernv_hwrng_present() 41 static unsigned long rng_whiten(struct powernv_rng *rng, unsigned long val) in rng_whiten() argument 49 val ^= rng->mask; in rng_whiten() 52 rng->mask = (rng->mask << 1) | (parity & 1); in rng_whiten() 59 struct powernv_rng *rng; in powernv_get_random_real_mode() local 61 rng = raw_cpu_read(powernv_rng); in powernv_get_random_real_mode() [all …]
|
| /kernel/linux/linux-4.19/arch/powerpc/platforms/powernv/ |
| D | rng.c | 10 #define pr_fmt(fmt) "powernv-rng: " fmt 38 struct powernv_rng *rng; in powernv_hwrng_present() local 40 rng = get_cpu_var(powernv_rng); in powernv_hwrng_present() 41 put_cpu_var(rng); in powernv_hwrng_present() 42 return rng != NULL; in powernv_hwrng_present() 45 static unsigned long rng_whiten(struct powernv_rng *rng, unsigned long val) in rng_whiten() argument 53 val ^= rng->mask; in rng_whiten() 56 rng->mask = (rng->mask << 1) | (parity & 1); in rng_whiten() 63 struct powernv_rng *rng; in powernv_get_random_real_mode() local 65 rng = raw_cpu_read(powernv_rng); in powernv_get_random_real_mode() [all …]
|