xref: /linux/drivers/nvmem/Kconfig (revision 83bd89291f5cc866f60d32c34e268896c7ba8a3d)
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
487