xref: /linux/drivers/nvmem/Kconfig (revision bfdf35c5dc6267f70f76abddfacface4dd3b9ac0)
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_MAX77759
158	tristate "Maxim Integrated MAX77759 NVMEM Support"
159	depends on MFD_MAX77759
160	default MFD_MAX77759
161	help
162	  Say Y here to include support for the user-accessible storage found
163	  in Maxim Integrated MAX77759 PMICs. This IC provides space for 30
164	  bytes of storage.
165
166	  This driver can also be built as a module. If so, the module
167	  will be called nvmem-max77759.
168
169config NVMEM_MESON_EFUSE
170	tristate "Amlogic Meson GX eFuse Support"
171	depends on (ARCH_MESON || COMPILE_TEST) && MESON_SM
172	help
173	  This is a driver to retrieve specific values from the eFuse found on
174	  the Amlogic Meson GX SoCs.
175
176	  This driver can also be built as a module. If so, the module
177	  will be called nvmem_meson_efuse.
178
179config NVMEM_MESON_MX_EFUSE
180	tristate "Amlogic Meson6/Meson8/Meson8b eFuse Support"
181	depends on ARCH_MESON || COMPILE_TEST
182	help
183	  This is a driver to retrieve specific values from the eFuse found on
184	  the Amlogic Meson6, Meson8 and Meson8b SoCs.
185
186	  This driver can also be built as a module. If so, the module
187	  will be called nvmem_meson_mx_efuse.
188
189config NVMEM_MICROCHIP_OTPC
190	tristate "Microchip OTPC support"
191	depends on ARCH_AT91 || COMPILE_TEST
192	help
193	  This driver enable the OTP controller available on Microchip SAMA7G5
194	  SoCs. It controls the access to the OTP memory connected to it.
195
196config NVMEM_MTK_EFUSE
197	tristate "Mediatek SoCs EFUSE support"
198	depends on ARCH_MEDIATEK || COMPILE_TEST
199	depends on HAS_IOMEM
200	help
201	  This is a driver to access hardware related data like sensor
202	  calibration, HDMI impedance etc.
203
204	  This driver can also be built as a module. If so, the module
205	  will be called efuse-mtk.
206
207config NVMEM_MXS_OCOTP
208	tristate "Freescale MXS On-Chip OTP Memory Support"
209	depends on ARCH_MXS || COMPILE_TEST
210	depends on HAS_IOMEM
211	help
212	  If you say Y here, you will get readonly access to the
213	  One Time Programmable memory pages that are stored
214	  on the Freescale i.MX23/i.MX28 processor.
215
216	  This driver can also be built as a module. If so, the module
217	  will be called nvmem-mxs-ocotp.
218
219config NVMEM_NINTENDO_OTP
220	tristate "Nintendo Wii and Wii U OTP Support"
221	depends on WII || COMPILE_TEST
222	help
223	  This is a driver exposing the OTP of a Nintendo Wii or Wii U console.
224
225	  This memory contains common and per-console keys, signatures and
226	  related data required to access peripherals.
227
228	  This driver can also be built as a module. If so, the module
229	  will be called nvmem-nintendo-otp.
230
231config NVMEM_QCOM_QFPROM
232	tristate "QCOM QFPROM Support"
233	depends on ARCH_QCOM || COMPILE_TEST
234	depends on HAS_IOMEM
235	help
236	  Say y here to enable QFPROM support. The QFPROM provides access
237	  functions for QFPROM data to rest of the drivers via nvmem interface.
238
239	  This driver can also be built as a module. If so, the module
240	  will be called nvmem_qfprom.
241
242config NVMEM_QCOM_SEC_QFPROM
243        tristate "QCOM SECURE QFPROM Support"
244        depends on ARCH_QCOM || COMPILE_TEST
245        depends on HAS_IOMEM
246        depends on OF
247        select QCOM_SCM
248        help
249          Say y here to enable secure QFPROM support. The secure QFPROM provides access
250          functions for QFPROM data to rest of the drivers via nvmem interface.
251
252          This driver can also be built as a module. If so, the module will be called
253          nvmem_sec_qfprom.
254
255config NVMEM_RAVE_SP_EEPROM
256	tristate "Rave SP EEPROM Support"
257	depends on RAVE_SP_CORE
258	help
259	  Say y here to enable Rave SP EEPROM support.
260
261config NVMEM_RCAR_EFUSE
262	tristate "Renesas R-Car Gen4 E-FUSE support"
263	depends on (ARCH_RENESAS && ARM64) || COMPILE_TEST
264	depends on NVMEM
265	help
266	  Enable support for reading the fuses in the E-FUSE or OTP
267	  non-volatile memory block on Renesas R-Car Gen4 SoCs.
268
269	  This driver can also be built as a module. If so, the module
270	  will be called nvmem-rcar-efuse.
271
272config NVMEM_RMEM
273	tristate "Reserved Memory Based Driver Support"
274	depends on HAS_IOMEM
275	help
276	  This driver maps reserved memory into an nvmem device. It might be
277	  useful to expose information left by firmware in memory.
278
279	  This driver can also be built as a module. If so, the module
280	  will be called nvmem-rmem.
281
282config NVMEM_ROCKCHIP_EFUSE
283	tristate "Rockchip eFuse Support"
284	depends on ARCH_ROCKCHIP || COMPILE_TEST
285	depends on HAS_IOMEM
286	help
287	  This is a simple driver to dump specified values of Rockchip SoC
288	  from eFuse, such as cpu-leakage.
289
290	  This driver can also be built as a module. If so, the module
291	  will be called nvmem_rockchip_efuse.
292
293config NVMEM_ROCKCHIP_OTP
294	tristate "Rockchip OTP controller support"
295	depends on ARCH_ROCKCHIP || COMPILE_TEST
296	depends on HAS_IOMEM
297	help
298	  This is a simple driver to dump specified values of Rockchip SoC
299	  from OTP, such as cpu-leakage.
300
301	  This driver can also be built as a module. If so, the module
302	  will be called nvmem_rockchip_otp.
303
304config NVMEM_SC27XX_EFUSE
305	tristate "Spreadtrum SC27XX eFuse Support"
306	depends on MFD_SC27XX_PMIC || COMPILE_TEST
307	depends on HAS_IOMEM
308	help
309	  This is a simple driver to dump specified values of Spreadtrum
310	  SC27XX PMICs from eFuse.
311
312	  This driver can also be built as a module. If so, the module
313	  will be called nvmem-sc27xx-efuse.
314
315config NVMEM_SNVS_LPGPR
316	tristate "Support for Low Power General Purpose Register"
317	depends on ARCH_MXC || COMPILE_TEST
318	help
319	  This is a driver for Low Power General Purpose Register (LPGPR) available on
320	  i.MX6 and i.MX7 SoCs in Secure Non-Volatile Storage (SNVS) of this chip.
321
322	  This driver can also be built as a module. If so, the module
323	  will be called nvmem-snvs-lpgpr.
324
325config NVMEM_SPMI_SDAM
326	tristate "SPMI SDAM Support"
327	depends on SPMI
328	help
329	  This driver supports the Shared Direct Access Memory Module on
330	  Qualcomm Technologies, Inc. PMICs. It provides the clients
331	  an interface to read/write to the SDAM module's shared memory.
332
333config NVMEM_SPRD_EFUSE
334	tristate "Spreadtrum SoC eFuse Support"
335	depends on ARCH_SPRD || COMPILE_TEST
336	depends on HAS_IOMEM
337	help
338	  This is a simple driver to dump specified values of Spreadtrum
339	  SoCs from eFuse.
340
341	  This driver can also be built as a module. If so, the module
342	  will be called nvmem-sprd-efuse.
343
344config NVMEM_STM32_BSEC_OPTEE_TA
345	def_bool NVMEM_STM32_ROMEM && OPTEE
346	help
347	  Say y here to enable the accesses to STM32MP SoC OTPs by the OP-TEE
348	  trusted application STM32MP BSEC.
349
350	  This library is a used by stm32-romem driver or included in the module
351	  called nvmem-stm32-romem.
352
353config NVMEM_STM32_ROMEM
354	tristate "STMicroelectronics STM32 factory-programmed memory support"
355	depends on ARCH_STM32 || COMPILE_TEST
356	depends on OPTEE || !OPTEE
357	help
358	  Say y here to enable read-only access for STMicroelectronics STM32
359	  factory-programmed memory area.
360
361	  This driver can also be built as a module. If so, the module
362	  will be called nvmem-stm32-romem.
363
364config NVMEM_SUNPLUS_OCOTP
365	tristate "Sunplus SoC OTP support"
366	depends on SOC_SP7021 || COMPILE_TEST
367	depends on HAS_IOMEM
368	help
369	  This is a driver for the On-chip OTP controller (OCOTP) available
370	  on Sunplus SoCs. It provides access to 128 bytes of one-time
371	  programmable eFuse.
372
373	  This driver can also be built as a module. If so, the module
374	  will be called nvmem-sunplus-ocotp.
375
376config NVMEM_SUNXI_SID
377	tristate "Allwinner SoCs SID support"
378	depends on ARCH_SUNXI
379	help
380	  This is a driver for the 'security ID' available on various Allwinner
381	  devices.
382
383	  This driver can also be built as a module. If so, the module
384	  will be called nvmem_sunxi_sid.
385
386config NVMEM_U_BOOT_ENV
387	tristate "U-Boot environment variables support"
388	depends on OF && MTD
389	select NVMEM_LAYOUT_U_BOOT_ENV
390	help
391	  U-Boot stores its setup as environment variables. This driver adds
392	  support for verifying & exporting such data. It also exposes variables
393	  as NVMEM cells so they can be referenced by other drivers.
394
395	  Currently this drivers works only with env variables on top of MTD.
396
397	  If compiled as module it will be called nvmem_u-boot-env.
398
399config NVMEM_UNIPHIER_EFUSE
400	tristate "UniPhier SoCs eFuse support"
401	depends on ARCH_UNIPHIER || COMPILE_TEST
402	depends on HAS_IOMEM
403	help
404	  This is a simple driver to dump specified values of UniPhier SoC
405	  from eFuse.
406
407	  This driver can also be built as a module. If so, the module
408	  will be called nvmem-uniphier-efuse.
409
410config NVMEM_VF610_OCOTP
411	tristate "VF610 SoC OCOTP support"
412	depends on SOC_VF610 || COMPILE_TEST
413	depends on HAS_IOMEM
414	help
415	  This is a driver for the 'OCOTP' peripheral available on Vybrid
416	  devices like VF5xx and VF6xx.
417
418	  This driver can also be build as a module. If so, the module will
419	  be called nvmem-vf610-ocotp.
420
421config NVMEM_ZYNQMP
422	tristate "Xilinx ZYNQMP SoC nvmem firmware support"
423	depends on ARCH_ZYNQMP
424	help
425	  This is a driver to access hardware related data like
426	  soc revision, IDCODE... etc by using the firmware
427	  interface.
428
429	  If sure, say yes. If unsure, say no.
430
431config NVMEM_QORIQ_EFUSE
432	tristate "NXP QorIQ eFuse support"
433	depends on PPC_85xx || COMPILE_TEST
434	depends on HAS_IOMEM
435	help
436	  This driver provides read support for the eFuses (SFP) on NXP QorIQ
437	  series SoC's. This includes secure boot settings, the globally unique
438	  NXP ID 'FUIDR' and the OEM unique ID 'OUIDR'.
439
440	  This driver can also be built as a module. If so, the module
441	  will be called nvmem_qoriq_efuse.
442
443endif
444