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