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