Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1# SPDX-License-Identifier: GPL-2.0-only
2#
3# Hardware Random Number Generator (RNG) configuration
4#
5
6menuconfig HW_RANDOM
7 tristate "Hardware Random Number Generator Core support"
8 default m
9 help
10 Hardware Random Number Generator Core infrastructure.
11
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.
16
17 These hardware random number generators do feed into the
18 kernel's random number generator entropy pool.
19
20 If unsure, say Y.
21
22if HW_RANDOM
23
24config HW_RANDOM_TIMERIOMEM
25 tristate "Timer IOMEM HW Random Number Generator support"
26 depends on HAS_IOMEM
27 help
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.
32
33 To compile this driver as a module, choose M here: the
34 module will be called timeriomem-rng.
35
36 If unsure, say Y.
37
38config HW_RANDOM_INTEL
39 tristate "Intel HW Random Number Generator support"
40 depends on (X86 || COMPILE_TEST) && PCI
41 default HW_RANDOM
42 help
43 This driver provides kernel-side support for the Random Number
44 Generator hardware found on Intel i8xx-based motherboards.
45
46 To compile this driver as a module, choose M here: the
47 module will be called intel-rng.
48
49 If unsure, say Y.
50
51config HW_RANDOM_AMD
52 tristate "AMD HW Random Number Generator support"
53 depends on (X86 || COMPILE_TEST)
54 depends on PCI && HAS_IOPORT_MAP
55 default HW_RANDOM
56 help
57 This driver provides kernel-side support for the Random Number
58 Generator hardware found on AMD 76x-based motherboards.
59
60 To compile this driver as a module, choose M here: the
61 module will be called amd-rng.
62
63 If unsure, say Y.
64
65config HW_RANDOM_AIROHA
66 tristate "Airoha True HW Random Number Generator support"
67 depends on ARCH_AIROHA || COMPILE_TEST
68 default HW_RANDOM
69 help
70 This driver provides kernel-side support for the True Random Number
71 Generator hardware found on Airoha SoC.
72
73 To compile this driver as a module, choose M here: the
74 module will be called airoha-rng.
75
76 If unsure, say Y.
77
78config HW_RANDOM_ATMEL
79 tristate "Atmel Random Number Generator support"
80 depends on (ARCH_MICROCHIP || COMPILE_TEST)
81 default HW_RANDOM
82 help
83 This driver provides kernel-side support for the Random Number
84 Generator hardware found on Atmel AT91 devices.
85
86 To compile this driver as a module, choose M here: the
87 module will be called atmel-rng.
88
89 If unsure, say Y.
90
91config HW_RANDOM_BA431
92 tristate "Silex Insight BA431 Random Number Generator support"
93 depends on HAS_IOMEM
94 help
95 This driver provides kernel-side support for the Random Number
96 Generator hardware based on Silex Insight BA431 IP.
97
98 To compile this driver as a module, choose M here: the
99 module will be called ba431-rng.
100
101config 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
105 default HW_RANDOM
106 help
107 This driver provides kernel-side support for the Random Number
108 Generator hardware found on the Broadcom BCM2835 and BCM63xx SoCs.
109
110 To compile this driver as a module, choose M here: the
111 module will be called bcm2835-rng
112
113 If unsure, say Y.
114
115config HW_RANDOM_BCM74110
116 tristate "Broadcom BCM74110 Random Number Generator support"
117 depends on ARCH_BRCMSTB || COMPILE_TEST
118 default HW_RANDOM
119 help
120 This driver provides kernel-side support for the Random Number
121 Generator hardware found on the Broadcom BCM74110 SoCs.
122
123 To compile this driver as a module, choose M here: the
124 module will be called bcm74110-rng
125
126 If unsure, say Y.
127
128config 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
131 default HW_RANDOM
132 help
133 This driver provides kernel-side support for the RNG200
134 hardware found on the Broadcom iProc and STB SoCs.
135
136 To compile this driver as a module, choose M here: the
137 module will be called iproc-rng200
138
139 If unsure, say Y.
140
141config HW_RANDOM_GEODE
142 tristate "AMD Geode HW Random Number Generator support"
143 depends on (X86_32 || COMPILE_TEST)
144 depends on PCI
145 default HW_RANDOM
146 help
147 This driver provides kernel-side support for the Random Number
148 Generator hardware found on the AMD Geode LX.
149
150 To compile this driver as a module, choose M here: the
151 module will be called geode-rng.
152
153 If unsure, say Y.
154
155config HW_RANDOM_N2RNG
156 tristate "Niagara2 Random Number Generator support"
157 depends on SPARC64
158 default HW_RANDOM
159 help
160 This driver provides kernel-side support for the Random Number
161 Generator hardware found on Niagara2 cpus.
162
163 To compile this driver as a module, choose M here: the
164 module will be called n2-rng.
165
166 If unsure, say Y.
167
168config HW_RANDOM_VIA
169 tristate "VIA HW Random Number Generator support"
170 depends on X86
171 default HW_RANDOM
172 help
173 This driver provides kernel-side support for the Random Number
174 Generator hardware found on VIA based motherboards.
175
176 To compile this driver as a module, choose M here: the
177 module will be called via-rng.
178
179 If unsure, say Y.
180
181config HW_RANDOM_IXP4XX
182 tristate "Intel IXP4xx NPU HW Pseudo-Random Number Generator support"
183 depends on ARCH_IXP4XX || COMPILE_TEST
184 default HW_RANDOM
185 help
186 This driver provides kernel-side support for the Pseudo-Random
187 Number Generator hardware found on the Intel IXP45x/46x NPU.
188
189 To compile this driver as a module, choose M here: the
190 module will be called ixp4xx-rng.
191
192 If unsure, say Y.
193
194config HW_RANDOM_OMAP
195 tristate "OMAP Random Number Generator support"
196 depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS || ARCH_MVEBU || ARCH_K3 || COMPILE_TEST
197 default HW_RANDOM
198 help
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.
202
203 To compile this driver as a module, choose M here: the
204 module will be called omap-rng.
205
206 If unsure, say Y.
207
208config HW_RANDOM_OMAP3_ROM
209 tristate "OMAP3 ROM Random Number Generator support"
210 depends on ARCH_OMAP3 || COMPILE_TEST
211 default HW_RANDOM
212 help
213 This driver provides kernel-side support for the Random Number
214 Generator hardware found on OMAP34xx processors.
215
216 To compile this driver as a module, choose M here: the
217 module will be called omap3-rom-rng.
218
219 If unsure, say Y.
220
221config HW_RANDOM_OCTEON
222 tristate "Octeon Random Number Generator support"
223 depends on CAVIUM_OCTEON_SOC
224 default HW_RANDOM
225 help
226 This driver provides kernel-side support for the Random Number
227 Generator hardware found on Octeon processors.
228
229 To compile this driver as a module, choose M here: the
230 module will be called octeon-rng.
231
232 If unsure, say Y.
233
234config HW_RANDOM_PASEMI
235 tristate "PA Semi HW Random Number Generator support"
236 depends on PPC_PASEMI || (PPC && COMPILE_TEST)
237 default HW_RANDOM
238 help
239 This driver provides kernel-side support for the Random Number
240 Generator hardware found on PA Semi PWRficient SoCs.
241
242 To compile this driver as a module, choose M here: the
243 module will be called pasemi-rng.
244
245 If unsure, say Y.
246
247config HW_RANDOM_VIRTIO
248 tristate "VirtIO Random Number Generator support"
249 depends on VIRTIO
250 help
251 This driver provides kernel-side support for the virtual Random Number
252 Generator hardware.
253
254 To compile this driver as a module, choose M here: the
255 module will be called virtio-rng. If unsure, say N.
256
257config HW_RANDOM_MXC_RNGA
258 tristate "Freescale i.MX RNGA Random Number Generator"
259 depends on SOC_IMX31 || COMPILE_TEST
260 default HW_RANDOM
261 help
262 This driver provides kernel-side support for the Random Number
263 Generator hardware found on Freescale i.MX processors.
264
265 To compile this driver as a module, choose M here: the
266 module will be called mxc-rnga.
267
268 If unsure, say Y.
269
270config HW_RANDOM_IMX_RNGC
271 tristate "Freescale i.MX RNGC Random Number Generator"
272 depends on HAS_IOMEM
273 depends on SOC_IMX25 || SOC_IMX6SL || SOC_IMX6SLL || SOC_IMX6UL || COMPILE_TEST
274 default HW_RANDOM
275 help
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.
279
280 To compile this driver as a module, choose M here: the
281 module will be called imx-rngc.
282
283 If unsure, say Y.
284
285config HW_RANDOM_INGENIC_RNG
286 tristate "Ingenic Random Number Generator support"
287 depends on MACH_JZ4780 || MACH_X1000 || COMPILE_TEST
288 default HW_RANDOM
289 help
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.
293
294 To compile this driver as a module, choose M here: the
295 module will be called ingenic-rng.
296
297 If unsure, say Y.
298
299config HW_RANDOM_INGENIC_TRNG
300 tristate "Ingenic True Random Number Generator support"
301 depends on MACH_X1830 || COMPILE_TEST
302 default HW_RANDOM
303 help
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.
306
307 To compile this driver as a module, choose M here: the
308 module will be called ingenic-trng.
309
310 If unsure, say Y.
311
312config HW_RANDOM_NOMADIK
313 tristate "ST-Ericsson Nomadik Random Number Generator support"
314 depends on ARCH_NOMADIK || COMPILE_TEST
315 depends on ARM_AMBA
316 default HW_RANDOM
317 help
318 This driver provides kernel-side support for the Random Number
319 Generator hardware found on ST-Ericsson SoCs (8815 and 8500).
320
321 To compile this driver as a module, choose M here: the
322 module will be called nomadik-rng.
323
324 If unsure, say Y.
325
326config HW_RANDOM_PSERIES
327 tristate "pSeries HW Random Number Generator support"
328 depends on PPC64 && IBMVIO
329 default HW_RANDOM
330 help
331 This driver provides kernel-side support for the Random Number
332 Generator hardware found on POWER7+ machines and above
333
334 To compile this driver as a module, choose M here: the
335 module will be called pseries-rng.
336
337 If unsure, say Y.
338
339config HW_RANDOM_POWERNV
340 tristate "PowerNV Random Number Generator support"
341 depends on PPC_POWERNV
342 default HW_RANDOM
343 help
344 This is the driver for Random Number Generator hardware found
345 in POWER7+ and above machines for PowerNV platform.
346
347 To compile this driver as a module, choose M here: the
348 module will be called powernv-rng.
349
350 If unsure, say Y.
351
352config HW_RANDOM_HISI
353 tristate "Hisilicon Random Number Generator support"
354 depends on ARCH_HISI || COMPILE_TEST
355 default HW_RANDOM
356 help
357 This driver provides kernel-side support for the Random Number
358 Generator hardware found on Hisilicon Hip04 and Hip05 SoC.
359
360 To compile this driver as a module, choose M here: the
361 module will be called hisi-rng.
362
363 If unsure, say Y.
364
365config HW_RANDOM_HISTB
366 tristate "Hisilicon STB Random Number Generator support"
367 depends on ARCH_HISI || COMPILE_TEST
368 default ARCH_HISI
369 help
370 This driver provides kernel-side support for the Random Number
371 Generator hardware found on Hisilicon Hi37xx SoC.
372
373 To compile this driver as a module, choose M here: the
374 module will be called histb-rng.
375
376config HW_RANDOM_ST
377 tristate "ST Microelectronics HW Random Number Generator support"
378 depends on ARCH_STI || COMPILE_TEST
379 help
380 This driver provides kernel-side support for the Random Number
381 Generator hardware found on STi series of SoCs.
382
383 To compile this driver as a module, choose M here: the
384 module will be called st-rng.
385
386config HW_RANDOM_XGENE
387 tristate "APM X-Gene True Random Number Generator (TRNG) support"
388 depends on ARCH_XGENE || COMPILE_TEST
389 default HW_RANDOM
390 help
391 This driver provides kernel-side support for the Random Number
392 Generator hardware found on APM X-Gene SoC.
393
394 To compile this driver as a module, choose M here: the
395 module will be called xgene_rng.
396
397 If unsure, say Y.
398
399config HW_RANDOM_STM32
400 tristate "STMicroelectronics STM32 random number generator"
401 depends on ARCH_STM32 || COMPILE_TEST
402 depends on HAS_IOMEM
403 default HW_RANDOM
404 help
405 This driver provides kernel-side support for the Random Number
406 Generator hardware found on STM32 microcontrollers.
407
408 To compile this driver as a module, choose M here: the
409 module will be called stm32-rng.
410
411 If unsure, say N.
412
413config HW_RANDOM_PIC32
414 tristate "Microchip PIC32 Random Number Generator support"
415 depends on MACH_PIC32 || COMPILE_TEST
416 default HW_RANDOM if MACH_PIC32
417 help
418 This driver provides kernel-side support for the Random Number
419 Generator hardware found on a PIC32.
420
421 To compile this driver as a module, choose M here. the
422 module will be called pic32-rng.
423
424 If unsure, say Y.
425
426config HW_RANDOM_POLARFIRE_SOC
427 tristate "Microchip PolarFire SoC Random Number Generator support"
428 depends on HW_RANDOM && POLARFIRE_SOC_SYS_CTRL
429 help
430 This driver provides kernel-side support for the Random Number
431 Generator hardware found on PolarFire SoC (MPFS).
432
433 To compile this driver as a module, choose M here. The
434 module will be called mfps_rng.
435
436 If unsure, say N.
437
438
439config HW_RANDOM_MESON
440 tristate "Amlogic Meson Random Number Generator support"
441 depends on ARCH_MESON || COMPILE_TEST
442 depends on HAS_IOMEM && OF
443 default HW_RANDOM if ARCH_MESON
444 help
445 This driver provides kernel-side support for the Random Number
446 Generator hardware found on Amlogic Meson SoCs.
447
448 To compile this driver as a module, choose M here. the
449 module will be called meson-rng.
450
451 If unsure, say Y.
452
453config HW_RANDOM_CAVIUM
454 tristate "Cavium ThunderX Random Number Generator support"
455 depends on PCI
456 depends on ARCH_THUNDER || (ARM64 && COMPILE_TEST)
457 default HW_RANDOM
458 help
459 This driver provides kernel-side support for the Random Number
460 Generator hardware found on Cavium SoCs.
461
462 To compile this driver as a module, choose M here: the
463 module will be called cavium_rng.
464
465 If unsure, say Y.
466
467config HW_RANDOM_MTK
468 tristate "Mediatek Random Number Generator support"
469 depends on ARCH_MEDIATEK || COMPILE_TEST
470 depends on HAS_IOMEM && OF
471 default HW_RANDOM if ARCH_MEDIATEK
472 help
473 This driver provides kernel-side support for the Random Number
474 Generator hardware found on Mediatek SoCs.
475
476 To compile this driver as a module, choose M here. the
477 module will be called mtk-rng.
478
479 If unsure, say Y.
480
481config HW_RANDOM_S390
482 tristate "S390 True Random Number Generator support"
483 depends on S390
484 default HW_RANDOM
485 help
486 This driver provides kernel-side support for the True
487 Random Number Generator available as CPACF extension
488 on modern s390 hardware platforms.
489
490 To compile this driver as a module, choose M here: the
491 module will be called s390-trng.
492
493 If unsure, say Y.
494
495config HW_RANDOM_EXYNOS
496 tristate "Samsung Exynos True Random Number Generator support"
497 depends on ARCH_EXYNOS || COMPILE_TEST
498 depends on HAS_IOMEM
499 default HW_RANDOM if ARCH_EXYNOS
500 help
501 This driver provides support for the True Random Number
502 Generator available in Exynos SoCs.
503
504 To compile this driver as a module, choose M here: the module
505 will be called exynos-trng.
506
507 If unsure, say Y.
508
509config HW_RANDOM_OPTEE
510 tristate "OP-TEE based Random Number Generator support"
511 depends on OPTEE
512 default HW_RANDOM
513 help
514 This driver provides support for OP-TEE based Random Number
515 Generator on ARM SoCs where hardware entropy sources are not
516 accessible to normal world (Linux).
517
518 To compile this driver as a module, choose M here: the module
519 will be called optee-rng.
520
521 If unsure, say Y.
522
523config HW_RANDOM_NPCM
524 tristate "NPCM Random Number Generator support"
525 depends on ARCH_NPCM || COMPILE_TEST
526 depends on HAS_IOMEM
527 default HW_RANDOM if ARCH_NPCM
528 help
529 This driver provides support for the Random Number
530 Generator hardware available in Nuvoton NPCM SoCs.
531
532 To compile this driver as a module, choose M here: the
533 module will be called npcm-rng.
534
535 If unsure, say Y.
536
537config HW_RANDOM_KEYSTONE
538 tristate "TI Keystone NETCP SA Hardware random number generator"
539 depends on ARCH_KEYSTONE || COMPILE_TEST
540 depends on HAS_IOMEM && OF
541 default HW_RANDOM
542 help
543 This option enables Keystone's hardware random generator.
544
545config HW_RANDOM_CCTRNG
546 tristate "Arm CryptoCell True Random Number Generator support"
547 depends on HAS_IOMEM && OF
548 help
549 Say 'Y' to enable the True Random Number Generator driver for the
550 Arm TrustZone CryptoCell family of processors.
551 Currently the CryptoCell 713 and 703 are supported.
552 The driver is supported only in SoC where Trusted Execution
553 Environment is not used.
554 Choose 'M' to compile this driver as a module. The module
555 will be called cctrng.
556 If unsure, say 'N'.
557
558config HW_RANDOM_XIPHERA
559 tristate "Xiphera FPGA based True Random Number Generator support"
560 depends on HAS_IOMEM
561 help
562 This driver provides kernel-side support for Xiphera True Random
563 Number Generator Intellectual Property Core.
564
565 To compile this driver as a module, choose M here: the
566 module will be called xiphera-trng.
567
568config HW_RANDOM_ARM_SMCCC_TRNG
569 tristate "Arm SMCCC TRNG firmware interface support"
570 depends on HAVE_ARM_SMCCC_DISCOVERY
571 default HW_RANDOM
572 help
573 Say 'Y' to enable the True Random Number Generator driver using
574 the Arm SMCCC TRNG firmware interface. This reads entropy from
575 higher exception levels (firmware, hypervisor). Uses SMCCC for
576 communicating with the firmware:
577 https://developer.arm.com/documentation/den0098/latest/
578
579 To compile this driver as a module, choose M here: the
580 module will be called arm_smccc_trng.
581
582config HW_RANDOM_CN10K
583 tristate "Marvell CN10K Random Number Generator support"
584 depends on HW_RANDOM && PCI && (ARM64 || (64BIT && COMPILE_TEST))
585 default HW_RANDOM if ARCH_THUNDER
586 help
587 This driver provides support for the True Random Number
588 generator available in Marvell CN10K SoCs.
589
590 To compile this driver as a module, choose M here.
591 The module will be called cn10k_rng. If unsure, say Y.
592
593config HW_RANDOM_JH7110
594 tristate "StarFive JH7110 Random Number Generator support"
595 depends on SOC_STARFIVE || COMPILE_TEST
596 help
597 This driver provides support for the True Random Number
598 Generator in StarFive JH7110 SoCs.
599
600 To compile this driver as a module, choose M here.
601 The module will be called jh7110-trng.
602
603config HW_RANDOM_ROCKCHIP
604 tristate "Rockchip True Random Number Generator"
605 depends on HW_RANDOM && (ARCH_ROCKCHIP || COMPILE_TEST)
606 depends on HAS_IOMEM
607 default HW_RANDOM
608 help
609 This driver provides kernel-side support for the True Random Number
610 Generator hardware found on some Rockchip SoCs like RK3566, RK3568
611 or RK3588.
612
613 To compile this driver as a module, choose M here: the
614 module will be called rockchip-rng.
615
616 If unsure, say Y.
617
618endif # HW_RANDOM
619
620config UML_RANDOM
621 depends on UML
622 select HW_RANDOM
623 tristate "UML Random Number Generator support"
624 help
625 This option enables UML's "hardware" random number generator. It
626 attaches itself to the host's /dev/random, supplying as much entropy
627 as the host has, rather than the small amount the UML gets from its
628 own drivers. It registers itself as a rng-core driver thus providing
629 a device which is usually called /dev/hwrng. This hardware random
630 number generator does feed into the kernel's random number generator
631 entropy pool.
632
633 If unsure, say Y.