Home
last modified time | relevance | path

Searched refs:trng (Results 1 – 25 of 71) sorted by relevance

123

/linux/drivers/char/hw_random/
H A Djh7110-trng.c123 static inline int starfive_trng_wait_idle(struct starfive_trng *trng) in starfive_trng_wait_idle() argument
127 return readl_relaxed_poll_timeout(trng->base + STARFIVE_STAT, stat, in starfive_trng_wait_idle()
133 static inline void starfive_trng_irq_mask_clear(struct starfive_trng *trng) in starfive_trng_irq_mask_clear() argument
136 u32 data = readl(trng->base + STARFIVE_ISTAT); in starfive_trng_irq_mask_clear()
138 writel(data, trng->base + STARFIVE_ISTAT); in starfive_trng_irq_mask_clear()
141 static int starfive_trng_cmd(struct starfive_trng *trng, u32 cmd, bool wait) in starfive_trng_cmd() argument
151 reinit_completion(&trng->random_done); in starfive_trng_cmd()
152 spin_lock_irq(&trng->write_lock); in starfive_trng_cmd()
153 writel(cmd, trng->base + STARFIVE_CTRL); in starfive_trng_cmd()
154 spin_unlock_irq(&trng->write_lock); in starfive_trng_cmd()
[all …]
H A Dairoha-trng.c54 static int airoha_trng_irq_mask(struct airoha_trng *trng) in airoha_trng_irq_mask() argument
58 val = readl(trng->base + TRNG_INTR_EN); in airoha_trng_irq_mask()
60 writel(val, trng->base + TRNG_INTR_EN); in airoha_trng_irq_mask()
65 static int airoha_trng_irq_unmask(struct airoha_trng *trng) in airoha_trng_irq_unmask() argument
69 val = readl(trng->base + TRNG_INTR_EN); in airoha_trng_irq_unmask()
71 writel(val, trng->base + TRNG_INTR_EN); in airoha_trng_irq_unmask()
78 struct airoha_trng *trng = container_of(rng, struct airoha_trng, rng); in airoha_trng_init() local
82 val = readl(trng->base + TRNG_NS_SEK_AND_DAT_EN); in airoha_trng_init()
84 writel(val, trng->base + TRNG_NS_SEK_AND_DAT_EN); in airoha_trng_init()
87 airoha_trng_irq_unmask(trng); in airoha_trng_init()
[all …]
H A Datmel-rng.c44 static bool atmel_trng_wait_ready(struct atmel_trng *trng, bool wait) in atmel_trng_wait_ready() argument
48 ready = readl(trng->base + TRNG_ISR) & TRNG_ISR_DATRDY; in atmel_trng_wait_ready()
50 readl_poll_timeout(trng->base + TRNG_ISR, ready, in atmel_trng_wait_ready()
59 struct atmel_trng *trng = container_of(rng, struct atmel_trng, rng); in atmel_trng_read() local
63 ret = pm_runtime_get_sync(trng->dev); in atmel_trng_read()
65 pm_runtime_put_sync(trng->dev); in atmel_trng_read()
69 ret = atmel_trng_wait_ready(trng, wait); in atmel_trng_read()
73 *data = readl(trng->base + TRNG_ODATA); in atmel_trng_read()
79 readl(trng->base + TRNG_ISR); in atmel_trng_read()
83 pm_runtime_put_sync_autosuspend(trng->dev); in atmel_trng_read()
[all …]
H A Dexynos-trng.c85 struct exynos_trng_dev *trng = (struct exynos_trng_dev *)rng->priv; in exynos_trng_do_read_reg() local
89 writel_relaxed(max * 8, trng->mem + EXYNOS_TRNG_FIFO_CTRL); in exynos_trng_do_read_reg()
90 val = readl_poll_timeout(trng->mem + EXYNOS_TRNG_FIFO_CTRL, val, in exynos_trng_do_read_reg()
95 memcpy_fromio(data, trng->mem + EXYNOS_TRNG_FIFO_0, max); in exynos_trng_do_read_reg()
135 struct exynos_trng_dev *trng = (struct exynos_trng_dev *)rng->priv; in exynos_trng_init_reg() local
139 sss_rate = clk_get_rate(trng->clk); in exynos_trng_init_reg()
147 dev_err(trng->dev, "clock divider too large: %d\n", val); in exynos_trng_init_reg()
151 writel_relaxed(val, trng->mem + EXYNOS_TRNG_CLKDIV); in exynos_trng_init_reg()
155 writel_relaxed(val, trng->mem + EXYNOS_TRNG_CTRL); in exynos_trng_init_reg()
161 writel_relaxed(0, trng->mem + EXYNOS_TRNG_POST_CTRL); in exynos_trng_init_reg()
[all …]
H A Dxiphera-trng.c37 struct xiphera_trng *trng = container_of(rng, struct xiphera_trng, rng); in xiphera_trng_read() local
42 if (readl(trng->mem + STATUS_REG) == TRNG_NEW_RAND_AVAILABLE) { in xiphera_trng_read()
43 *(u32 *)buf = readl(trng->mem + RAND_REG); in xiphera_trng_read()
48 writel(HOST_TO_TRNG_READ, trng->mem + CONTROL_REG); in xiphera_trng_read()
49 writel(HOST_TO_TRNG_ENABLE, trng->mem + CONTROL_REG); in xiphera_trng_read()
63 struct xiphera_trng *trng; in xiphera_trng_probe() local
66 trng = devm_kzalloc(dev, sizeof(*trng), GFP_KERNEL); in xiphera_trng_probe()
67 if (!trng) in xiphera_trng_probe()
70 trng->mem = devm_platform_ioremap_resource(pdev, 0); in xiphera_trng_probe()
71 if (IS_ERR(trng->mem)) in xiphera_trng_probe()
[all …]
H A Dingenic-trng.c37 struct ingenic_trng *trng = container_of(rng, struct ingenic_trng, rng); in ingenic_trng_init() local
40 ctrl = readl(trng->base + TRNG_REG_CFG_OFFSET); in ingenic_trng_init()
42 writel(ctrl, trng->base + TRNG_REG_CFG_OFFSET); in ingenic_trng_init()
49 struct ingenic_trng *trng = container_of(rng, struct ingenic_trng, rng); in ingenic_trng_cleanup() local
52 ctrl = readl(trng->base + TRNG_REG_CFG_OFFSET); in ingenic_trng_cleanup()
54 writel(ctrl, trng->base + TRNG_REG_CFG_OFFSET); in ingenic_trng_cleanup()
59 struct ingenic_trng *trng = container_of(rng, struct ingenic_trng, rng); in ingenic_trng_read() local
64 ret = readl_poll_timeout(trng->base + TRNG_REG_STATUS_OFFSET, status, in ingenic_trng_read()
71 *data = readl(trng->base + TRNG_REG_RANDOMNUM_OFFSET); in ingenic_trng_read()
78 struct ingenic_trng *trng; in ingenic_trng_probe() local
[all …]
H A Darm_smccc_trng.c99 struct hwrng *trng; in smccc_trng_probe() local
101 trng = devm_kzalloc(&pdev->dev, sizeof(*trng), GFP_KERNEL); in smccc_trng_probe()
102 if (!trng) in smccc_trng_probe()
105 trng->name = "smccc_trng"; in smccc_trng_probe()
106 trng->read = smccc_trng_read; in smccc_trng_probe()
108 return devm_hwrng_register(&pdev->dev, trng); in smccc_trng_probe()
H A DMakefile11 obj-$(CONFIG_HW_RANDOM_AIROHA) += airoha-trng.o
18 obj-$(CONFIG_HW_RANDOM_EXYNOS) += exynos-trng.o
27 obj-$(CONFIG_HW_RANDOM_INGENIC_TRNG) += ingenic-trng.o
44 obj-$(CONFIG_HW_RANDOM_S390) += s390-trng.o
49 obj-$(CONFIG_HW_RANDOM_XIPHERA) += xiphera-trng.o
54 obj-$(CONFIG_HW_RANDOM_JH7110) += jh7110-trng.o
/linux/drivers/crypto/hisilicon/trng/
H A Dtrng.c64 struct hisi_trng *trng; member
71 static int hisi_trng_set_seed(struct hisi_trng *trng, const u8 *seed) in hisi_trng_set_seed() argument
76 writel(0x0, trng->base + SW_DRBG_BLOCKS); in hisi_trng_set_seed()
86 writel(val, trng->base + SW_DRBG_SEED(seed_reg)); in hisi_trng_set_seed()
90 trng->base + SW_DRBG_BLOCKS); in hisi_trng_set_seed()
91 writel(0x1, trng->base + SW_DRBG_INIT); in hisi_trng_set_seed()
92 ret = readl_relaxed_poll_timeout(trng->base + SW_DRBG_STATUS, in hisi_trng_set_seed()
99 trng->random_bytes = 0; in hisi_trng_set_seed()
108 struct hisi_trng *trng = ctx->trng; in hisi_trng_seed() local
117 mutex_lock(&trng->lock); in hisi_trng_seed()
[all …]
H A DMakefile1 obj-$(CONFIG_CRYPTO_DEV_HISI_TRNG) += hisi-trng-v2.o
2 hisi-trng-v2-objs = trng.o
/linux/drivers/crypto/amcc/
H A Dcrypto4xx_trng.c74 struct device_node *trng = NULL; in ppc4xx_trng_probe() local
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()
119 if (core_dev && core_dev->trng) { in ppc4xx_trng_remove()
[all …]
/linux/drivers/crypto/allwinner/sun8i-ce/
H A Dsun8i-ce-trng.c35 ce = container_of(rng, struct sun8i_ce_dev, trng); in sun8i_ce_trng_read()
68 common = ce->variant->trng | CE_COMM_INT; in sun8i_ce_trng_read()
104 if (ce->variant->trng == CE_ID_NOTSUPP) { in sun8i_ce_hwrng_register()
108 ce->trng.name = "sun8i Crypto Engine TRNG"; in sun8i_ce_hwrng_register()
109 ce->trng.read = sun8i_ce_trng_read; in sun8i_ce_hwrng_register()
111 ret = hwrng_register(&ce->trng); in sun8i_ce_hwrng_register()
119 if (ce->variant->trng == CE_ID_NOTSUPP) in sun8i_ce_hwrng_unregister()
121 hwrng_unregister(&ce->trng); in sun8i_ce_hwrng_unregister()
H A Dsun8i-ce-core.c53 .trng = CE_ID_NOTSUPP,
70 .trng = CE_ID_NOTSUPP,
92 .trng = CE_ALG_TRNG_V2,
116 .trng = CE_ALG_TRNG_V2,
133 .trng = CE_ID_NOTSUPP,
152 .trng = CE_ALG_TRNG,
169 .trng = CE_ID_NOTSUPP,
H A DMakefile5 sun8i-ce-$(CONFIG_CRYPTO_DEV_SUN8I_CE_TRNG) += sun8i-ce-trng.o
H A Dsun8i-ce.h160 unsigned char trng; member
236 struct hwrng trng; member
/linux/drivers/crypto/gemini/
H A Dsl3516-ce-rng.c20 ce = container_of(rng, struct sl3516_ce_dev, trng); in sl3516_ce_rng_read()
48 ce->trng.name = "SL3516 Crypto Engine RNG"; in sl3516_ce_rng_register()
49 ce->trng.read = sl3516_ce_rng_read; in sl3516_ce_rng_register()
50 ce->trng.quality = 700; in sl3516_ce_rng_register()
52 ret = hwrng_register(&ce->trng); in sl3516_ce_rng_register()
60 hwrng_unregister(&ce->trng); in sl3516_ce_rng_unregister()
/linux/drivers/crypto/xilinx/
H A Dxilinx-trng.c65 struct hwrng trng; member
296 rng = container_of(hwrng, struct xilinx_rng, trng); in xtrng_hwrng_trng_read()
316 static int xtrng_hwrng_register(struct hwrng *trng) in xtrng_hwrng_register() argument
320 trng->name = "Xilinx Versal Crypto Engine TRNG"; in xtrng_hwrng_register()
321 trng->read = xtrng_hwrng_trng_read; in xtrng_hwrng_register()
323 ret = hwrng_register(trng); in xtrng_hwrng_register()
330 static void xtrng_hwrng_unregister(struct hwrng *trng) in xtrng_hwrng_unregister() argument
332 hwrng_unregister(trng); in xtrng_hwrng_unregister()
378 ret = xtrng_hwrng_register(&rng->trng); in xtrng_probe()
400 xtrng_hwrng_unregister(&rng->trng); in xtrng_remove()
H A DMakefile2 obj-$(CONFIG_CRYPTO_DEV_XILINX_TRNG) += xilinx-trng.o
/linux/drivers/platform/cznic/
H A Dturris-omnia-mcu-trng.c34 struct omnia_mcu *mcu = container_of(rng, struct omnia_mcu, trng); in omnia_trng_read()
86 mcu->trng.name = "turris-omnia-mcu-trng"; in omnia_mcu_register_trng()
87 mcu->trng.read = omnia_trng_read; in omnia_mcu_register_trng()
89 err = devm_hwrng_register(dev, &mcu->trng); in omnia_mcu_register_trng()
H A DMakefile8 turris-omnia-mcu-$(CONFIG_TURRIS_OMNIA_MCU_TRNG) += turris-omnia-mcu-trng.o
H A Dturris-omnia-mcu.h100 struct hwrng trng; member
/linux/drivers/crypto/hisilicon/
H A DMakefile8 obj-$(CONFIG_CRYPTO_DEV_HISI_TRNG) += trng/
/linux/arch/arm/boot/dts/samsung/
H A Dexynos5.dtsi218 trng: rng@10830600 { label
219 compatible = "samsung,exynos5250-trng";
/linux/arch/arm64/kvm/
H A DMakefile20 arch_timer.o trng.o vmid.o emulate-nested.o nested.o at.o \
/linux/arch/arm64/boot/dts/mediatek/
H A Dmt7986a-acelink-ew-7886cax.dts155 &trng {

123