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