239eca4d68055a3195253b2daf8de207f6d06f09
[platform/kernel/linux-starfive.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 && 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
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
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
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
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_TX4939
230         tristate "TX4939 Random Number Generator support"
231         depends on SOC_TX4939
232         default HW_RANDOM
233         help
234           This driver provides kernel-side support for the Random Number
235           Generator hardware found on TX4939 SoC.
236
237           To compile this driver as a module, choose M here: the
238           module will be called tx4939-rng.
239
240           If unsure, say Y.
241
242 config HW_RANDOM_MXC_RNGA
243         tristate "Freescale i.MX RNGA Random Number Generator"
244         depends on SOC_IMX31
245         default HW_RANDOM
246         help
247           This driver provides kernel-side support for the Random Number
248           Generator hardware found on Freescale i.MX processors.
249
250           To compile this driver as a module, choose M here: the
251           module will be called mxc-rnga.
252
253           If unsure, say Y.
254
255 config HW_RANDOM_IMX_RNGC
256         tristate "Freescale i.MX RNGC Random Number Generator"
257         depends on HAS_IOMEM && HAVE_CLK
258         depends on SOC_IMX25 || SOC_IMX6SL || SOC_IMX6SLL || SOC_IMX6UL || COMPILE_TEST
259         default HW_RANDOM
260         help
261           This driver provides kernel-side support for the Random Number
262           Generator Version C hardware found on some Freescale i.MX
263           processors. Version B is also supported by this driver.
264
265           To compile this driver as a module, choose M here: the
266           module will be called imx-rngc.
267
268           If unsure, say Y.
269
270 config HW_RANDOM_INGENIC_RNG
271         tristate "Ingenic Random Number Generator support"
272         depends on HW_RANDOM
273         depends on MACH_JZ4780 || MACH_X1000
274         default HW_RANDOM
275         help
276           This driver provides kernel-side support for the Random Number Generator
277           hardware found in ingenic JZ4780 and X1000 SoC. MIPS Creator CI20 uses
278           JZ4780 SoC, YSH & ATIL CU1000-Neo uses X1000 SoC.
279
280           To compile this driver as a module, choose M here: the
281           module will be called ingenic-rng.
282
283           If unsure, say Y.
284
285 config HW_RANDOM_INGENIC_TRNG
286         tristate "Ingenic True Random Number Generator support"
287         depends on HW_RANDOM
288         depends on MACH_X1830
289         default HW_RANDOM
290         help
291           This driver provides kernel-side support for the True Random Number Generator
292           hardware found in ingenic X1830 SoC. YSH & ATIL CU1830-Neo uses X1830 SoC.
293
294           To compile this driver as a module, choose M here: the
295           module will be called ingenic-trng.
296
297           If unsure, say Y.
298
299 config HW_RANDOM_NOMADIK
300         tristate "ST-Ericsson Nomadik Random Number Generator support"
301         depends on ARCH_NOMADIK
302         default HW_RANDOM
303         help
304           This driver provides kernel-side support for the Random Number
305           Generator hardware found on ST-Ericsson SoCs (8815 and 8500).
306
307           To compile this driver as a module, choose M here: the
308           module will be called nomadik-rng.
309
310           If unsure, say Y.
311
312 config HW_RANDOM_PSERIES
313         tristate "pSeries HW Random Number Generator support"
314         depends on PPC64 && IBMVIO
315         default HW_RANDOM
316         help
317           This driver provides kernel-side support for the Random Number
318           Generator hardware found on POWER7+ machines and above
319
320           To compile this driver as a module, choose M here: the
321           module will be called pseries-rng.
322
323           If unsure, say Y.
324
325 config HW_RANDOM_POWERNV
326         tristate "PowerNV Random Number Generator support"
327         depends on PPC_POWERNV
328         default HW_RANDOM
329         help
330           This is the driver for Random Number Generator hardware found
331           in POWER7+ and above machines for PowerNV platform.
332
333           To compile this driver as a module, choose M here: the
334           module will be called powernv-rng.
335
336           If unsure, say Y.
337
338 config HW_RANDOM_HISI
339         tristate "Hisilicon Random Number Generator support"
340         depends on HW_RANDOM && ARCH_HISI
341         default HW_RANDOM
342         help
343           This driver provides kernel-side support for the Random Number
344           Generator hardware found on Hisilicon Hip04 and Hip05 SoC.
345
346           To compile this driver as a module, choose M here: the
347           module will be called hisi-rng.
348
349           If unsure, say Y.
350
351 config HW_RANDOM_ST
352         tristate "ST Microelectronics HW Random Number Generator support"
353         depends on HW_RANDOM && ARCH_STI
354         help
355           This driver provides kernel-side support for the Random Number
356           Generator hardware found on STi series of SoCs.
357
358           To compile this driver as a module, choose M here: the
359           module will be called st-rng.
360
361 config HW_RANDOM_XGENE
362         tristate "APM X-Gene True Random Number Generator (TRNG) support"
363         depends on HW_RANDOM && ARCH_XGENE
364         default HW_RANDOM
365         help
366           This driver provides kernel-side support for the Random Number
367           Generator hardware found on APM X-Gene SoC.
368
369           To compile this driver as a module, choose M here: the
370           module will be called xgene_rng.
371
372           If unsure, say Y.
373
374 config HW_RANDOM_STM32
375         tristate "STMicroelectronics STM32 random number generator"
376         depends on HW_RANDOM && (ARCH_STM32 || COMPILE_TEST)
377         depends on HAS_IOMEM
378         default HW_RANDOM
379         help
380           This driver provides kernel-side support for the Random Number
381           Generator hardware found on STM32 microcontrollers.
382
383           To compile this driver as a module, choose M here: the
384           module will be called stm32-rng.
385
386           If unsure, say N.
387
388 config HW_RANDOM_PIC32
389         tristate "Microchip PIC32 Random Number Generator support"
390         depends on HW_RANDOM && MACH_PIC32
391         default y
392         help
393           This driver provides kernel-side support for the Random Number
394           Generator hardware found on a PIC32.
395
396           To compile this driver as a module, choose M here. the
397           module will be called pic32-rng.
398
399           If unsure, say Y.
400
401 config HW_RANDOM_MESON
402         tristate "Amlogic Meson Random Number Generator support"
403         depends on HW_RANDOM
404         depends on ARCH_MESON || COMPILE_TEST
405         default y
406         help
407           This driver provides kernel-side support for the Random Number
408           Generator hardware found on Amlogic Meson SoCs.
409
410           To compile this driver as a module, choose M here. the
411           module will be called meson-rng.
412
413           If unsure, say Y.
414
415 config HW_RANDOM_CAVIUM
416         tristate "Cavium ThunderX Random Number Generator support"
417         depends on HW_RANDOM && PCI && (ARM64 || (COMPILE_TEST && 64BIT))
418         default HW_RANDOM
419         help
420           This driver provides kernel-side support for the Random Number
421           Generator hardware found on Cavium SoCs.
422
423           To compile this driver as a module, choose M here: the
424           module will be called cavium_rng.
425
426           If unsure, say Y.
427
428 config HW_RANDOM_MTK
429         tristate "Mediatek Random Number Generator support"
430         depends on HW_RANDOM
431         depends on ARCH_MEDIATEK || COMPILE_TEST
432         default y
433         help
434           This driver provides kernel-side support for the Random Number
435           Generator hardware found on Mediatek SoCs.
436
437           To compile this driver as a module, choose M here. the
438           module will be called mtk-rng.
439
440           If unsure, say Y.
441
442 config HW_RANDOM_S390
443         tristate "S390 True Random Number Generator support"
444         depends on S390
445         default HW_RANDOM
446         help
447           This driver provides kernel-side support for the True
448           Random Number Generator available as CPACF extension
449           on modern s390 hardware platforms.
450
451           To compile this driver as a module, choose M here: the
452           module will be called s390-trng.
453
454           If unsure, say Y.
455
456 config HW_RANDOM_EXYNOS
457         tristate "Samsung Exynos True Random Number Generator support"
458         depends on ARCH_EXYNOS || COMPILE_TEST
459         default HW_RANDOM
460         help
461           This driver provides support for the True Random Number
462           Generator available in Exynos SoCs.
463
464           To compile this driver as a module, choose M here: the module
465           will be called exynos-trng.
466
467           If unsure, say Y.
468
469 config HW_RANDOM_OPTEE
470         tristate "OP-TEE based Random Number Generator support"
471         depends on OPTEE
472         default HW_RANDOM
473         help
474           This  driver provides support for OP-TEE based Random Number
475           Generator on ARM SoCs where hardware entropy sources are not
476           accessible to normal world (Linux).
477
478           To compile this driver as a module, choose M here: the module
479           will be called optee-rng.
480
481           If unsure, say Y.
482
483 config HW_RANDOM_NPCM
484         tristate "NPCM Random Number Generator support"
485         depends on ARCH_NPCM || COMPILE_TEST
486         default HW_RANDOM
487         help
488           This driver provides support for the Random Number
489           Generator hardware available in Nuvoton NPCM SoCs.
490
491           To compile this driver as a module, choose M here: the
492           module will be called npcm-rng.
493
494           If unsure, say Y.
495
496 config HW_RANDOM_KEYSTONE
497         depends on ARCH_KEYSTONE || COMPILE_TEST
498         depends on HAS_IOMEM && OF
499         default HW_RANDOM
500         tristate "TI Keystone NETCP SA Hardware random number generator"
501         help
502           This option enables Keystone's hardware random generator.
503
504 config HW_RANDOM_CCTRNG
505         tristate "Arm CryptoCell True Random Number Generator support"
506         depends on HAS_IOMEM && OF
507         help
508           Say 'Y' to enable the True Random Number Generator driver for the
509           Arm TrustZone CryptoCell family of processors.
510           Currently the CryptoCell 713 and 703 are supported.
511           The driver is supported only in SoC where Trusted Execution
512           Environment is not used.
513           Choose 'M' to compile this driver as a module. The module
514           will be called cctrng.
515           If unsure, say 'N'.
516
517 config HW_RANDOM_XIPHERA
518         tristate "Xiphera FPGA based True Random Number Generator support"
519         depends on HAS_IOMEM
520         help
521           This driver provides kernel-side support for Xiphera True Random
522           Number Generator Intellectual Property Core.
523
524           To compile this driver as a module, choose M here: the
525           module will be called xiphera-trng.
526
527 config HW_RANDOM_ARM_SMCCC_TRNG
528         tristate "Arm SMCCC TRNG firmware interface support"
529         depends on HAVE_ARM_SMCCC_DISCOVERY
530         default HW_RANDOM
531         help
532           Say 'Y' to enable the True Random Number Generator driver using
533           the Arm SMCCC TRNG firmware interface. This reads entropy from
534           higher exception levels (firmware, hypervisor). Uses SMCCC for
535           communicating with the firmware:
536           https://developer.arm.com/documentation/den0098/latest/
537
538           To compile this driver as a module, choose M here: the
539           module will be called arm_smccc_trng.
540
541 endif # HW_RANDOM
542
543 config UML_RANDOM
544         depends on UML
545         select HW_RANDOM
546         tristate "UML Random Number Generator support"
547         help
548           This option enables UML's "hardware" random number generator.  It
549           attaches itself to the host's /dev/random, supplying as much entropy
550           as the host has, rather than the small amount the UML gets from its
551           own drivers. It registers itself as a rng-core driver thus providing
552           a device which is usually called /dev/hwrng. This hardware random
553           number generator does feed into the kernel's random number generator
554           entropy pool.
555
556           If unsure, say Y.