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