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