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