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