1 # SPDX-License-Identifier: GPL-2.0-only
3 # Hardware Random Number Generator (RNG) configuration
7 tristate "Hardware Random Number Generator Core support"
10 Hardware Random Number Generator Core infrastructure.
12 To compile this driver as a module, choose M here: the
13 module will be called rng-core. This provides a device
14 that's usually called /dev/hwrng, and which exposes one
15 of possibly several hardware random number generators.
17 These hardware random number generators do feed into the
18 kernel's random number generator entropy pool.
24 config HW_RANDOM_TIMERIOMEM
25 tristate "Timer IOMEM HW Random Number Generator support"
28 This driver provides kernel-side support for a generic Random
29 Number Generator used by reading a 'dumb' iomem address that
30 is to be read no faster than, for example, once a second;
31 the default FPGA bitstream on the TS-7800 has such functionality.
33 To compile this driver as a module, choose M here: the
34 module will be called timeriomem-rng.
38 config HW_RANDOM_INTEL
39 tristate "Intel HW Random Number Generator support"
40 depends on (X86 || COMPILE_TEST) && PCI
43 This driver provides kernel-side support for the Random Number
44 Generator hardware found on Intel i8xx-based motherboards.
46 To compile this driver as a module, choose M here: the
47 module will be called intel-rng.
52 tristate "AMD HW Random Number Generator support"
53 depends on (X86 || COMPILE_TEST)
54 depends on PCI && HAS_IOPORT_MAP
57 This driver provides kernel-side support for the Random Number
58 Generator hardware found on AMD 76x-based motherboards.
60 To compile this driver as a module, choose M here: the
61 module will be called amd-rng.
65 config HW_RANDOM_AIROHA
66 tristate "Airoha True HW Random Number Generator support"
67 depends on ARCH_AIROHA || COMPILE_TEST
70 This driver provides kernel-side support for the True Random Number
71 Generator hardware found on Airoha SoC.
73 To compile this driver as a module, choose M here: the
74 module will be called airoha-rng.
78 config HW_RANDOM_ATMEL
79 tristate "Atmel Random Number Generator support"
80 depends on (ARCH_AT91 || COMPILE_TEST)
83 This driver provides kernel-side support for the Random Number
84 Generator hardware found on Atmel AT91 devices.
86 To compile this driver as a module, choose M here: the
87 module will be called atmel-rng.
91 config HW_RANDOM_BA431
92 tristate "Silex Insight BA431 Random Number Generator support"
95 This driver provides kernel-side support for the Random Number
96 Generator hardware based on Silex Insight BA431 IP.
98 To compile this driver as a module, choose M here: the
99 module will be called ba431-rng.
101 config HW_RANDOM_BCM2835
102 tristate "Broadcom BCM2835/BCM63xx Random Number Generator support"
103 depends on ARCH_BCM2835 || ARCH_BCM_NSP || ARCH_BCM_5301X || \
104 ARCH_BCMBCA || BCM63XX || BMIPS_GENERIC || COMPILE_TEST
107 This driver provides kernel-side support for the Random Number
108 Generator hardware found on the Broadcom BCM2835 and BCM63xx SoCs.
110 To compile this driver as a module, choose M here: the
111 module will be called bcm2835-rng
115 config HW_RANDOM_BCM74110
116 tristate "Broadcom BCM74110 Random Number Generator support"
117 depends on ARCH_BRCMSTB || COMPILE_TEST
120 This driver provides kernel-side support for the Random Number
121 Generator hardware found on the Broadcom BCM74110 SoCs.
123 To compile this driver as a module, choose M here: the
124 module will be called bcm74110-rng
128 config HW_RANDOM_IPROC_RNG200
129 tristate "Broadcom iProc/STB RNG200 support"
130 depends on ARCH_BCM_IPROC || ARCH_BCM2835 || ARCH_BCMBCA || ARCH_BRCMSTB || COMPILE_TEST
133 This driver provides kernel-side support for the RNG200
134 hardware found on the Broadcom iProc and STB SoCs.
136 To compile this driver as a module, choose M here: the
137 module will be called iproc-rng200
141 config HW_RANDOM_GEODE
142 tristate "AMD Geode HW Random Number Generator support"
143 depends on (X86_32 || COMPILE_TEST)
147 This driver provides kernel-side support for the Random Number
148 Generator hardware found on the AMD Geode LX.
150 To compile this driver as a module, choose M here: the
151 module will be called geode-rng.
155 config HW_RANDOM_N2RNG
156 tristate "Niagara2 Random Number Generator support"
160 This driver provides kernel-side support for the Random Number
161 Generator hardware found on Niagara2 cpus.
163 To compile this driver as a module, choose M here: the
164 module will be called n2-rng.
169 tristate "VIA HW Random Number Generator support"
173 This driver provides kernel-side support for the Random Number
174 Generator hardware found on VIA based motherboards.
176 To compile this driver as a module, choose M here: the
177 module will be called via-rng.
181 config HW_RANDOM_IXP4XX
182 tristate "Intel IXP4xx NPU HW Pseudo-Random Number Generator support"
183 depends on ARCH_IXP4XX || COMPILE_TEST
186 This driver provides kernel-side support for the Pseudo-Random
187 Number Generator hardware found on the Intel IXP45x/46x NPU.
189 To compile this driver as a module, choose M here: the
190 module will be called ixp4xx-rng.
194 config HW_RANDOM_OMAP
195 tristate "OMAP Random Number Generator support"
196 depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS || ARCH_MVEBU || ARCH_K3 || COMPILE_TEST
199 This driver provides kernel-side support for the Random Number
200 Generator hardware found on OMAP16xx, OMAP2/3/4/5, AM33xx/AM43xx
201 multimedia processors, and Marvell Armada 7k/8k SoCs.
203 To compile this driver as a module, choose M here: the
204 module will be called omap-rng.
208 config HW_RANDOM_OMAP3_ROM
209 tristate "OMAP3 ROM Random Number Generator support"
210 depends on ARCH_OMAP3 || COMPILE_TEST
213 This driver provides kernel-side support for the Random Number
214 Generator hardware found on OMAP34xx processors.
216 To compile this driver as a module, choose M here: the
217 module will be called omap3-rom-rng.
221 config HW_RANDOM_OCTEON
222 tristate "Octeon Random Number Generator support"
223 depends on CAVIUM_OCTEON_SOC
226 This driver provides kernel-side support for the Random Number
227 Generator hardware found on Octeon processors.
229 To compile this driver as a module, choose M here: the
230 module will be called octeon-rng.
234 config HW_RANDOM_PASEMI
235 tristate "PA Semi HW Random Number Generator support"
236 depends on PPC_PASEMI || (PPC && COMPILE_TEST)
239 This driver provides kernel-side support for the Random Number
240 Generator hardware found on PA Semi PWRficient SoCs.
242 To compile this driver as a module, choose M here: the
243 module will be called pasemi-rng.
247 config HW_RANDOM_VIRTIO
248 tristate "VirtIO Random Number Generator support"
251 This driver provides kernel-side support for the virtual Random Number
254 To compile this driver as a module, choose M here: the
255 module will be called virtio-rng. If unsure, say N.
257 config HW_RANDOM_MXC_RNGA
258 tristate "Freescale i.MX RNGA Random Number Generator"
259 depends on SOC_IMX31 || COMPILE_TEST
262 This driver provides kernel-side support for the Random Number
263 Generator hardware found on Freescale i.MX processors.
265 To compile this driver as a module, choose M here: the
266 module will be called mxc-rnga.
270 config HW_RANDOM_IMX_RNGC
271 tristate "Freescale i.MX RNGC Random Number Generator"
273 depends on SOC_IMX25 || SOC_IMX6SL || SOC_IMX6SLL || SOC_IMX6UL || COMPILE_TEST
276 This driver provides kernel-side support for the Random Number
277 Generator Version C hardware found on some Freescale i.MX
278 processors. Version B is also supported by this driver.
280 To compile this driver as a module, choose M here: the
281 module will be called imx-rngc.
285 config HW_RANDOM_INGENIC_RNG
286 tristate "Ingenic Random Number Generator support"
287 depends on MACH_JZ4780 || MACH_X1000 || COMPILE_TEST
290 This driver provides kernel-side support for the Random Number Generator
291 hardware found in ingenic JZ4780 and X1000 SoC. MIPS Creator CI20 uses
292 JZ4780 SoC, YSH & ATIL CU1000-Neo uses X1000 SoC.
294 To compile this driver as a module, choose M here: the
295 module will be called ingenic-rng.
299 config HW_RANDOM_INGENIC_TRNG
300 tristate "Ingenic True Random Number Generator support"
301 depends on MACH_X1830 || COMPILE_TEST
304 This driver provides kernel-side support for the True Random Number Generator
305 hardware found in ingenic X1830 SoC. YSH & ATIL CU1830-Neo uses X1830 SoC.
307 To compile this driver as a module, choose M here: the
308 module will be called ingenic-trng.
312 config HW_RANDOM_NOMADIK
313 tristate "ST-Ericsson Nomadik Random Number Generator support"
314 depends on ARCH_NOMADIK || COMPILE_TEST
317 This driver provides kernel-side support for the Random Number
318 Generator hardware found on ST-Ericsson SoCs (8815 and 8500).
320 To compile this driver as a module, choose M here: the
321 module will be called nomadik-rng.
325 config HW_RANDOM_PSERIES
326 tristate "pSeries HW Random Number Generator support"
327 depends on PPC64 && IBMVIO
330 This driver provides kernel-side support for the Random Number
331 Generator hardware found on POWER7+ machines and above
333 To compile this driver as a module, choose M here: the
334 module will be called pseries-rng.
338 config HW_RANDOM_POWERNV
339 tristate "PowerNV Random Number Generator support"
340 depends on PPC_POWERNV
343 This is the driver for Random Number Generator hardware found
344 in POWER7+ and above machines for PowerNV platform.
346 To compile this driver as a module, choose M here: the
347 module will be called powernv-rng.
351 config HW_RANDOM_HISI
352 tristate "Hisilicon Random Number Generator support"
353 depends on ARCH_HISI || COMPILE_TEST
356 This driver provides kernel-side support for the Random Number
357 Generator hardware found on Hisilicon Hip04 and Hip05 SoC.
359 To compile this driver as a module, choose M here: the
360 module will be called hisi-rng.
364 config HW_RANDOM_HISTB
365 tristate "Hisilicon STB Random Number Generator support"
366 depends on ARCH_HISI || COMPILE_TEST
369 This driver provides kernel-side support for the Random Number
370 Generator hardware found on Hisilicon Hi37xx SoC.
372 To compile this driver as a module, choose M here: the
373 module will be called histb-rng.
376 tristate "ST Microelectronics HW Random Number Generator support"
377 depends on ARCH_STI || COMPILE_TEST
379 This driver provides kernel-side support for the Random Number
380 Generator hardware found on STi series of SoCs.
382 To compile this driver as a module, choose M here: the
383 module will be called st-rng.
385 config HW_RANDOM_XGENE
386 tristate "APM X-Gene True Random Number Generator (TRNG) support"
387 depends on ARCH_XGENE || COMPILE_TEST
390 This driver provides kernel-side support for the Random Number
391 Generator hardware found on APM X-Gene SoC.
393 To compile this driver as a module, choose M here: the
394 module will be called xgene_rng.
398 config HW_RANDOM_STM32
399 tristate "STMicroelectronics STM32 random number generator"
400 depends on ARCH_STM32 || COMPILE_TEST
404 This driver provides kernel-side support for the Random Number
405 Generator hardware found on STM32 microcontrollers.
407 To compile this driver as a module, choose M here: the
408 module will be called stm32-rng.
412 config HW_RANDOM_PIC32
413 tristate "Microchip PIC32 Random Number Generator support"
414 depends on MACH_PIC32 || COMPILE_TEST
415 default HW_RANDOM if MACH_PIC32
417 This driver provides kernel-side support for the Random Number
418 Generator hardware found on a PIC32.
420 To compile this driver as a module, choose M here. the
421 module will be called pic32-rng.
425 config HW_RANDOM_POLARFIRE_SOC
426 tristate "Microchip PolarFire SoC Random Number Generator support"
427 depends on HW_RANDOM && POLARFIRE_SOC_SYS_CTRL
429 This driver provides kernel-side support for the Random Number
430 Generator hardware found on PolarFire SoC (MPFS).
432 To compile this driver as a module, choose M here. The
433 module will be called mfps_rng.
438 config HW_RANDOM_MESON
439 tristate "Amlogic Meson Random Number Generator support"
440 depends on ARCH_MESON || COMPILE_TEST
441 depends on HAS_IOMEM && OF
442 default HW_RANDOM if ARCH_MESON
444 This driver provides kernel-side support for the Random Number
445 Generator hardware found on Amlogic Meson SoCs.
447 To compile this driver as a module, choose M here. the
448 module will be called meson-rng.
452 config HW_RANDOM_CAVIUM
453 tristate "Cavium ThunderX Random Number Generator support"
455 depends on ARCH_THUNDER || (ARM64 && COMPILE_TEST)
458 This driver provides kernel-side support for the Random Number
459 Generator hardware found on Cavium SoCs.
461 To compile this driver as a module, choose M here: the
462 module will be called cavium_rng.
467 tristate "Mediatek Random Number Generator support"
468 depends on ARCH_MEDIATEK || COMPILE_TEST
469 depends on HAS_IOMEM && OF
470 default HW_RANDOM if ARCH_MEDIATEK
472 This driver provides kernel-side support for the Random Number
473 Generator hardware found on Mediatek SoCs.
475 To compile this driver as a module, choose M here. the
476 module will be called mtk-rng.
480 config HW_RANDOM_S390
481 tristate "S390 True Random Number Generator support"
485 This driver provides kernel-side support for the True
486 Random Number Generator available as CPACF extension
487 on modern s390 hardware platforms.
489 To compile this driver as a module, choose M here: the
490 module will be called s390-trng.
494 config HW_RANDOM_EXYNOS
495 tristate "Samsung Exynos True Random Number Generator support"
496 depends on ARCH_EXYNOS || COMPILE_TEST
498 default HW_RANDOM if ARCH_EXYNOS
500 This driver provides support for the True Random Number
501 Generator available in Exynos SoCs.
503 To compile this driver as a module, choose M here: the module
504 will be called exynos-trng.
508 config HW_RANDOM_OPTEE
509 tristate "OP-TEE based Random Number Generator support"
513 This driver provides support for OP-TEE based Random Number
514 Generator on ARM SoCs where hardware entropy sources are not
515 accessible to normal world (Linux).
517 To compile this driver as a module, choose M here: the module
518 will be called optee-rng.
522 config HW_RANDOM_NPCM
523 tristate "NPCM Random Number Generator support"
524 depends on ARCH_NPCM || COMPILE_TEST
526 default HW_RANDOM if ARCH_NPCM
528 This driver provides support for the Random Number
529 Generator hardware available in Nuvoton NPCM SoCs.
531 To compile this driver as a module, choose M here: the
532 module will be called npcm-rng.
536 config HW_RANDOM_KEYSTONE
537 depends on ARCH_KEYSTONE || COMPILE_TEST
538 depends on HAS_IOMEM && OF
540 tristate "TI Keystone NETCP SA Hardware random number generator"
542 This option enables Keystone's hardware random generator.
544 config HW_RANDOM_CCTRNG
545 tristate "Arm CryptoCell True Random Number Generator support"
546 depends on HAS_IOMEM && OF
548 Say 'Y' to enable the True Random Number Generator driver for the
549 Arm TrustZone CryptoCell family of processors.
550 Currently the CryptoCell 713 and 703 are supported.
551 The driver is supported only in SoC where Trusted Execution
552 Environment is not used.
553 Choose 'M' to compile this driver as a module. The module
554 will be called cctrng.
557 config HW_RANDOM_XIPHERA
558 tristate "Xiphera FPGA based True Random Number Generator support"
561 This driver provides kernel-side support for Xiphera True Random
562 Number Generator Intellectual Property Core.
564 To compile this driver as a module, choose M here: the
565 module will be called xiphera-trng.
567 config HW_RANDOM_ARM_SMCCC_TRNG
568 tristate "Arm SMCCC TRNG firmware interface support"
569 depends on HAVE_ARM_SMCCC_DISCOVERY
572 Say 'Y' to enable the True Random Number Generator driver using
573 the Arm SMCCC TRNG firmware interface. This reads entropy from
574 higher exception levels (firmware, hypervisor). Uses SMCCC for
575 communicating with the firmware:
576 https://developer.arm.com/documentation/den0098/latest/
578 To compile this driver as a module, choose M here: the
579 module will be called arm_smccc_trng.
581 config HW_RANDOM_CN10K
582 tristate "Marvell CN10K Random Number Generator support"
583 depends on HW_RANDOM && PCI && (ARM64 || (64BIT && COMPILE_TEST))
584 default HW_RANDOM if ARCH_THUNDER
586 This driver provides support for the True Random Number
587 generator available in Marvell CN10K SoCs.
589 To compile this driver as a module, choose M here.
590 The module will be called cn10k_rng. If unsure, say Y.
592 config HW_RANDOM_JH7110
593 tristate "StarFive JH7110 Random Number Generator support"
594 depends on SOC_STARFIVE || COMPILE_TEST
596 This driver provides support for the True Random Number
597 Generator in StarFive JH7110 SoCs.
599 To compile this driver as a module, choose M here.
600 The module will be called jh7110-trng.
602 config HW_RANDOM_ROCKCHIP
603 tristate "Rockchip True Random Number Generator"
604 depends on HW_RANDOM && (ARCH_ROCKCHIP || COMPILE_TEST)
608 This driver provides kernel-side support for the True Random Number
609 Generator hardware found on some Rockchip SoC like RK3566 or RK3568.
611 To compile this driver as a module, choose M here: the
612 module will be called rockchip-rng.
621 tristate "UML Random Number Generator support"
623 This option enables UML's "hardware" random number generator. It
624 attaches itself to the host's /dev/random, supplying as much entropy
625 as the host has, rather than the small amount the UML gets from its
626 own drivers. It registers itself as a rng-core driver thus providing
627 a device which is usually called /dev/hwrng. This hardware random
628 number generator does feed into the kernel's random number generator