xref: /openbmc/linux/drivers/nvmem/Kconfig (revision 63186a89)
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_RAVE_SP_EEPROM
230	tristate "Rave SP EEPROM Support"
231	depends on RAVE_SP_CORE
232	help
233	  Say y here to enable Rave SP EEPROM support.
234
235config NVMEM_RMEM
236	tristate "Reserved Memory Based Driver Support"
237	depends on HAS_IOMEM
238	help
239	  This driver maps reserved memory into an nvmem device. It might be
240	  useful to expose information left by firmware in memory.
241
242	  This driver can also be built as a module. If so, the module
243	  will be called nvmem-rmem.
244
245config NVMEM_ROCKCHIP_EFUSE
246	tristate "Rockchip eFuse Support"
247	depends on ARCH_ROCKCHIP || COMPILE_TEST
248	depends on HAS_IOMEM
249	help
250	  This is a simple drive to dump specified values of Rockchip SoC
251	  from eFuse, such as cpu-leakage.
252
253	  This driver can also be built as a module. If so, the module
254	  will be called nvmem_rockchip_efuse.
255
256config NVMEM_ROCKCHIP_OTP
257	tristate "Rockchip OTP controller support"
258	depends on ARCH_ROCKCHIP || COMPILE_TEST
259	depends on HAS_IOMEM
260	help
261	  This is a simple drive to dump specified values of Rockchip SoC
262	  from otp, such as cpu-leakage.
263
264	  This driver can also be built as a module. If so, the module
265	  will be called nvmem_rockchip_otp.
266
267config NVMEM_SC27XX_EFUSE
268	tristate "Spreadtrum SC27XX eFuse Support"
269	depends on MFD_SC27XX_PMIC || COMPILE_TEST
270	depends on HAS_IOMEM
271	help
272	  This is a simple driver to dump specified values of Spreadtrum
273	  SC27XX PMICs from eFuse.
274
275	  This driver can also be built as a module. If so, the module
276	  will be called nvmem-sc27xx-efuse.
277
278config NVMEM_SNVS_LPGPR
279	tristate "Support for Low Power General Purpose Register"
280	depends on ARCH_MXC || COMPILE_TEST
281	help
282	  This is a driver for Low Power General Purpose Register (LPGPR) available on
283	  i.MX6 and i.MX7 SoCs in Secure Non-Volatile Storage (SNVS) of this chip.
284
285	  This driver can also be built as a module. If so, the module
286	  will be called nvmem-snvs-lpgpr.
287
288config NVMEM_SPMI_SDAM
289	tristate "SPMI SDAM Support"
290	depends on SPMI
291	help
292	  This driver supports the Shared Direct Access Memory Module on
293	  Qualcomm Technologies, Inc. PMICs. It provides the clients
294	  an interface to read/write to the SDAM module's shared memory.
295
296config NVMEM_SPRD_EFUSE
297	tristate "Spreadtrum SoC eFuse Support"
298	depends on ARCH_SPRD || COMPILE_TEST
299	depends on HAS_IOMEM
300	help
301	  This is a simple driver to dump specified values of Spreadtrum
302	  SoCs from eFuse.
303
304	  This driver can also be built as a module. If so, the module
305	  will be called nvmem-sprd-efuse.
306
307config NVMEM_STM32_BSEC_OPTEE_TA
308	def_bool NVMEM_STM32_ROMEM && OPTEE
309	help
310	  Say y here to enable the accesses to STM32MP SoC OTPs by the OP-TEE
311	  trusted application STM32MP BSEC.
312
313	  This library is a used by stm32-romem driver or included in the module
314	  called nvmem-stm32-romem.
315
316config NVMEM_STM32_ROMEM
317	tristate "STMicroelectronics STM32 factory-programmed memory support"
318	depends on ARCH_STM32 || COMPILE_TEST
319	depends on OPTEE || !OPTEE
320	help
321	  Say y here to enable read-only access for STMicroelectronics STM32
322	  factory-programmed memory area.
323
324	  This driver can also be built as a module. If so, the module
325	  will be called nvmem-stm32-romem.
326
327config NVMEM_SUNPLUS_OCOTP
328	tristate "Sunplus SoC OTP support"
329	depends on SOC_SP7021 || COMPILE_TEST
330	depends on HAS_IOMEM
331	help
332	  This is a driver for the On-chip OTP controller (OCOTP) available
333	  on Sunplus SoCs. It provides access to 128 bytes of one-time
334	  programmable eFuse.
335
336	  This driver can also be built as a module. If so, the module
337	  will be called nvmem-sunplus-ocotp.
338
339config NVMEM_SUNXI_SID
340	tristate "Allwinner SoCs SID support"
341	depends on ARCH_SUNXI
342	help
343	  This is a driver for the 'security ID' available on various Allwinner
344	  devices.
345
346	  This driver can also be built as a module. If so, the module
347	  will be called nvmem_sunxi_sid.
348
349config NVMEM_U_BOOT_ENV
350	tristate "U-Boot environment variables support"
351	depends on OF && MTD
352	select CRC32
353	select GENERIC_NET_UTILS
354	help
355	  U-Boot stores its setup as environment variables. This driver adds
356	  support for verifying & exporting such data. It also exposes variables
357	  as NVMEM cells so they can be referenced by other drivers.
358
359	  Currently this drivers works only with env variables on top of MTD.
360
361	  If compiled as module it will be called nvmem_u-boot-env.
362
363config NVMEM_UNIPHIER_EFUSE
364	tristate "UniPhier SoCs eFuse support"
365	depends on ARCH_UNIPHIER || COMPILE_TEST
366	depends on HAS_IOMEM
367	help
368	  This is a simple driver to dump specified values of UniPhier SoC
369	  from eFuse.
370
371	  This driver can also be built as a module. If so, the module
372	  will be called nvmem-uniphier-efuse.
373
374config NVMEM_VF610_OCOTP
375	tristate "VF610 SoC OCOTP support"
376	depends on SOC_VF610 || COMPILE_TEST
377	depends on HAS_IOMEM
378	help
379	  This is a driver for the 'OCOTP' peripheral available on Vybrid
380	  devices like VF5xx and VF6xx.
381
382	  This driver can also be build as a module. If so, the module will
383	  be called nvmem-vf610-ocotp.
384
385config NVMEM_ZYNQMP
386	tristate "Xilinx ZYNQMP SoC nvmem firmware support"
387	depends on ARCH_ZYNQMP
388	help
389	  This is a driver to access hardware related data like
390	  soc revision, IDCODE... etc by using the firmware
391	  interface.
392
393	  If sure, say yes. If unsure, say no.
394
395endif
396