/Linux-v5.10/drivers/char/hw_random/ |
D | atmel-rng.c | 42 struct atmel_trng *trng = container_of(rng, struct atmel_trng, rng); in atmel_trng_read() local 46 if (readl(trng->base + TRNG_ISR) & 1) { in atmel_trng_read() 47 *data = readl(trng->base + TRNG_ODATA); in atmel_trng_read() 54 readl(trng->base + TRNG_ISR); in atmel_trng_read() 60 static void atmel_trng_enable(struct atmel_trng *trng) in atmel_trng_enable() argument 62 writel(TRNG_KEY | 1, trng->base + TRNG_CR); in atmel_trng_enable() 65 static void atmel_trng_disable(struct atmel_trng *trng) in atmel_trng_disable() argument 67 writel(TRNG_KEY, trng->base + TRNG_CR); in atmel_trng_disable() 72 struct atmel_trng *trng; in atmel_trng_probe() local 76 trng = devm_kzalloc(&pdev->dev, sizeof(*trng), GFP_KERNEL); in atmel_trng_probe() [all …]
|
D | xiphera-trng.c | 25 /* trng statuses */ 38 struct xiphera_trng *trng = container_of(rng, struct xiphera_trng, rng); in xiphera_trng_read() local 43 if (readl(trng->mem + STATUS_REG) == TRNG_NEW_RAND_AVAILABLE) { in xiphera_trng_read() 44 *(u32 *)buf = readl(trng->mem + RAND_REG); in xiphera_trng_read() 46 * Inform the trng of the read in xiphera_trng_read() 49 writel(HOST_TO_TRNG_READ, trng->mem + CONTROL_REG); in xiphera_trng_read() 50 writel(HOST_TO_TRNG_ENABLE, trng->mem + CONTROL_REG); in xiphera_trng_read() 64 struct xiphera_trng *trng; in xiphera_trng_probe() local 68 trng = devm_kzalloc(dev, sizeof(*trng), GFP_KERNEL); in xiphera_trng_probe() 69 if (!trng) in xiphera_trng_probe() [all …]
|
D | ingenic-trng.c | 40 struct ingenic_trng *trng = container_of(rng, struct ingenic_trng, rng); in ingenic_trng_init() local 43 ctrl = readl(trng->base + TRNG_REG_CFG_OFFSET); in ingenic_trng_init() 45 writel(ctrl, trng->base + TRNG_REG_CFG_OFFSET); in ingenic_trng_init() 52 struct ingenic_trng *trng = container_of(rng, struct ingenic_trng, rng); in ingenic_trng_cleanup() local 55 ctrl = readl(trng->base + TRNG_REG_CFG_OFFSET); in ingenic_trng_cleanup() 57 writel(ctrl, trng->base + TRNG_REG_CFG_OFFSET); in ingenic_trng_cleanup() 62 struct ingenic_trng *trng = container_of(rng, struct ingenic_trng, rng); in ingenic_trng_read() local 67 ret = readl_poll_timeout(trng->base + TRNG_REG_STATUS_OFFSET, status, in ingenic_trng_read() 74 *data = readl(trng->base + TRNG_REG_RANDOMNUM_OFFSET); in ingenic_trng_read() 81 struct ingenic_trng *trng; in ingenic_trng_probe() local [all …]
|
D | exynos-trng.c | 58 struct exynos_trng_dev *trng; in exynos_trng_do_read() local 63 trng = (struct exynos_trng_dev *)rng->priv; in exynos_trng_do_read() 65 writel_relaxed(max * 8, trng->mem + EXYNOS_TRNG_FIFO_CTRL); in exynos_trng_do_read() 66 val = readl_poll_timeout(trng->mem + EXYNOS_TRNG_FIFO_CTRL, val, in exynos_trng_do_read() 71 memcpy_fromio(data, trng->mem + EXYNOS_TRNG_FIFO_0, max); in exynos_trng_do_read() 78 struct exynos_trng_dev *trng = (struct exynos_trng_dev *)rng->priv; in exynos_trng_init() local 82 sss_rate = clk_get_rate(trng->clk); in exynos_trng_init() 85 * For most TRNG circuits the clock frequency of under 500 kHz in exynos_trng_init() 90 dev_err(trng->dev, "clock divider too large: %d", val); in exynos_trng_init() 94 writel_relaxed(val, trng->mem + EXYNOS_TRNG_CLKDIV); in exynos_trng_init() [all …]
|
D | hisi-trng-v2.c | 27 struct hisi_trng *trng; in hisi_trng_read() local 32 trng = container_of(rng, struct hisi_trng, rng); in hisi_trng_read() 35 ret = readl_poll_timeout(trng->base + HISI_TRNG_REG, val, in hisi_trng_read() 58 struct hisi_trng *trng; in hisi_trng_probe() local 61 trng = devm_kzalloc(&pdev->dev, sizeof(*trng), GFP_KERNEL); in hisi_trng_probe() 62 if (!trng) in hisi_trng_probe() 65 trng->base = devm_platform_ioremap_resource(pdev, 0); in hisi_trng_probe() 66 if (IS_ERR(trng->base)) in hisi_trng_probe() 67 return PTR_ERR(trng->base); in hisi_trng_probe() 69 trng->rng.name = pdev->name; in hisi_trng_probe() [all …]
|
D | s390-trng.c | 3 * s390 TRNG device driver 5 * Driver for the TRNG (true random number generation) command 12 #define KMSG_COMPONENT "trng" 29 MODULE_DESCRIPTION("s390 CPACF TRNG device driver"); 32 /* trng related debug feature things */ 42 /* trng helpers */ 115 "trng: %llu\n" in trng_counter_show() 123 "trng: %llu\n" in trng_counter_show() 155 .name = "trng", 195 * The trng is suppost to have 100% entropy, and thus [all …]
|
D | Makefile | 17 obj-$(CONFIG_HW_RANDOM_EXYNOS) += exynos-trng.o 27 obj-$(CONFIG_HW_RANDOM_INGENIC_TRNG) += ingenic-trng.o 33 obj-$(CONFIG_HW_RANDOM_HISI_V2) += hisi-trng-v2.o 43 obj-$(CONFIG_HW_RANDOM_S390) += s390-trng.o 48 obj-$(CONFIG_HW_RANDOM_XIPHERA) += xiphera-trng.o
|
D | pic32-rng.c | 43 * The TRNG can generate up to 24Mbps. This is a timeout that should be safe 44 * enough given the instructions in the loop and that the TRNG may not always 60 /* TRNG value comes through the seed registers */ in pic32_rng_read() 92 /* enable TRNG in enhanced mode */ in pic32_rng_probe()
|
D | ks-sa-rng.c | 28 /* TRNG enable control in SA System module*/ 31 /* TRNG start control in TRNG module */ 139 /* Disable all interrupts from TRNG */ in ks_sa_rng_init()
|
D | Kconfig | 295 module will be called ingenic-trng. 360 module will be called hisi-trng-v2. 375 tristate "APM X-Gene True Random Number Generator (TRNG) support" 465 module will be called s390-trng. 478 will be called exynos-trng. 537 module will be called xiphera-trng.
|
D | cctrng.c | 38 /* The timeout for the TRNG operation should be calculated with the formula: 394 /* trigger trng hw with next rosc */ in cc_trng_compwork_handler() 699 { .compatible = "arm,cryptocell-713-trng", }, 700 { .compatible = "arm,cryptocell-703-trng", }, 732 MODULE_DESCRIPTION("ARM CryptoCell TRNG Driver");
|
D | ba431-rng.c | 202 dev_info(&pdev->dev, "BA431 TRNG registered\n"); in ba431_trng_probe() 234 MODULE_DESCRIPTION("TRNG driver for Silex Insight BA431");
|
/Linux-v5.10/drivers/crypto/allwinner/sun8i-ce/ |
D | sun8i-ce-trng.c | 3 * sun8i-ce-trng.c - hardware cryptographic offloader for 8 * This file handle the TRNG 17 * Note that according to the algorithm ID, 2 versions of the TRNG exists, 35 ce = container_of(rng, struct sun8i_ce_dev, trng); in sun8i_ce_trng_read() 70 common = ce->variant->trng | CE_COMM_INT; in sun8i_ce_trng_read() 86 err = sun8i_ce_run_task(ce, 3, "TRNG"); in sun8i_ce_trng_read() 108 if (ce->variant->trng == CE_ID_NOTSUPP) { in sun8i_ce_hwrng_register() 109 dev_info(ce->dev, "TRNG not supported\n"); in sun8i_ce_hwrng_register() 112 ce->trng.name = "sun8i Crypto Engine TRNG"; in sun8i_ce_hwrng_register() 113 ce->trng.read = sun8i_ce_trng_read; in sun8i_ce_hwrng_register() [all …]
|
D | sun8i-ce.h | 135 * @trng_t_dlen_in_bytes: Does the request size for TRNG is in 140 * @trng: The CE_ALG_XXX value for the TRNG 153 unsigned char trng; member 230 struct hwrng trng; member
|
D | Makefile | 5 sun8i-ce-$(CONFIG_CRYPTO_DEV_SUN8I_CE_TRNG) += sun8i-ce-trng.o
|
/Linux-v5.10/drivers/crypto/amcc/ |
D | crypto4xx_trng.c | 74 struct device_node *trng = NULL; in ppc4xx_trng_probe() local 78 /* Find the TRNG device node and map it */ in ppc4xx_trng_probe() 79 trng = of_find_matching_node(NULL, ppc4xx_trng_match); in ppc4xx_trng_probe() 80 if (!trng || !of_device_is_available(trng)) { in ppc4xx_trng_probe() 81 of_node_put(trng); in ppc4xx_trng_probe() 85 dev->trng_base = of_iomap(trng, 0); in ppc4xx_trng_probe() 86 of_node_put(trng); in ppc4xx_trng_probe() 98 core_dev->trng = rng; in ppc4xx_trng_probe() 101 err = devm_hwrng_register(core_dev->device, core_dev->trng); in ppc4xx_trng_probe() 114 core_dev->trng = NULL; in ppc4xx_trng_probe() [all …]
|
/Linux-v5.10/Documentation/devicetree/bindings/rng/ |
D | atmel-trng.txt | 1 Atmel TRNG (True Random Number Generator) block 4 - compatible : Should be "atmel,at91sam9g45-trng" or "microchip,sam9x60-trng" 6 - interrupts : the interrupt number for the TRNG block 7 - clocks: should contain the TRNG clk source 11 trng@fffcc000 { 12 compatible = "atmel,at91sam9g45-trng";
|
D | arm-cctrng.yaml | 7 title: Arm TrustZone CryptoCell TRNG engine 13 Arm TrustZone CryptoCell TRNG (True Random Number Generator) engine. 18 - arm,cryptocell-713-trng 19 - arm,cryptocell-703-trng 29 Arm TrustZone CryptoCell TRNG engine has 4 ring oscillators. 48 compatible = "arm,cryptocell-713-trng";
|
D | xiphera,xip8001b-trng.yaml | 4 $id: http://devicetree.org/schemas/rng/xiphera,xip8001b-trng.yaml# 7 title: Xiphera XIP8001B-trng bindings 17 const: xiphera,xip8001b-trng 31 compatible = "xiphera,xip8001b-trng";
|
D | samsung,exynos5250-trng.txt | 5 - compatible : Should be "samsung,exynos5250-trng". 13 compatible = "samsung,exynos5250-trng";
|
D | ingenic,trng.yaml | 4 $id: http://devicetree.org/schemas/rng/ingenic,trng.yaml# 37 dtrng: trng@10072000 {
|
D | omap_rng.txt | 15 - clocks: the trng clock source. Only mandatory for the 33 trng: rng@f2760000 {
|
/Linux-v5.10/arch/arm/boot/dts/ |
D | exynos5.dtsi | 218 trng: rng@10830600 { label 219 compatible = "samsung,exynos5250-trng";
|
/Linux-v5.10/Documentation/devicetree/bindings/crypto/ |
D | samsung-sss.yaml | 25 -- True Random Number Generator (TRNG)
|
/Linux-v5.10/arch/s390/crypto/ |
D | prng.c | 397 * Trng available, so use it. The trng works in chunks of in prng_sha512_instantiate() 405 * No trng available, so use the generate_entropy() function. in prng_sha512_instantiate() 456 /* trng produces 256 bits entropy in 32 bytes */ in prng_sha512_reseed() 829 /* check if TRNG subfunction is available */ in prng_init()
|