0001 # SPDX-License-Identifier: GPL-2.0-only
0002 #
0003 # Hardware Random Number Generator (RNG) configuration
0004 #
0005
0006 menuconfig HW_RANDOM
0007 tristate "Hardware Random Number Generator Core support"
0008 default m
0009 help
0010 Hardware Random Number Generator Core infrastructure.
0011
0012 To compile this driver as a module, choose M here: the
0013 module will be called rng-core. This provides a device
0014 that's usually called /dev/hwrng, and which exposes one
0015 of possibly several hardware random number generators.
0016
0017 These hardware random number generators do feed into the
0018 kernel's random number generator entropy pool.
0019
0020 If unsure, say Y.
0021
0022 if HW_RANDOM
0023
0024 config HW_RANDOM_TIMERIOMEM
0025 tristate "Timer IOMEM HW Random Number Generator support"
0026 depends on HAS_IOMEM
0027 help
0028 This driver provides kernel-side support for a generic Random
0029 Number Generator used by reading a 'dumb' iomem address that
0030 is to be read no faster than, for example, once a second;
0031 the default FPGA bitstream on the TS-7800 has such functionality.
0032
0033 To compile this driver as a module, choose M here: the
0034 module will be called timeriomem-rng.
0035
0036 If unsure, say Y.
0037
0038 config HW_RANDOM_INTEL
0039 tristate "Intel HW Random Number Generator support"
0040 depends on (X86 || IA64) && PCI
0041 default HW_RANDOM
0042 help
0043 This driver provides kernel-side support for the Random Number
0044 Generator hardware found on Intel i8xx-based motherboards.
0045
0046 To compile this driver as a module, choose M here: the
0047 module will be called intel-rng.
0048
0049 If unsure, say Y.
0050
0051 config HW_RANDOM_AMD
0052 tristate "AMD HW Random Number Generator support"
0053 depends on (X86 || PPC_MAPLE) && PCI
0054 default HW_RANDOM
0055 help
0056 This driver provides kernel-side support for the Random Number
0057 Generator hardware found on AMD 76x-based motherboards.
0058
0059 To compile this driver as a module, choose M here: the
0060 module will be called amd-rng.
0061
0062 If unsure, say Y.
0063
0064 config HW_RANDOM_ATMEL
0065 tristate "Atmel Random Number Generator support"
0066 depends on (ARCH_AT91 || COMPILE_TEST) && HAVE_CLK && OF
0067 default HW_RANDOM
0068 help
0069 This driver provides kernel-side support for the Random Number
0070 Generator hardware found on Atmel AT91 devices.
0071
0072 To compile this driver as a module, choose M here: the
0073 module will be called atmel-rng.
0074
0075 If unsure, say Y.
0076
0077 config HW_RANDOM_BA431
0078 tristate "Silex Insight BA431 Random Number Generator support"
0079 depends on HAS_IOMEM
0080 help
0081 This driver provides kernel-side support for the Random Number
0082 Generator hardware based on Silex Insight BA431 IP.
0083
0084 To compile this driver as a module, choose M here: the
0085 module will be called ba431-rng.
0086
0087 config HW_RANDOM_BCM2835
0088 tristate "Broadcom BCM2835/BCM63xx Random Number Generator support"
0089 depends on ARCH_BCM2835 || ARCH_BCM_NSP || ARCH_BCM_5301X || \
0090 ARCH_BCMBCA || BCM63XX || BMIPS_GENERIC || COMPILE_TEST
0091 default HW_RANDOM
0092 help
0093 This driver provides kernel-side support for the Random Number
0094 Generator hardware found on the Broadcom BCM2835 and BCM63xx SoCs.
0095
0096 To compile this driver as a module, choose M here: the
0097 module will be called bcm2835-rng
0098
0099 If unsure, say Y.
0100
0101 config HW_RANDOM_IPROC_RNG200
0102 tristate "Broadcom iProc/STB RNG200 support"
0103 depends on ARCH_BCM_IPROC || ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
0104 default HW_RANDOM
0105 help
0106 This driver provides kernel-side support for the RNG200
0107 hardware found on the Broadcom iProc and STB SoCs.
0108
0109 To compile this driver as a module, choose M here: the
0110 module will be called iproc-rng200
0111
0112 If unsure, say Y.
0113
0114 config HW_RANDOM_GEODE
0115 tristate "AMD Geode HW Random Number Generator support"
0116 depends on X86_32 && PCI
0117 default HW_RANDOM
0118 help
0119 This driver provides kernel-side support for the Random Number
0120 Generator hardware found on the AMD Geode LX.
0121
0122 To compile this driver as a module, choose M here: the
0123 module will be called geode-rng.
0124
0125 If unsure, say Y.
0126
0127 config HW_RANDOM_N2RNG
0128 tristate "Niagara2 Random Number Generator support"
0129 depends on SPARC64
0130 default HW_RANDOM
0131 help
0132 This driver provides kernel-side support for the Random Number
0133 Generator hardware found on Niagara2 cpus.
0134
0135 To compile this driver as a module, choose M here: the
0136 module will be called n2-rng.
0137
0138 If unsure, say Y.
0139
0140 config HW_RANDOM_VIA
0141 tristate "VIA HW Random Number Generator support"
0142 depends on X86
0143 default HW_RANDOM
0144 help
0145 This driver provides kernel-side support for the Random Number
0146 Generator hardware found on VIA based motherboards.
0147
0148 To compile this driver as a module, choose M here: the
0149 module will be called via-rng.
0150
0151 If unsure, say Y.
0152
0153 config HW_RANDOM_IXP4XX
0154 tristate "Intel IXP4xx NPU HW Pseudo-Random Number Generator support"
0155 depends on ARCH_IXP4XX || COMPILE_TEST
0156 default HW_RANDOM
0157 help
0158 This driver provides kernel-side support for the Pseudo-Random
0159 Number Generator hardware found on the Intel IXP45x/46x NPU.
0160
0161 To compile this driver as a module, choose M here: the
0162 module will be called ixp4xx-rng.
0163
0164 If unsure, say Y.
0165
0166 config HW_RANDOM_OMAP
0167 tristate "OMAP Random Number Generator support"
0168 depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS || ARCH_MVEBU || ARCH_K3 || COMPILE_TEST
0169 default HW_RANDOM
0170 help
0171 This driver provides kernel-side support for the Random Number
0172 Generator hardware found on OMAP16xx, OMAP2/3/4/5, AM33xx/AM43xx
0173 multimedia processors, and Marvell Armada 7k/8k SoCs.
0174
0175 To compile this driver as a module, choose M here: the
0176 module will be called omap-rng.
0177
0178 If unsure, say Y.
0179
0180 config HW_RANDOM_OMAP3_ROM
0181 tristate "OMAP3 ROM Random Number Generator support"
0182 depends on ARCH_OMAP3 || COMPILE_TEST
0183 default HW_RANDOM
0184 help
0185 This driver provides kernel-side support for the Random Number
0186 Generator hardware found on OMAP34xx processors.
0187
0188 To compile this driver as a module, choose M here: the
0189 module will be called omap3-rom-rng.
0190
0191 If unsure, say Y.
0192
0193 config HW_RANDOM_OCTEON
0194 tristate "Octeon Random Number Generator support"
0195 depends on CAVIUM_OCTEON_SOC
0196 default HW_RANDOM
0197 help
0198 This driver provides kernel-side support for the Random Number
0199 Generator hardware found on Octeon processors.
0200
0201 To compile this driver as a module, choose M here: the
0202 module will be called octeon-rng.
0203
0204 If unsure, say Y.
0205
0206 config HW_RANDOM_PASEMI
0207 tristate "PA Semi HW Random Number Generator support"
0208 depends on PPC_PASEMI
0209 default HW_RANDOM
0210 help
0211 This driver provides kernel-side support for the Random Number
0212 Generator hardware found on PA Semi PWRficient SoCs.
0213
0214 To compile this driver as a module, choose M here: the
0215 module will be called pasemi-rng.
0216
0217 If unsure, say Y.
0218
0219 config HW_RANDOM_VIRTIO
0220 tristate "VirtIO Random Number Generator support"
0221 depends on VIRTIO
0222 help
0223 This driver provides kernel-side support for the virtual Random Number
0224 Generator hardware.
0225
0226 To compile this driver as a module, choose M here: the
0227 module will be called virtio-rng. If unsure, say N.
0228
0229 config HW_RANDOM_MXC_RNGA
0230 tristate "Freescale i.MX RNGA Random Number Generator"
0231 depends on SOC_IMX31
0232 default HW_RANDOM
0233 help
0234 This driver provides kernel-side support for the Random Number
0235 Generator hardware found on Freescale i.MX processors.
0236
0237 To compile this driver as a module, choose M here: the
0238 module will be called mxc-rnga.
0239
0240 If unsure, say Y.
0241
0242 config HW_RANDOM_IMX_RNGC
0243 tristate "Freescale i.MX RNGC Random Number Generator"
0244 depends on HAS_IOMEM && HAVE_CLK
0245 depends on SOC_IMX25 || SOC_IMX6SL || SOC_IMX6SLL || SOC_IMX6UL || COMPILE_TEST
0246 default HW_RANDOM
0247 help
0248 This driver provides kernel-side support for the Random Number
0249 Generator Version C hardware found on some Freescale i.MX
0250 processors. Version B is also supported by this driver.
0251
0252 To compile this driver as a module, choose M here: the
0253 module will be called imx-rngc.
0254
0255 If unsure, say Y.
0256
0257 config HW_RANDOM_INGENIC_RNG
0258 tristate "Ingenic Random Number Generator support"
0259 depends on HW_RANDOM
0260 depends on MACH_JZ4780 || MACH_X1000
0261 default HW_RANDOM
0262 help
0263 This driver provides kernel-side support for the Random Number Generator
0264 hardware found in ingenic JZ4780 and X1000 SoC. MIPS Creator CI20 uses
0265 JZ4780 SoC, YSH & ATIL CU1000-Neo uses X1000 SoC.
0266
0267 To compile this driver as a module, choose M here: the
0268 module will be called ingenic-rng.
0269
0270 If unsure, say Y.
0271
0272 config HW_RANDOM_INGENIC_TRNG
0273 tristate "Ingenic True Random Number Generator support"
0274 depends on HW_RANDOM
0275 depends on MACH_X1830
0276 default HW_RANDOM
0277 help
0278 This driver provides kernel-side support for the True Random Number Generator
0279 hardware found in ingenic X1830 SoC. YSH & ATIL CU1830-Neo uses X1830 SoC.
0280
0281 To compile this driver as a module, choose M here: the
0282 module will be called ingenic-trng.
0283
0284 If unsure, say Y.
0285
0286 config HW_RANDOM_NOMADIK
0287 tristate "ST-Ericsson Nomadik Random Number Generator support"
0288 depends on ARCH_NOMADIK || COMPILE_TEST
0289 default HW_RANDOM
0290 help
0291 This driver provides kernel-side support for the Random Number
0292 Generator hardware found on ST-Ericsson SoCs (8815 and 8500).
0293
0294 To compile this driver as a module, choose M here: the
0295 module will be called nomadik-rng.
0296
0297 If unsure, say Y.
0298
0299 config HW_RANDOM_PSERIES
0300 tristate "pSeries HW Random Number Generator support"
0301 depends on PPC64 && IBMVIO
0302 default HW_RANDOM
0303 help
0304 This driver provides kernel-side support for the Random Number
0305 Generator hardware found on POWER7+ machines and above
0306
0307 To compile this driver as a module, choose M here: the
0308 module will be called pseries-rng.
0309
0310 If unsure, say Y.
0311
0312 config HW_RANDOM_POWERNV
0313 tristate "PowerNV Random Number Generator support"
0314 depends on PPC_POWERNV
0315 default HW_RANDOM
0316 help
0317 This is the driver for Random Number Generator hardware found
0318 in POWER7+ and above machines for PowerNV platform.
0319
0320 To compile this driver as a module, choose M here: the
0321 module will be called powernv-rng.
0322
0323 If unsure, say Y.
0324
0325 config HW_RANDOM_HISI
0326 tristate "Hisilicon Random Number Generator support"
0327 depends on HW_RANDOM && ARCH_HISI
0328 default HW_RANDOM
0329 help
0330 This driver provides kernel-side support for the Random Number
0331 Generator hardware found on Hisilicon Hip04 and Hip05 SoC.
0332
0333 To compile this driver as a module, choose M here: the
0334 module will be called hisi-rng.
0335
0336 If unsure, say Y.
0337
0338 config HW_RANDOM_ST
0339 tristate "ST Microelectronics HW Random Number Generator support"
0340 depends on HW_RANDOM && ARCH_STI
0341 help
0342 This driver provides kernel-side support for the Random Number
0343 Generator hardware found on STi series of SoCs.
0344
0345 To compile this driver as a module, choose M here: the
0346 module will be called st-rng.
0347
0348 config HW_RANDOM_XGENE
0349 tristate "APM X-Gene True Random Number Generator (TRNG) support"
0350 depends on HW_RANDOM && ARCH_XGENE
0351 default HW_RANDOM
0352 help
0353 This driver provides kernel-side support for the Random Number
0354 Generator hardware found on APM X-Gene SoC.
0355
0356 To compile this driver as a module, choose M here: the
0357 module will be called xgene_rng.
0358
0359 If unsure, say Y.
0360
0361 config HW_RANDOM_STM32
0362 tristate "STMicroelectronics STM32 random number generator"
0363 depends on HW_RANDOM && (ARCH_STM32 || COMPILE_TEST)
0364 depends on HAS_IOMEM
0365 default HW_RANDOM
0366 help
0367 This driver provides kernel-side support for the Random Number
0368 Generator hardware found on STM32 microcontrollers.
0369
0370 To compile this driver as a module, choose M here: the
0371 module will be called stm32-rng.
0372
0373 If unsure, say N.
0374
0375 config HW_RANDOM_PIC32
0376 tristate "Microchip PIC32 Random Number Generator support"
0377 depends on HW_RANDOM && MACH_PIC32
0378 default y
0379 help
0380 This driver provides kernel-side support for the Random Number
0381 Generator hardware found on a PIC32.
0382
0383 To compile this driver as a module, choose M here. the
0384 module will be called pic32-rng.
0385
0386 If unsure, say Y.
0387
0388 config HW_RANDOM_POLARFIRE_SOC
0389 tristate "Microchip PolarFire SoC Random Number Generator support"
0390 depends on HW_RANDOM && POLARFIRE_SOC_SYS_CTRL
0391 help
0392 This driver provides kernel-side support for the Random Number
0393 Generator hardware found on PolarFire SoC (MPFS).
0394
0395 To compile this driver as a module, choose M here. The
0396 module will be called mfps_rng.
0397
0398 If unsure, say N.
0399
0400
0401 config HW_RANDOM_MESON
0402 tristate "Amlogic Meson Random Number Generator support"
0403 depends on HW_RANDOM
0404 depends on ARCH_MESON || COMPILE_TEST
0405 default y
0406 help
0407 This driver provides kernel-side support for the Random Number
0408 Generator hardware found on Amlogic Meson SoCs.
0409
0410 To compile this driver as a module, choose M here. the
0411 module will be called meson-rng.
0412
0413 If unsure, say Y.
0414
0415 config HW_RANDOM_CAVIUM
0416 tristate "Cavium ThunderX Random Number Generator support"
0417 depends on HW_RANDOM && PCI && ARCH_THUNDER
0418 default HW_RANDOM
0419 help
0420 This driver provides kernel-side support for the Random Number
0421 Generator hardware found on Cavium SoCs.
0422
0423 To compile this driver as a module, choose M here: the
0424 module will be called cavium_rng.
0425
0426 If unsure, say Y.
0427
0428 config HW_RANDOM_MTK
0429 tristate "Mediatek Random Number Generator support"
0430 depends on HW_RANDOM
0431 depends on ARCH_MEDIATEK || COMPILE_TEST
0432 default y
0433 help
0434 This driver provides kernel-side support for the Random Number
0435 Generator hardware found on Mediatek SoCs.
0436
0437 To compile this driver as a module, choose M here. the
0438 module will be called mtk-rng.
0439
0440 If unsure, say Y.
0441
0442 config HW_RANDOM_S390
0443 tristate "S390 True Random Number Generator support"
0444 depends on S390
0445 default HW_RANDOM
0446 help
0447 This driver provides kernel-side support for the True
0448 Random Number Generator available as CPACF extension
0449 on modern s390 hardware platforms.
0450
0451 To compile this driver as a module, choose M here: the
0452 module will be called s390-trng.
0453
0454 If unsure, say Y.
0455
0456 config HW_RANDOM_EXYNOS
0457 tristate "Samsung Exynos True Random Number Generator support"
0458 depends on ARCH_EXYNOS || COMPILE_TEST
0459 default HW_RANDOM
0460 help
0461 This driver provides support for the True Random Number
0462 Generator available in Exynos SoCs.
0463
0464 To compile this driver as a module, choose M here: the module
0465 will be called exynos-trng.
0466
0467 If unsure, say Y.
0468
0469 config HW_RANDOM_OPTEE
0470 tristate "OP-TEE based Random Number Generator support"
0471 depends on OPTEE
0472 default HW_RANDOM
0473 help
0474 This driver provides support for OP-TEE based Random Number
0475 Generator on ARM SoCs where hardware entropy sources are not
0476 accessible to normal world (Linux).
0477
0478 To compile this driver as a module, choose M here: the module
0479 will be called optee-rng.
0480
0481 If unsure, say Y.
0482
0483 config HW_RANDOM_NPCM
0484 tristate "NPCM Random Number Generator support"
0485 depends on ARCH_NPCM || COMPILE_TEST
0486 default HW_RANDOM
0487 help
0488 This driver provides support for the Random Number
0489 Generator hardware available in Nuvoton NPCM SoCs.
0490
0491 To compile this driver as a module, choose M here: the
0492 module will be called npcm-rng.
0493
0494 If unsure, say Y.
0495
0496 config HW_RANDOM_KEYSTONE
0497 depends on ARCH_KEYSTONE || COMPILE_TEST
0498 depends on HAS_IOMEM && OF
0499 default HW_RANDOM
0500 tristate "TI Keystone NETCP SA Hardware random number generator"
0501 help
0502 This option enables Keystone's hardware random generator.
0503
0504 config HW_RANDOM_CCTRNG
0505 tristate "Arm CryptoCell True Random Number Generator support"
0506 depends on HAS_IOMEM && OF
0507 help
0508 Say 'Y' to enable the True Random Number Generator driver for the
0509 Arm TrustZone CryptoCell family of processors.
0510 Currently the CryptoCell 713 and 703 are supported.
0511 The driver is supported only in SoC where Trusted Execution
0512 Environment is not used.
0513 Choose 'M' to compile this driver as a module. The module
0514 will be called cctrng.
0515 If unsure, say 'N'.
0516
0517 config HW_RANDOM_XIPHERA
0518 tristate "Xiphera FPGA based True Random Number Generator support"
0519 depends on HAS_IOMEM
0520 help
0521 This driver provides kernel-side support for Xiphera True Random
0522 Number Generator Intellectual Property Core.
0523
0524 To compile this driver as a module, choose M here: the
0525 module will be called xiphera-trng.
0526
0527 config HW_RANDOM_ARM_SMCCC_TRNG
0528 tristate "Arm SMCCC TRNG firmware interface support"
0529 depends on HAVE_ARM_SMCCC_DISCOVERY
0530 default HW_RANDOM
0531 help
0532 Say 'Y' to enable the True Random Number Generator driver using
0533 the Arm SMCCC TRNG firmware interface. This reads entropy from
0534 higher exception levels (firmware, hypervisor). Uses SMCCC for
0535 communicating with the firmware:
0536 https://developer.arm.com/documentation/den0098/latest/
0537
0538 To compile this driver as a module, choose M here: the
0539 module will be called arm_smccc_trng.
0540
0541 config HW_RANDOM_CN10K
0542 tristate "Marvell CN10K Random Number Generator support"
0543 depends on HW_RANDOM && PCI && (ARM64 || (64BIT && COMPILE_TEST))
0544 default HW_RANDOM
0545 help
0546 This driver provides support for the True Random Number
0547 generator available in Marvell CN10K SoCs.
0548
0549 To compile this driver as a module, choose M here.
0550 The module will be called cn10k_rng. If unsure, say Y.
0551
0552 endif # HW_RANDOM
0553
0554 config UML_RANDOM
0555 depends on UML
0556 select HW_RANDOM
0557 tristate "UML Random Number Generator support"
0558 help
0559 This option enables UML's "hardware" random number generator. It
0560 attaches itself to the host's /dev/random, supplying as much entropy
0561 as the host has, rather than the small amount the UML gets from its
0562 own drivers. It registers itself as a rng-core driver thus providing
0563 a device which is usually called /dev/hwrng. This hardware random
0564 number generator does feed into the kernel's random number generator
0565 entropy pool.
0566
0567 If unsure, say Y.