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