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