Kconfig 19 KB

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