Kconfig 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. # SPDX-License-Identifier: GPL-2.0-only
  2. menuconfig NVMEM
  3. bool "NVMEM Support"
  4. imply NVMEM_LAYOUTS
  5. help
  6. Support for NVMEM(Non Volatile Memory) devices like EEPROM, EFUSES...
  7. This framework is designed to provide a generic interface to NVMEM
  8. from both the Linux Kernel and the userspace.
  9. If unsure, say no.
  10. if NVMEM
  11. config NVMEM_SYSFS
  12. bool "/sys/bus/nvmem/devices/*/nvmem (sysfs interface)"
  13. depends on SYSFS
  14. default y
  15. help
  16. Say Y here to add a sysfs interface for NVMEM.
  17. This interface is mostly used by userspace applications to
  18. read/write directly into nvmem.
  19. # Layouts
  20. source "drivers/nvmem/layouts/Kconfig"
  21. # Devices
  22. config NVMEM_AN8855_EFUSE
  23. tristate "Airoha AN8855 eFuse support"
  24. depends on COMPILE_TEST
  25. help
  26. Say y here to enable support for reading eFuses on Airoha AN8855
  27. Switch. These are e.g. used to store factory programmed
  28. calibration data required for the PHY.
  29. This driver can also be built as a module. If so, the module will
  30. be called nvmem-an8855-efuse.
  31. config NVMEM_APPLE_EFUSES
  32. tristate "Apple eFuse support"
  33. depends on ARCH_APPLE || COMPILE_TEST
  34. help
  35. Say y here to enable support for reading eFuses on Apple SoCs
  36. such as the M1. These are e.g. used to store factory programmed
  37. calibration data required for the PCIe or the USB-C PHY.
  38. This driver can also be built as a module. If so, the module will
  39. be called nvmem-apple-efuses.
  40. config NVMEM_APPLE_SPMI
  41. tristate "Apple SPMI NVMEM"
  42. depends on ARCH_APPLE || COMPILE_TEST
  43. depends on SPMI
  44. select REGMAP_SPMI
  45. help
  46. Say y here to build a driver to expose NVMEM cells for a set of power
  47. and RTC-related settings on a SPMI-attached PMIC present on Apple
  48. devices, such as Apple Silicon Macs.
  49. This driver can also be built as a module. If so, the module
  50. will be called apple-nvmem-spmi.
  51. config NVMEM_BCM_OCOTP
  52. tristate "Broadcom On-Chip OTP Controller support"
  53. depends on ARCH_BCM_IPROC || COMPILE_TEST
  54. depends on HAS_IOMEM
  55. default ARCH_BCM_IPROC
  56. help
  57. Say y here to enable read/write access to the Broadcom OTP
  58. controller.
  59. This driver can also be built as a module. If so, the module
  60. will be called nvmem-bcm-ocotp.
  61. config NVMEM_BRCM_NVRAM
  62. tristate "Broadcom's NVRAM support"
  63. depends on ARCH_BCM_5301X || COMPILE_TEST
  64. depends on HAS_IOMEM
  65. select GENERIC_NET_UTILS
  66. help
  67. This driver provides support for Broadcom's NVRAM that can be accessed
  68. using I/O mapping.
  69. config NVMEM_IMX_IIM
  70. tristate "i.MX IC Identification Module support"
  71. depends on ARCH_MXC || COMPILE_TEST
  72. help
  73. This is a driver for the IC Identification Module (IIM) available on
  74. i.MX SoCs, providing access to 4 Kbits of programmable
  75. eFuses.
  76. This driver can also be built as a module. If so, the module
  77. will be called nvmem-imx-iim.
  78. config NVMEM_IMX_OCOTP
  79. tristate "i.MX 6/7/8 On-Chip OTP Controller support"
  80. depends on ARCH_MXC || COMPILE_TEST
  81. depends on HAS_IOMEM
  82. help
  83. This is a driver for the On-Chip OTP Controller (OCOTP) available on
  84. i.MX6 SoCs, providing access to 4 Kbits of one-time programmable
  85. eFuses.
  86. This driver can also be built as a module. If so, the module
  87. will be called nvmem-imx-ocotp.
  88. config NVMEM_IMX_OCOTP_ELE
  89. tristate "i.MX On-Chip OTP Controller support"
  90. depends on ARCH_MXC || COMPILE_TEST
  91. depends on HAS_IOMEM
  92. depends on OF
  93. help
  94. This is a driver for the On-Chip OTP Controller (OCOTP)
  95. available on i.MX SoCs which has ELE.
  96. config NVMEM_IMX_OCOTP_SCU
  97. tristate "i.MX8 SCU On-Chip OTP Controller support"
  98. depends on IMX_SCU
  99. depends on HAVE_ARM_SMCCC
  100. help
  101. This is a driver for the SCU On-Chip OTP Controller (OCOTP)
  102. available on i.MX8 SoCs.
  103. config NVMEM_JZ4780_EFUSE
  104. tristate "JZ4780 EFUSE Memory Support"
  105. depends on MACH_INGENIC || COMPILE_TEST
  106. depends on HAS_IOMEM
  107. depends on OF
  108. select REGMAP_MMIO
  109. help
  110. Say Y here to include support for JZ4780 efuse memory found on
  111. all JZ4780 SoC based devices.
  112. To compile this driver as a module, choose M here: the module
  113. will be called nvmem_jz4780_efuse.
  114. config NVMEM_LAN9662_OTPC
  115. tristate "Microchip LAN9662 OTP controller support"
  116. depends on SOC_LAN966 || COMPILE_TEST
  117. depends on HAS_IOMEM
  118. help
  119. This driver enables the OTP controller available on Microchip LAN9662
  120. SoCs. It controls the access to the OTP memory connected to it.
  121. config NVMEM_LAYERSCAPE_SFP
  122. tristate "Layerscape SFP (Security Fuse Processor) support"
  123. depends on ARCH_LAYERSCAPE || COMPILE_TEST
  124. depends on HAS_IOMEM
  125. select REGMAP_MMIO
  126. help
  127. This driver provides support to read the eFuses on Freescale
  128. Layerscape SoC's. For example, the vendor provides a per part
  129. unique ID there.
  130. This driver can also be built as a module. If so, the module
  131. will be called layerscape-sfp.
  132. config NVMEM_LPC18XX_EEPROM
  133. tristate "NXP LPC18XX EEPROM Memory Support"
  134. depends on ARCH_LPC18XX || COMPILE_TEST
  135. depends on HAS_IOMEM
  136. help
  137. Say Y here to include support for NXP LPC18xx EEPROM memory found in
  138. NXP LPC185x/3x and LPC435x/3x/2x/1x devices.
  139. To compile this driver as a module, choose M here: the module
  140. will be called nvmem_lpc18xx_eeprom.
  141. config NVMEM_LPC18XX_OTP
  142. tristate "NXP LPC18XX OTP Memory Support"
  143. depends on ARCH_LPC18XX || COMPILE_TEST
  144. depends on HAS_IOMEM
  145. help
  146. Say Y here to include support for NXP LPC18xx OTP memory found on
  147. all LPC18xx and LPC43xx devices.
  148. To compile this driver as a module, choose M here: the module
  149. will be called nvmem_lpc18xx_otp.
  150. config NVMEM_MAX77759
  151. tristate "Maxim Integrated MAX77759 NVMEM Support"
  152. depends on MFD_MAX77759
  153. default MFD_MAX77759
  154. help
  155. Say Y here to include support for the user-accessible storage found
  156. in Maxim Integrated MAX77759 PMICs. This IC provides space for 30
  157. bytes of storage.
  158. This driver can also be built as a module. If so, the module
  159. will be called nvmem-max77759.
  160. config NVMEM_MESON_EFUSE
  161. tristate "Amlogic Meson GX eFuse Support"
  162. depends on (ARCH_MESON || COMPILE_TEST) && MESON_SM
  163. help
  164. This is a driver to retrieve specific values from the eFuse found on
  165. the Amlogic Meson GX SoCs.
  166. This driver can also be built as a module. If so, the module
  167. will be called nvmem_meson_efuse.
  168. config NVMEM_MESON_MX_EFUSE
  169. tristate "Amlogic Meson6/Meson8/Meson8b eFuse Support"
  170. depends on ARCH_MESON || COMPILE_TEST
  171. help
  172. This is a driver to retrieve specific values from the eFuse found on
  173. the Amlogic Meson6, Meson8 and Meson8b SoCs.
  174. This driver can also be built as a module. If so, the module
  175. will be called nvmem_meson_mx_efuse.
  176. config NVMEM_MICROCHIP_OTPC
  177. tristate "Microchip OTPC support"
  178. depends on ARCH_AT91 || COMPILE_TEST
  179. help
  180. This driver enable the OTP controller available on Microchip SAMA7G5
  181. SoCs. It controls the access to the OTP memory connected to it.
  182. config NVMEM_MTK_EFUSE
  183. tristate "Mediatek SoCs EFUSE support"
  184. depends on ARCH_MEDIATEK || COMPILE_TEST
  185. depends on HAS_IOMEM
  186. help
  187. This is a driver to access hardware related data like sensor
  188. calibration, HDMI impedance etc.
  189. This driver can also be built as a module. If so, the module
  190. will be called efuse-mtk.
  191. config NVMEM_MXS_OCOTP
  192. tristate "Freescale MXS On-Chip OTP Memory Support"
  193. depends on ARCH_MXS || COMPILE_TEST
  194. depends on HAS_IOMEM
  195. help
  196. If you say Y here, you will get readonly access to the
  197. One Time Programmable memory pages that are stored
  198. on the Freescale i.MX23/i.MX28 processor.
  199. This driver can also be built as a module. If so, the module
  200. will be called nvmem-mxs-ocotp.
  201. config NVMEM_NINTENDO_OTP
  202. tristate "Nintendo Wii and Wii U OTP Support"
  203. depends on WII || COMPILE_TEST
  204. help
  205. This is a driver exposing the OTP of a Nintendo Wii or Wii U console.
  206. This memory contains common and per-console keys, signatures and
  207. related data required to access peripherals.
  208. This driver can also be built as a module. If so, the module
  209. will be called nvmem-nintendo-otp.
  210. config NVMEM_S32G_OCOTP
  211. tristate "S32G SoC OCOTP support"
  212. depends on ARCH_S32
  213. help
  214. This is a driver for the 'OCOTP' peripheral available on S32G
  215. platforms.
  216. If you say Y here, you will get support for the One Time
  217. Programmable memory pages.
  218. config NVMEM_QCOM_QFPROM
  219. tristate "QCOM QFPROM Support"
  220. depends on ARCH_QCOM || COMPILE_TEST
  221. depends on HAS_IOMEM
  222. help
  223. Say y here to enable QFPROM support. The QFPROM provides access
  224. functions for QFPROM data to rest of the drivers via nvmem interface.
  225. This driver can also be built as a module. If so, the module
  226. will be called nvmem_qfprom.
  227. config NVMEM_QCOM_SEC_QFPROM
  228. tristate "QCOM SECURE QFPROM Support"
  229. depends on ARCH_QCOM || COMPILE_TEST
  230. depends on HAS_IOMEM
  231. depends on OF
  232. select QCOM_SCM
  233. help
  234. Say y here to enable secure QFPROM support. The secure QFPROM provides access
  235. functions for QFPROM data to rest of the drivers via nvmem interface.
  236. This driver can also be built as a module. If so, the module will be called
  237. nvmem_sec_qfprom.
  238. config NVMEM_QNAP_MCU_EEPROM
  239. tristate "QNAP MCU EEPROM Support"
  240. depends on MFD_QNAP_MCU
  241. help
  242. Say y here to enable support for accessing the EEPROM attached to
  243. QNAP MCU devices. This EEPROM contains additional runtime device
  244. information, like MAC addresses for ethernet devices that do not
  245. contain their own mac storage.
  246. config NVMEM_RAVE_SP_EEPROM
  247. tristate "Rave SP EEPROM Support"
  248. depends on RAVE_SP_CORE
  249. help
  250. Say y here to enable Rave SP EEPROM support.
  251. config NVMEM_RCAR_EFUSE
  252. tristate "Renesas R-Car Gen4 E-FUSE support"
  253. depends on (ARCH_RENESAS && ARM64) || COMPILE_TEST
  254. depends on NVMEM
  255. help
  256. Enable support for reading the fuses in the E-FUSE or OTP
  257. non-volatile memory block on Renesas R-Car Gen4 SoCs.
  258. This driver can also be built as a module. If so, the module
  259. will be called nvmem-rcar-efuse.
  260. config NVMEM_RMEM
  261. tristate "Reserved Memory Based Driver Support"
  262. depends on HAS_IOMEM
  263. select CRC32
  264. help
  265. This driver maps reserved memory into an nvmem device. It might be
  266. useful to expose information left by firmware in memory.
  267. This driver can also be built as a module. If so, the module
  268. will be called nvmem-rmem.
  269. config NVMEM_ROCKCHIP_EFUSE
  270. tristate "Rockchip eFuse Support"
  271. depends on ARCH_ROCKCHIP || COMPILE_TEST
  272. depends on HAS_IOMEM
  273. help
  274. This is a simple driver to dump specified values of Rockchip SoC
  275. from eFuse, such as cpu-leakage.
  276. This driver can also be built as a module. If so, the module
  277. will be called nvmem_rockchip_efuse.
  278. config NVMEM_ROCKCHIP_OTP
  279. tristate "Rockchip OTP controller support"
  280. depends on ARCH_ROCKCHIP || COMPILE_TEST
  281. depends on HAS_IOMEM
  282. help
  283. This is a simple driver to dump specified values of Rockchip SoC
  284. from OTP, such as cpu-leakage.
  285. This driver can also be built as a module. If so, the module
  286. will be called nvmem_rockchip_otp.
  287. config NVMEM_SC27XX_EFUSE
  288. tristate "Spreadtrum SC27XX eFuse Support"
  289. depends on MFD_SC27XX_PMIC || COMPILE_TEST
  290. depends on HAS_IOMEM
  291. help
  292. This is a simple driver to dump specified values of Spreadtrum
  293. SC27XX PMICs from eFuse.
  294. This driver can also be built as a module. If so, the module
  295. will be called nvmem-sc27xx-efuse.
  296. config NVMEM_SNVS_LPGPR
  297. tristate "Support for Low Power General Purpose Register"
  298. depends on ARCH_MXC || COMPILE_TEST
  299. help
  300. This is a driver for Low Power General Purpose Register (LPGPR) available on
  301. i.MX6 and i.MX7 SoCs in Secure Non-Volatile Storage (SNVS) of this chip.
  302. This driver can also be built as a module. If so, the module
  303. will be called nvmem-snvs-lpgpr.
  304. config NVMEM_SPMI_SDAM
  305. tristate "SPMI SDAM Support"
  306. depends on SPMI
  307. help
  308. This driver supports the Shared Direct Access Memory Module on
  309. Qualcomm Technologies, Inc. PMICs. It provides the clients
  310. an interface to read/write to the SDAM module's shared memory.
  311. config NVMEM_SPRD_EFUSE
  312. tristate "Spreadtrum SoC eFuse Support"
  313. depends on ARCH_SPRD || COMPILE_TEST
  314. depends on HAS_IOMEM
  315. help
  316. This is a simple driver to dump specified values of Spreadtrum
  317. SoCs from eFuse.
  318. This driver can also be built as a module. If so, the module
  319. will be called nvmem-sprd-efuse.
  320. config NVMEM_STM32_BSEC_OPTEE_TA
  321. def_bool NVMEM_STM32_ROMEM && OPTEE
  322. help
  323. Say y here to enable the accesses to STM32MP SoC OTPs by the OP-TEE
  324. trusted application STM32MP BSEC.
  325. This library is a used by stm32-romem driver or included in the module
  326. called nvmem-stm32-romem.
  327. config NVMEM_STM32_ROMEM
  328. tristate "STMicroelectronics STM32 factory-programmed memory support"
  329. depends on ARCH_STM32 || COMPILE_TEST
  330. depends on OPTEE || !OPTEE
  331. help
  332. Say y here to enable read-only access for STMicroelectronics STM32
  333. factory-programmed memory area.
  334. This driver can also be built as a module. If so, the module
  335. will be called nvmem-stm32-romem.
  336. config NVMEM_SUNPLUS_OCOTP
  337. tristate "Sunplus SoC OTP support"
  338. depends on SOC_SP7021 || COMPILE_TEST
  339. depends on HAS_IOMEM
  340. help
  341. This is a driver for the On-chip OTP controller (OCOTP) available
  342. on Sunplus SoCs. It provides access to 128 bytes of one-time
  343. programmable eFuse.
  344. This driver can also be built as a module. If so, the module
  345. will be called nvmem-sunplus-ocotp.
  346. config NVMEM_SUNXI_SID
  347. tristate "Allwinner SoCs SID support"
  348. depends on ARCH_SUNXI
  349. help
  350. This is a driver for the 'security ID' available on various Allwinner
  351. devices.
  352. This driver can also be built as a module. If so, the module
  353. will be called nvmem_sunxi_sid.
  354. config NVMEM_U_BOOT_ENV
  355. tristate "U-Boot environment variables support"
  356. depends on OF && MTD
  357. select NVMEM_LAYOUT_U_BOOT_ENV
  358. help
  359. U-Boot stores its setup as environment variables. This driver adds
  360. support for verifying & exporting such data. It also exposes variables
  361. as NVMEM cells so they can be referenced by other drivers.
  362. Currently this drivers works only with env variables on top of MTD.
  363. If compiled as module it will be called nvmem_u-boot-env.
  364. config NVMEM_UNIPHIER_EFUSE
  365. tristate "UniPhier SoCs eFuse support"
  366. depends on ARCH_UNIPHIER || COMPILE_TEST
  367. depends on HAS_IOMEM
  368. help
  369. This is a simple driver to dump specified values of UniPhier SoC
  370. from eFuse.
  371. This driver can also be built as a module. If so, the module
  372. will be called nvmem-uniphier-efuse.
  373. config NVMEM_VF610_OCOTP
  374. tristate "VF610 SoC OCOTP support"
  375. depends on SOC_VF610 || COMPILE_TEST
  376. depends on HAS_IOMEM
  377. help
  378. This is a driver for the 'OCOTP' peripheral available on Vybrid
  379. devices like VF5xx and VF6xx.
  380. This driver can also be build as a module. If so, the module will
  381. be called nvmem-vf610-ocotp.
  382. config NVMEM_ZYNQMP
  383. tristate "Xilinx ZYNQMP SoC nvmem firmware support"
  384. depends on ARCH_ZYNQMP
  385. help
  386. This is a driver to access hardware related data like
  387. soc revision, IDCODE... etc by using the firmware
  388. interface.
  389. If sure, say yes. If unsure, say no.
  390. config NVMEM_QORIQ_EFUSE
  391. tristate "NXP QorIQ eFuse support"
  392. depends on PPC_85xx || COMPILE_TEST
  393. depends on HAS_IOMEM
  394. help
  395. This driver provides read support for the eFuses (SFP) on NXP QorIQ
  396. series SoC's. This includes secure boot settings, the globally unique
  397. NXP ID 'FUIDR' and the OEM unique ID 'OUIDR'.
  398. This driver can also be built as a module. If so, the module
  399. will be called nvmem_qoriq_efuse.
  400. endif