xref: /linux-6.15/drivers/nvmem/Kconfig (revision 73bcd133)
1# SPDX-License-Identifier: GPL-2.0-only
2menuconfig NVMEM
3	bool "NVMEM Support"
4	help
5	  Support for NVMEM(Non Volatile Memory) devices like EEPROM, EFUSES...
6
7	  This framework is designed to provide a generic interface to NVMEM
8	  from both the Linux Kernel and the userspace.
9
10	  If unsure, say no.
11
12if NVMEM
13
14config NVMEM_SYSFS
15	bool "/sys/bus/nvmem/devices/*/nvmem (sysfs interface)"
16	depends on SYSFS
17	default y
18	help
19	 Say Y here to add a sysfs interface for NVMEM.
20
21	 This interface is mostly used by userspace applications to
22	 read/write directly into nvmem.
23
24# Layouts
25
26source "drivers/nvmem/layouts/Kconfig"
27
28# Devices
29
30config NVMEM_APPLE_EFUSES
31	tristate "Apple eFuse support"
32	depends on ARCH_APPLE || COMPILE_TEST
33	default ARCH_APPLE
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_BCM_OCOTP
43	tristate "Broadcom On-Chip OTP Controller support"
44	depends on ARCH_BCM_IPROC || COMPILE_TEST
45	depends on HAS_IOMEM
46	default ARCH_BCM_IPROC
47	help
48	  Say y here to enable read/write access to the Broadcom OTP
49	  controller.
50
51	  This driver can also be built as a module. If so, the module
52	  will be called nvmem-bcm-ocotp.
53
54config NVMEM_BRCM_NVRAM
55	tristate "Broadcom's NVRAM support"
56	depends on ARCH_BCM_5301X || COMPILE_TEST
57	depends on HAS_IOMEM
58	select GENERIC_NET_UTILS
59	help
60	  This driver provides support for Broadcom's NVRAM that can be accessed
61	  using I/O mapping.
62
63config NVMEM_IMX_IIM
64	tristate "i.MX IC Identification Module support"
65	depends on ARCH_MXC || COMPILE_TEST
66	help
67	  This is a driver for the IC Identification Module (IIM) available on
68	  i.MX SoCs, providing access to 4 Kbits of programmable
69	  eFuses.
70
71	  This driver can also be built as a module. If so, the module
72	  will be called nvmem-imx-iim.
73
74config NVMEM_IMX_OCOTP
75	tristate "i.MX 6/7/8 On-Chip OTP Controller support"
76	depends on ARCH_MXC || COMPILE_TEST
77	depends on HAS_IOMEM
78	help
79	  This is a driver for the On-Chip OTP Controller (OCOTP) available on
80	  i.MX6 SoCs, providing access to 4 Kbits of one-time programmable
81	  eFuses.
82
83	  This driver can also be built as a module. If so, the module
84	  will be called nvmem-imx-ocotp.
85
86config NVMEM_IMX_OCOTP_SCU
87	tristate "i.MX8 SCU On-Chip OTP Controller support"
88	depends on IMX_SCU
89	depends on HAVE_ARM_SMCCC
90	help
91	  This is a driver for the SCU On-Chip OTP Controller (OCOTP)
92	  available on i.MX8 SoCs.
93
94config NVMEM_JZ4780_EFUSE
95	tristate "JZ4780 EFUSE Memory Support"
96	depends on MACH_INGENIC || COMPILE_TEST
97	depends on HAS_IOMEM
98	depends on OF
99	select REGMAP_MMIO
100	help
101	  Say Y here to include support for JZ4780 efuse memory found on
102	  all JZ4780 SoC based devices.
103	  To compile this driver as a module, choose M here: the module
104	  will be called nvmem_jz4780_efuse.
105
106config NVMEM_LAN9662_OTPC
107	tristate "Microchip LAN9662 OTP controller support"
108	depends on SOC_LAN966 || COMPILE_TEST
109	depends on HAS_IOMEM
110	help
111	  This driver enables the OTP controller available on Microchip LAN9662
112	  SoCs. It controls the access to the OTP memory connected to it.
113
114config NVMEM_LAYERSCAPE_SFP
115	tristate "Layerscape SFP (Security Fuse Processor) support"
116	depends on ARCH_LAYERSCAPE || COMPILE_TEST
117	depends on HAS_IOMEM
118	select REGMAP_MMIO
119	help
120	  This driver provides support to read the eFuses on Freescale
121	  Layerscape SoC's. For example, the vendor provides a per part
122	  unique ID there.
123
124	  This driver can also be built as a module. If so, the module
125	  will be called layerscape-sfp.
126
127config NVMEM_LPC18XX_EEPROM
128	tristate "NXP LPC18XX EEPROM Memory Support"
129	depends on ARCH_LPC18XX || COMPILE_TEST
130	depends on HAS_IOMEM
131	help
132	  Say Y here to include support for NXP LPC18xx EEPROM memory found in
133	  NXP LPC185x/3x and LPC435x/3x/2x/1x devices.
134	  To compile this driver as a module, choose M here: the module
135	  will be called nvmem_lpc18xx_eeprom.
136
137config NVMEM_LPC18XX_OTP
138	tristate "NXP LPC18XX OTP 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 OTP memory found on
143	  all LPC18xx and LPC43xx devices.
144	  To compile this driver as a module, choose M here: the module
145	  will be called nvmem_lpc18xx_otp.
146
147config NVMEM_MESON_EFUSE
148	tristate "Amlogic Meson GX eFuse Support"
149	depends on (ARCH_MESON || COMPILE_TEST) && MESON_SM
150	help
151	  This is a driver to retrieve specific values from the eFuse found on
152	  the Amlogic Meson GX SoCs.
153
154	  This driver can also be built as a module. If so, the module
155	  will be called nvmem_meson_efuse.
156
157config NVMEM_MESON_MX_EFUSE
158	tristate "Amlogic Meson6/Meson8/Meson8b eFuse Support"
159	depends on ARCH_MESON || COMPILE_TEST
160	help
161	  This is a driver to retrieve specific values from the eFuse found on
162	  the Amlogic Meson6, Meson8 and Meson8b SoCs.
163
164	  This driver can also be built as a module. If so, the module
165	  will be called nvmem_meson_mx_efuse.
166
167config NVMEM_MICROCHIP_OTPC
168	tristate "Microchip OTPC support"
169	depends on ARCH_AT91 || COMPILE_TEST
170	help
171	  This driver enable the OTP controller available on Microchip SAMA7G5
172	  SoCs. It controls the access to the OTP memory connected to it.
173
174config NVMEM_MTK_EFUSE
175	tristate "Mediatek SoCs EFUSE support"
176	depends on ARCH_MEDIATEK || COMPILE_TEST
177	depends on HAS_IOMEM
178	help
179	  This is a driver to access hardware related data like sensor
180	  calibration, HDMI impedance etc.
181
182	  This driver can also be built as a module. If so, the module
183	  will be called efuse-mtk.
184
185config NVMEM_MXS_OCOTP
186	tristate "Freescale MXS On-Chip OTP Memory Support"
187	depends on ARCH_MXS || COMPILE_TEST
188	depends on HAS_IOMEM
189	help
190	  If you say Y here, you will get readonly access to the
191	  One Time Programmable memory pages that are stored
192	  on the Freescale i.MX23/i.MX28 processor.
193
194	  This driver can also be built as a module. If so, the module
195	  will be called nvmem-mxs-ocotp.
196
197config NVMEM_NINTENDO_OTP
198	tristate "Nintendo Wii and Wii U OTP Support"
199	depends on WII || COMPILE_TEST
200	help
201	  This is a driver exposing the OTP of a Nintendo Wii or Wii U console.
202
203	  This memory contains common and per-console keys, signatures and
204	  related data required to access peripherals.
205
206	  This driver can also be built as a module. If so, the module
207	  will be called nvmem-nintendo-otp.
208
209config NVMEM_QCOM_QFPROM
210	tristate "QCOM QFPROM Support"
211	depends on ARCH_QCOM || COMPILE_TEST
212	depends on HAS_IOMEM
213	help
214	  Say y here to enable QFPROM support. The QFPROM provides access
215	  functions for QFPROM data to rest of the drivers via nvmem interface.
216
217	  This driver can also be built as a module. If so, the module
218	  will be called nvmem_qfprom.
219
220config NVMEM_RAVE_SP_EEPROM
221	tristate "Rave SP EEPROM Support"
222	depends on RAVE_SP_CORE
223	help
224	  Say y here to enable Rave SP EEPROM support.
225
226config NVMEM_RMEM
227	tristate "Reserved Memory Based Driver Support"
228	depends on HAS_IOMEM
229	help
230	  This driver maps reserved memory into an nvmem device. It might be
231	  useful to expose information left by firmware in memory.
232
233	  This driver can also be built as a module. If so, the module
234	  will be called nvmem-rmem.
235
236config NVMEM_ROCKCHIP_EFUSE
237	tristate "Rockchip eFuse Support"
238	depends on ARCH_ROCKCHIP || COMPILE_TEST
239	depends on HAS_IOMEM
240	help
241	  This is a simple drive to dump specified values of Rockchip SoC
242	  from eFuse, such as cpu-leakage.
243
244	  This driver can also be built as a module. If so, the module
245	  will be called nvmem_rockchip_efuse.
246
247config NVMEM_ROCKCHIP_OTP
248	tristate "Rockchip OTP controller support"
249	depends on ARCH_ROCKCHIP || COMPILE_TEST
250	depends on HAS_IOMEM
251	help
252	  This is a simple drive to dump specified values of Rockchip SoC
253	  from otp, such as cpu-leakage.
254
255	  This driver can also be built as a module. If so, the module
256	  will be called nvmem_rockchip_otp.
257
258config NVMEM_SC27XX_EFUSE
259	tristate "Spreadtrum SC27XX eFuse Support"
260	depends on MFD_SC27XX_PMIC || COMPILE_TEST
261	depends on HAS_IOMEM
262	help
263	  This is a simple driver to dump specified values of Spreadtrum
264	  SC27XX PMICs from eFuse.
265
266	  This driver can also be built as a module. If so, the module
267	  will be called nvmem-sc27xx-efuse.
268
269config NVMEM_SNVS_LPGPR
270	tristate "Support for Low Power General Purpose Register"
271	depends on ARCH_MXC || COMPILE_TEST
272	help
273	  This is a driver for Low Power General Purpose Register (LPGPR) available on
274	  i.MX6 and i.MX7 SoCs in Secure Non-Volatile Storage (SNVS) of this chip.
275
276	  This driver can also be built as a module. If so, the module
277	  will be called nvmem-snvs-lpgpr.
278
279config NVMEM_SPMI_SDAM
280	tristate "SPMI SDAM Support"
281	depends on SPMI
282	help
283	  This driver supports the Shared Direct Access Memory Module on
284	  Qualcomm Technologies, Inc. PMICs. It provides the clients
285	  an interface to read/write to the SDAM module's shared memory.
286
287config NVMEM_SPRD_EFUSE
288	tristate "Spreadtrum SoC eFuse Support"
289	depends on ARCH_SPRD || COMPILE_TEST
290	depends on HAS_IOMEM
291	help
292	  This is a simple driver to dump specified values of Spreadtrum
293	  SoCs from eFuse.
294
295	  This driver can also be built as a module. If so, the module
296	  will be called nvmem-sprd-efuse.
297
298config NVMEM_STM32_BSEC_OPTEE_TA
299	def_bool NVMEM_STM32_ROMEM && OPTEE
300	help
301	  Say y here to enable the accesses to STM32MP SoC OTPs by the OP-TEE
302	  trusted application STM32MP BSEC.
303
304	  This library is a used by stm32-romem driver or included in the module
305	  called nvmem-stm32-romem.
306
307config NVMEM_STM32_ROMEM
308	tristate "STMicroelectronics STM32 factory-programmed memory support"
309	depends on ARCH_STM32 || COMPILE_TEST
310	depends on OPTEE || !OPTEE
311	help
312	  Say y here to enable read-only access for STMicroelectronics STM32
313	  factory-programmed memory area.
314
315	  This driver can also be built as a module. If so, the module
316	  will be called nvmem-stm32-romem.
317
318config NVMEM_SUNPLUS_OCOTP
319	tristate "Sunplus SoC OTP support"
320	depends on SOC_SP7021 || COMPILE_TEST
321	depends on HAS_IOMEM
322	help
323	  This is a driver for the On-chip OTP controller (OCOTP) available
324	  on Sunplus SoCs. It provides access to 128 bytes of one-time
325	  programmable eFuse.
326
327	  This driver can also be built as a module. If so, the module
328	  will be called nvmem-sunplus-ocotp.
329
330config NVMEM_SUNXI_SID
331	tristate "Allwinner SoCs SID support"
332	depends on ARCH_SUNXI
333	help
334	  This is a driver for the 'security ID' available on various Allwinner
335	  devices.
336
337	  This driver can also be built as a module. If so, the module
338	  will be called nvmem_sunxi_sid.
339
340config NVMEM_U_BOOT_ENV
341	tristate "U-Boot environment variables support"
342	depends on OF && MTD
343	select CRC32
344	select GENERIC_NET_UTILS
345	help
346	  U-Boot stores its setup as environment variables. This driver adds
347	  support for verifying & exporting such data. It also exposes variables
348	  as NVMEM cells so they can be referenced by other drivers.
349
350	  Currently this drivers works only with env variables on top of MTD.
351
352	  If compiled as module it will be called nvmem_u-boot-env.
353
354config NVMEM_UNIPHIER_EFUSE
355	tristate "UniPhier SoCs eFuse support"
356	depends on ARCH_UNIPHIER || COMPILE_TEST
357	depends on HAS_IOMEM
358	help
359	  This is a simple driver to dump specified values of UniPhier SoC
360	  from eFuse.
361
362	  This driver can also be built as a module. If so, the module
363	  will be called nvmem-uniphier-efuse.
364
365config NVMEM_VF610_OCOTP
366	tristate "VF610 SoC OCOTP support"
367	depends on SOC_VF610 || COMPILE_TEST
368	depends on HAS_IOMEM
369	help
370	  This is a driver for the 'OCOTP' peripheral available on Vybrid
371	  devices like VF5xx and VF6xx.
372
373	  This driver can also be build as a module. If so, the module will
374	  be called nvmem-vf610-ocotp.
375
376config NVMEM_ZYNQMP
377	tristate "Xilinx ZYNQMP SoC nvmem firmware support"
378	depends on ARCH_ZYNQMP
379	help
380	  This is a driver to access hardware related data like
381	  soc revision, IDCODE... etc by using the firmware
382	  interface.
383
384	  If sure, say yes. If unsure, say no.
385
386endif
387