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