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