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 NVMEM_NINTENDO_OTP
111	tristate "Nintendo Wii and Wii U OTP Support"
112	depends on WII || COMPILE_TEST
113	help
114	  This is a driver exposing the OTP of a Nintendo Wii or Wii U console.
115
116	  This memory contains common and per-console keys, signatures and
117	  related data required to access peripherals.
118
119	  This driver can also be built as a module. If so, the module
120	  will be called nvmem-nintendo-otp.
121
122config QCOM_QFPROM
123	tristate "QCOM QFPROM Support"
124	depends on ARCH_QCOM || COMPILE_TEST
125	depends on HAS_IOMEM
126	help
127	  Say y here to enable QFPROM support. The QFPROM provides access
128	  functions for QFPROM data to rest of the drivers via nvmem interface.
129
130	  This driver can also be built as a module. If so, the module
131	  will be called nvmem_qfprom.
132
133config NVMEM_SPMI_SDAM
134	tristate "SPMI SDAM Support"
135	depends on SPMI
136	help
137	  This driver supports the Shared Direct Access Memory Module on
138	  Qualcomm Technologies, Inc. PMICs. It provides the clients
139	  an interface to read/write to the SDAM module's shared memory.
140
141config ROCKCHIP_EFUSE
142	tristate "Rockchip eFuse Support"
143	depends on ARCH_ROCKCHIP || COMPILE_TEST
144	depends on HAS_IOMEM
145	help
146	  This is a simple drive to dump specified values of Rockchip SoC
147	  from eFuse, such as cpu-leakage.
148
149	  This driver can also be built as a module. If so, the module
150	  will be called nvmem_rockchip_efuse.
151
152config ROCKCHIP_OTP
153	tristate "Rockchip OTP controller support"
154	depends on ARCH_ROCKCHIP || COMPILE_TEST
155	depends on HAS_IOMEM
156	help
157	  This is a simple drive to dump specified values of Rockchip SoC
158	  from otp, such as cpu-leakage.
159
160	  This driver can also be built as a module. If so, the module
161	  will be called nvmem_rockchip_otp.
162
163config NVMEM_BCM_OCOTP
164	tristate "Broadcom On-Chip OTP Controller support"
165	depends on ARCH_BCM_IPROC || COMPILE_TEST
166	depends on HAS_IOMEM
167	default ARCH_BCM_IPROC
168	help
169	  Say y here to enable read/write access to the Broadcom OTP
170	  controller.
171
172	  This driver can also be built as a module. If so, the module
173	  will be called nvmem-bcm-ocotp.
174
175config NVMEM_STM32_ROMEM
176	tristate "STMicroelectronics STM32 factory-programmed memory support"
177	depends on ARCH_STM32 || COMPILE_TEST
178	help
179	  Say y here to enable read-only access for STMicroelectronics STM32
180	  factory-programmed memory area.
181
182	  This driver can also be built as a module. If so, the module
183	  will be called nvmem-stm32-romem.
184
185config NVMEM_SUNXI_SID
186	tristate "Allwinner SoCs SID support"
187	depends on ARCH_SUNXI
188	help
189	  This is a driver for the 'security ID' available on various Allwinner
190	  devices.
191
192	  This driver can also be built as a module. If so, the module
193	  will be called nvmem_sunxi_sid.
194
195config UNIPHIER_EFUSE
196	tristate "UniPhier SoCs eFuse support"
197	depends on ARCH_UNIPHIER || COMPILE_TEST
198	depends on HAS_IOMEM
199	help
200	  This is a simple driver to dump specified values of UniPhier SoC
201	  from eFuse.
202
203	  This driver can also be built as a module. If so, the module
204	  will be called nvmem-uniphier-efuse.
205
206config NVMEM_VF610_OCOTP
207	tristate "VF610 SoC OCOTP support"
208	depends on SOC_VF610 || COMPILE_TEST
209	depends on HAS_IOMEM
210	help
211	  This is a driver for the 'OCOTP' peripheral available on Vybrid
212	  devices like VF5xx and VF6xx.
213
214	  This driver can also be build as a module. If so, the module will
215	  be called nvmem-vf610-ocotp.
216
217config MESON_EFUSE
218	tristate "Amlogic Meson GX eFuse Support"
219	depends on (ARCH_MESON || COMPILE_TEST) && MESON_SM
220	help
221	  This is a driver to retrieve specific values from the eFuse found on
222	  the Amlogic Meson GX SoCs.
223
224	  This driver can also be built as a module. If so, the module
225	  will be called nvmem_meson_efuse.
226
227config MESON_MX_EFUSE
228	tristate "Amlogic Meson6/Meson8/Meson8b eFuse Support"
229	depends on ARCH_MESON || COMPILE_TEST
230	help
231	  This is a driver to retrieve specific values from the eFuse found on
232	  the Amlogic Meson6, Meson8 and Meson8b SoCs.
233
234	  This driver can also be built as a module. If so, the module
235	  will be called nvmem_meson_mx_efuse.
236
237config NVMEM_SNVS_LPGPR
238	tristate "Support for Low Power General Purpose Register"
239	depends on ARCH_MXC || COMPILE_TEST
240	help
241	  This is a driver for Low Power General Purpose Register (LPGPR) available on
242	  i.MX6 and i.MX7 SoCs in Secure Non-Volatile Storage (SNVS) of this chip.
243
244	  This driver can also be built as a module. If so, the module
245	  will be called nvmem-snvs-lpgpr.
246
247config RAVE_SP_EEPROM
248	tristate "Rave SP EEPROM Support"
249	depends on RAVE_SP_CORE
250	help
251	  Say y here to enable Rave SP EEPROM support.
252
253config 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_ZYNQMP
265	bool "Xilinx ZYNQMP SoC nvmem firmware support"
266	depends on ARCH_ZYNQMP
267	help
268	  This is a driver to access hardware related data like
269	  soc revision, IDCODE... etc by using the firmware
270	  interface.
271
272	  If sure, say yes. If unsure, say no.
273
274config 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_RMEM
286	tristate "Reserved Memory Based Driver Support"
287	depends on HAS_IOMEM
288	help
289	  This driver maps reserved memory into an nvmem device. It might be
290	  useful to expose information left by firmware in memory.
291
292	  This driver can also be built as a module. If so, the module
293	  will be called nvmem-rmem.
294
295config NVMEM_BRCM_NVRAM
296	tristate "Broadcom's NVRAM support"
297	depends on ARCH_BCM_5301X || COMPILE_TEST
298	depends on HAS_IOMEM
299	help
300	  This driver provides support for Broadcom's NVRAM that can be accessed
301	  using I/O mapping.
302
303endif
304