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