xref: /linux/drivers/nvmem/Kconfig (revision ec2e0fb07d789976c601bec19ecced7a501c3705)
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_RAVE_SP_EEPROM
289	tristate "Rave SP EEPROM Support"
290	depends on RAVE_SP_CORE
291	help
292	  Say y here to enable Rave SP EEPROM support.
293
294config NVMEM_RCAR_EFUSE
295	tristate "Renesas R-Car Gen4 E-FUSE support"
296	depends on (ARCH_RENESAS && ARM64) || COMPILE_TEST
297	depends on NVMEM
298	help
299	  Enable support for reading the fuses in the E-FUSE or OTP
300	  non-volatile memory block on Renesas R-Car Gen4 SoCs.
301
302	  This driver can also be built as a module. If so, the module
303	  will be called nvmem-rcar-efuse.
304
305config NVMEM_RMEM
306	tristate "Reserved Memory Based Driver Support"
307	depends on HAS_IOMEM
308	select CRC32
309	help
310	  This driver maps reserved memory into an nvmem device. It might be
311	  useful to expose information left by firmware in memory.
312
313	  This driver can also be built as a module. If so, the module
314	  will be called nvmem-rmem.
315
316config NVMEM_ROCKCHIP_EFUSE
317	tristate "Rockchip eFuse Support"
318	depends on ARCH_ROCKCHIP || COMPILE_TEST
319	depends on HAS_IOMEM
320	help
321	  This is a simple driver to dump specified values of Rockchip SoC
322	  from eFuse, such as cpu-leakage.
323
324	  This driver can also be built as a module. If so, the module
325	  will be called nvmem_rockchip_efuse.
326
327config NVMEM_ROCKCHIP_OTP
328	tristate "Rockchip OTP controller support"
329	depends on ARCH_ROCKCHIP || COMPILE_TEST
330	depends on HAS_IOMEM
331	help
332	  This is a simple driver to dump specified values of Rockchip SoC
333	  from OTP, such as cpu-leakage.
334
335	  This driver can also be built as a module. If so, the module
336	  will be called nvmem_rockchip_otp.
337
338config NVMEM_SC27XX_EFUSE
339	tristate "Spreadtrum SC27XX eFuse Support"
340	depends on MFD_SC27XX_PMIC || COMPILE_TEST
341	depends on HAS_IOMEM
342	help
343	  This is a simple driver to dump specified values of Spreadtrum
344	  SC27XX PMICs from eFuse.
345
346	  This driver can also be built as a module. If so, the module
347	  will be called nvmem-sc27xx-efuse.
348
349config NVMEM_SNVS_LPGPR
350	tristate "Support for Low Power General Purpose Register"
351	depends on ARCH_MXC || COMPILE_TEST
352	help
353	  This is a driver for Low Power General Purpose Register (LPGPR) available on
354	  i.MX6 and i.MX7 SoCs in Secure Non-Volatile Storage (SNVS) of this chip.
355
356	  This driver can also be built as a module. If so, the module
357	  will be called nvmem-snvs-lpgpr.
358
359config NVMEM_SPMI_SDAM
360	tristate "SPMI SDAM Support"
361	depends on SPMI
362	help
363	  This driver supports the Shared Direct Access Memory Module on
364	  Qualcomm Technologies, Inc. PMICs. It provides the clients
365	  an interface to read/write to the SDAM module's shared memory.
366
367config NVMEM_SPRD_EFUSE
368	tristate "Spreadtrum SoC eFuse Support"
369	depends on ARCH_SPRD || COMPILE_TEST
370	depends on HAS_IOMEM
371	help
372	  This is a simple driver to dump specified values of Spreadtrum
373	  SoCs from eFuse.
374
375	  This driver can also be built as a module. If so, the module
376	  will be called nvmem-sprd-efuse.
377
378config NVMEM_STM32_BSEC_OPTEE_TA
379	def_bool NVMEM_STM32_ROMEM && OPTEE
380	help
381	  Say y here to enable the accesses to STM32MP SoC OTPs by the OP-TEE
382	  trusted application STM32MP BSEC.
383
384	  This library is a used by stm32-romem driver or included in the module
385	  called nvmem-stm32-romem.
386
387config NVMEM_STM32_ROMEM
388	tristate "STMicroelectronics STM32 factory-programmed memory support"
389	depends on ARCH_STM32 || COMPILE_TEST
390	depends on OPTEE || !OPTEE
391	help
392	  Say y here to enable read-only access for STMicroelectronics STM32
393	  factory-programmed memory area.
394
395	  This driver can also be built as a module. If so, the module
396	  will be called nvmem-stm32-romem.
397
398config NVMEM_SUNPLUS_OCOTP
399	tristate "Sunplus SoC OTP support"
400	depends on SOC_SP7021 || COMPILE_TEST
401	depends on HAS_IOMEM
402	help
403	  This is a driver for the On-chip OTP controller (OCOTP) available
404	  on Sunplus SoCs. It provides access to 128 bytes of one-time
405	  programmable eFuse.
406
407	  This driver can also be built as a module. If so, the module
408	  will be called nvmem-sunplus-ocotp.
409
410config NVMEM_SUNXI_SID
411	tristate "Allwinner SoCs SID support"
412	depends on ARCH_SUNXI
413	help
414	  This is a driver for the 'security ID' available on various Allwinner
415	  devices.
416
417	  This driver can also be built as a module. If so, the module
418	  will be called nvmem_sunxi_sid.
419
420config NVMEM_U_BOOT_ENV
421	tristate "U-Boot environment variables support"
422	depends on OF && MTD
423	select NVMEM_LAYOUT_U_BOOT_ENV
424	help
425	  U-Boot stores its setup as environment variables. This driver adds
426	  support for verifying & exporting such data. It also exposes variables
427	  as NVMEM cells so they can be referenced by other drivers.
428
429	  Currently this drivers works only with env variables on top of MTD.
430
431	  If compiled as module it will be called nvmem_u-boot-env.
432
433config NVMEM_UNIPHIER_EFUSE
434	tristate "UniPhier SoCs eFuse support"
435	depends on ARCH_UNIPHIER || COMPILE_TEST
436	depends on HAS_IOMEM
437	help
438	  This is a simple driver to dump specified values of UniPhier SoC
439	  from eFuse.
440
441	  This driver can also be built as a module. If so, the module
442	  will be called nvmem-uniphier-efuse.
443
444config NVMEM_VF610_OCOTP
445	tristate "VF610 SoC OCOTP support"
446	depends on SOC_VF610 || COMPILE_TEST
447	depends on HAS_IOMEM
448	help
449	  This is a driver for the 'OCOTP' peripheral available on Vybrid
450	  devices like VF5xx and VF6xx.
451
452	  This driver can also be build as a module. If so, the module will
453	  be called nvmem-vf610-ocotp.
454
455config NVMEM_ZYNQMP
456	tristate "Xilinx ZYNQMP SoC nvmem firmware support"
457	depends on ARCH_ZYNQMP
458	help
459	  This is a driver to access hardware related data like
460	  soc revision, IDCODE... etc by using the firmware
461	  interface.
462
463	  If sure, say yes. If unsure, say no.
464
465config NVMEM_QORIQ_EFUSE
466	tristate "NXP QorIQ eFuse support"
467	depends on PPC_85xx || COMPILE_TEST
468	depends on HAS_IOMEM
469	help
470	  This driver provides read support for the eFuses (SFP) on NXP QorIQ
471	  series SoC's. This includes secure boot settings, the globally unique
472	  NXP ID 'FUIDR' and the OEM unique ID 'OUIDR'.
473
474	  This driver can also be built as a module. If so, the module
475	  will be called nvmem_qoriq_efuse.
476
477endif
478