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