GNU Linux-libre 6.8.9-gnu
[releases.git] / drivers / nvmem / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 menuconfig NVMEM
3         bool "NVMEM Support"
4         imply NVMEM_LAYOUTS
5         help
6           Support for NVMEM(Non Volatile Memory) devices like EEPROM, EFUSES...
7
8           This framework is designed to provide a generic interface to NVMEM
9           from both the Linux Kernel and the userspace.
10
11           If unsure, say no.
12
13 if NVMEM
14
15 config NVMEM_SYSFS
16         bool "/sys/bus/nvmem/devices/*/nvmem (sysfs interface)"
17         depends on SYSFS
18         default y
19         help
20          Say Y here to add a sysfs interface for NVMEM.
21
22          This interface is mostly used by userspace applications to
23          read/write directly into nvmem.
24
25 # Layouts
26
27 source "drivers/nvmem/layouts/Kconfig"
28
29 # Devices
30
31 config NVMEM_APPLE_EFUSES
32         tristate "Apple eFuse support"
33         depends on ARCH_APPLE || COMPILE_TEST
34         default ARCH_APPLE
35         help
36           Say y here to enable support for reading eFuses on Apple SoCs
37           such as the M1. These are e.g. used to store factory programmed
38           calibration data required for the PCIe or the USB-C PHY.
39
40           This driver can also be built as a module. If so, the module will
41           be called nvmem-apple-efuses.
42
43 config NVMEM_BCM_OCOTP
44         tristate "Broadcom On-Chip OTP Controller support"
45         depends on ARCH_BCM_IPROC || COMPILE_TEST
46         depends on HAS_IOMEM
47         default ARCH_BCM_IPROC
48         help
49           Say y here to enable read/write access to the Broadcom OTP
50           controller.
51
52           This driver can also be built as a module. If so, the module
53           will be called nvmem-bcm-ocotp.
54
55 config NVMEM_BRCM_NVRAM
56         tristate "Broadcom's NVRAM support"
57         depends on ARCH_BCM_5301X || COMPILE_TEST
58         depends on HAS_IOMEM
59         select GENERIC_NET_UTILS
60         help
61           This driver provides support for Broadcom's NVRAM that can be accessed
62           using I/O mapping.
63
64 config NVMEM_IMX_IIM
65         tristate "i.MX IC Identification Module support"
66         depends on ARCH_MXC || COMPILE_TEST
67         help
68           This is a driver for the IC Identification Module (IIM) available on
69           i.MX SoCs, providing access to 4 Kbits of programmable
70           eFuses.
71
72           This driver can also be built as a module. If so, the module
73           will be called nvmem-imx-iim.
74
75 config NVMEM_IMX_OCOTP
76         tristate "i.MX 6/7/8 On-Chip OTP Controller support"
77         depends on ARCH_MXC || COMPILE_TEST
78         depends on HAS_IOMEM
79         help
80           This is a driver for the On-Chip OTP Controller (OCOTP) available on
81           i.MX6 SoCs, providing access to 4 Kbits of one-time programmable
82           eFuses.
83
84           This driver can also be built as a module. If so, the module
85           will be called nvmem-imx-ocotp.
86
87 config NVMEM_IMX_OCOTP_ELE
88         tristate "i.MX On-Chip OTP Controller support"
89         depends on ARCH_MXC || COMPILE_TEST
90         depends on HAS_IOMEM
91         depends on OF
92         help
93           This is a driver for the On-Chip OTP Controller (OCOTP)
94           available on i.MX SoCs which has ELE.
95
96 config NVMEM_IMX_OCOTP_SCU
97         tristate "i.MX8 SCU On-Chip OTP Controller support"
98         depends on IMX_SCU
99         depends on HAVE_ARM_SMCCC
100         help
101           This is a driver for the SCU On-Chip OTP Controller (OCOTP)
102           available on i.MX8 SoCs.
103
104 config NVMEM_JZ4780_EFUSE
105         tristate "JZ4780 EFUSE Memory Support"
106         depends on MACH_INGENIC || COMPILE_TEST
107         depends on HAS_IOMEM
108         depends on OF
109         select REGMAP_MMIO
110         help
111           Say Y here to include support for JZ4780 efuse memory found on
112           all JZ4780 SoC based devices.
113           To compile this driver as a module, choose M here: the module
114           will be called nvmem_jz4780_efuse.
115
116 config NVMEM_LAN9662_OTPC
117         tristate "Microchip LAN9662 OTP controller support"
118         depends on SOC_LAN966 || COMPILE_TEST
119         depends on HAS_IOMEM
120         help
121           This driver enables the OTP controller available on Microchip LAN9662
122           SoCs. It controls the access to the OTP memory connected to it.
123
124 config NVMEM_LAYERSCAPE_SFP
125         tristate "Layerscape SFP (Security Fuse Processor) support"
126         depends on ARCH_LAYERSCAPE || COMPILE_TEST
127         depends on HAS_IOMEM
128         select REGMAP_MMIO
129         help
130           This driver provides support to read the eFuses on Freescale
131           Layerscape SoC's. For example, the vendor provides a per part
132           unique ID there.
133
134           This driver can also be built as a module. If so, the module
135           will be called layerscape-sfp.
136
137 config NVMEM_LPC18XX_EEPROM
138         tristate "NXP LPC18XX EEPROM Memory Support"
139         depends on ARCH_LPC18XX || COMPILE_TEST
140         depends on HAS_IOMEM
141         help
142           Say Y here to include support for NXP LPC18xx EEPROM memory found in
143           NXP LPC185x/3x and LPC435x/3x/2x/1x devices.
144           To compile this driver as a module, choose M here: the module
145           will be called nvmem_lpc18xx_eeprom.
146
147 config NVMEM_LPC18XX_OTP
148         tristate "NXP LPC18XX OTP Memory Support"
149         depends on ARCH_LPC18XX || COMPILE_TEST
150         depends on HAS_IOMEM
151         help
152           Say Y here to include support for NXP LPC18xx OTP memory found on
153           all LPC18xx and LPC43xx devices.
154           To compile this driver as a module, choose M here: the module
155           will be called nvmem_lpc18xx_otp.
156
157 config NVMEM_MESON_EFUSE
158         tristate "Amlogic Meson GX eFuse Support"
159         depends on (ARCH_MESON || COMPILE_TEST) && MESON_SM
160         help
161           This is a driver to retrieve specific values from the eFuse found on
162           the Amlogic Meson GX SoCs.
163
164           This driver can also be built as a module. If so, the module
165           will be called nvmem_meson_efuse.
166
167 config NVMEM_MESON_MX_EFUSE
168         tristate "Amlogic Meson6/Meson8/Meson8b eFuse Support"
169         depends on ARCH_MESON || COMPILE_TEST
170         help
171           This is a driver to retrieve specific values from the eFuse found on
172           the Amlogic Meson6, Meson8 and Meson8b SoCs.
173
174           This driver can also be built as a module. If so, the module
175           will be called nvmem_meson_mx_efuse.
176
177 config NVMEM_MICROCHIP_OTPC
178         tristate "Microchip OTPC support"
179         depends on ARCH_AT91 || COMPILE_TEST
180         help
181           This driver enable the OTP controller available on Microchip SAMA7G5
182           SoCs. It controls the access to the OTP memory connected to it.
183
184 config NVMEM_MTK_EFUSE
185         tristate "Mediatek SoCs EFUSE support"
186         depends on ARCH_MEDIATEK || COMPILE_TEST
187         depends on HAS_IOMEM
188         help
189           This is a driver to access hardware related data like sensor
190           calibration, HDMI impedance etc.
191
192           This driver can also be built as a module. If so, the module
193           will be called efuse-mtk.
194
195 config NVMEM_MXS_OCOTP
196         tristate "Freescale MXS On-Chip OTP Memory Support"
197         depends on ARCH_MXS || COMPILE_TEST
198         depends on HAS_IOMEM
199         help
200           If you say Y here, you will get readonly access to the
201           One Time Programmable memory pages that are stored
202           on the Freescale i.MX23/i.MX28 processor.
203
204           This driver can also be built as a module. If so, the module
205           will be called nvmem-mxs-ocotp.
206
207 config NVMEM_NINTENDO_OTP
208         tristate "Nintendo Wii and Wii U OTP Support"
209         depends on WII || COMPILE_TEST
210         help
211           This is a driver exposing the OTP of a Nintendo Wii or Wii U console.
212
213           This memory contains common and per-console keys, signatures and
214           related data required to access peripherals.
215
216           This driver can also be built as a module. If so, the module
217           will be called nvmem-nintendo-otp.
218
219 config NVMEM_QCOM_QFPROM
220         tristate "QCOM QFPROM Support"
221         depends on ARCH_QCOM || COMPILE_TEST
222         depends on HAS_IOMEM
223         help
224           Say y here to enable QFPROM support. The QFPROM provides access
225           functions for QFPROM data to rest of the drivers via nvmem interface.
226
227           This driver can also be built as a module. If so, the module
228           will be called nvmem_qfprom.
229
230 config NVMEM_QCOM_SEC_QFPROM
231         tristate "QCOM SECURE QFPROM Support"
232         depends on ARCH_QCOM || COMPILE_TEST
233         depends on HAS_IOMEM
234         depends on OF
235         select QCOM_SCM
236         help
237           Say y here to enable secure QFPROM support. The secure QFPROM provides access
238           functions for QFPROM data to rest of the drivers via nvmem interface.
239
240           This driver can also be built as a module. If so, the module will be called
241           nvmem_sec_qfprom.
242
243 config NVMEM_RAVE_SP_EEPROM
244         tristate "Rave SP EEPROM Support"
245         depends on RAVE_SP_CORE
246         help
247           Say y here to enable Rave SP EEPROM support.
248
249 config NVMEM_RMEM
250         tristate "Reserved Memory Based Driver Support"
251         depends on HAS_IOMEM
252         help
253           This driver maps reserved memory into an nvmem device. It might be
254           useful to expose information left by firmware in memory.
255
256           This driver can also be built as a module. If so, the module
257           will be called nvmem-rmem.
258
259 config NVMEM_ROCKCHIP_EFUSE
260         tristate "Rockchip eFuse Support"
261         depends on ARCH_ROCKCHIP || COMPILE_TEST
262         depends on HAS_IOMEM
263         help
264           This is a simple driver to dump specified values of Rockchip SoC
265           from eFuse, such as cpu-leakage.
266
267           This driver can also be built as a module. If so, the module
268           will be called nvmem_rockchip_efuse.
269
270 config NVMEM_ROCKCHIP_OTP
271         tristate "Rockchip OTP controller support"
272         depends on ARCH_ROCKCHIP || COMPILE_TEST
273         depends on HAS_IOMEM
274         help
275           This is a simple driver to dump specified values of Rockchip SoC
276           from OTP, such as cpu-leakage.
277
278           This driver can also be built as a module. If so, the module
279           will be called nvmem_rockchip_otp.
280
281 config NVMEM_SC27XX_EFUSE
282         tristate "Spreadtrum SC27XX eFuse Support"
283         depends on MFD_SC27XX_PMIC || COMPILE_TEST
284         depends on HAS_IOMEM
285         help
286           This is a simple driver to dump specified values of Spreadtrum
287           SC27XX PMICs from eFuse.
288
289           This driver can also be built as a module. If so, the module
290           will be called nvmem-sc27xx-efuse.
291
292 config NVMEM_SNVS_LPGPR
293         tristate "Support for Low Power General Purpose Register"
294         depends on ARCH_MXC || COMPILE_TEST
295         help
296           This is a driver for Low Power General Purpose Register (LPGPR) available on
297           i.MX6 and i.MX7 SoCs in Secure Non-Volatile Storage (SNVS) of this chip.
298
299           This driver can also be built as a module. If so, the module
300           will be called nvmem-snvs-lpgpr.
301
302 config NVMEM_SPMI_SDAM
303         tristate "SPMI SDAM Support"
304         depends on SPMI
305         help
306           This driver supports the Shared Direct Access Memory Module on
307           Qualcomm Technologies, Inc. PMICs. It provides the clients
308           an interface to read/write to the SDAM module's shared memory.
309
310 config NVMEM_SPRD_EFUSE
311         tristate "Spreadtrum SoC eFuse Support"
312         depends on ARCH_SPRD || COMPILE_TEST
313         depends on HAS_IOMEM
314         help
315           This is a simple driver to dump specified values of Spreadtrum
316           SoCs from eFuse.
317
318           This driver can also be built as a module. If so, the module
319           will be called nvmem-sprd-efuse.
320
321 config NVMEM_STM32_BSEC_OPTEE_TA
322         def_bool NVMEM_STM32_ROMEM && OPTEE
323         help
324           Say y here to enable the accesses to STM32MP SoC OTPs by the OP-TEE
325           trusted application STM32MP BSEC.
326
327           This library is a used by stm32-romem driver or included in the module
328           called nvmem-stm32-romem.
329
330 config NVMEM_STM32_ROMEM
331         tristate "STMicroelectronics STM32 factory-programmed memory support"
332         depends on ARCH_STM32 || COMPILE_TEST
333         depends on OPTEE || !OPTEE
334         help
335           Say y here to enable read-only access for STMicroelectronics STM32
336           factory-programmed memory area.
337
338           This driver can also be built as a module. If so, the module
339           will be called nvmem-stm32-romem.
340
341 config NVMEM_SUNPLUS_OCOTP
342         tristate "Sunplus SoC OTP support"
343         depends on SOC_SP7021 || COMPILE_TEST
344         depends on HAS_IOMEM
345         help
346           This is a driver for the On-chip OTP controller (OCOTP) available
347           on Sunplus SoCs. It provides access to 128 bytes of one-time
348           programmable eFuse.
349
350           This driver can also be built as a module. If so, the module
351           will be called nvmem-sunplus-ocotp.
352
353 config NVMEM_SUNXI_SID
354         tristate "Allwinner SoCs SID support"
355         depends on ARCH_SUNXI
356         help
357           This is a driver for the 'security ID' available on various Allwinner
358           devices.
359
360           This driver can also be built as a module. If so, the module
361           will be called nvmem_sunxi_sid.
362
363 config NVMEM_U_BOOT_ENV
364         tristate "U-Boot environment variables support"
365         depends on OF && MTD
366         select CRC32
367         select GENERIC_NET_UTILS
368         help
369           U-Boot stores its setup as environment variables. This driver adds
370           support for verifying & exporting such data. It also exposes variables
371           as NVMEM cells so they can be referenced by other drivers.
372
373           Currently this drivers works only with env variables on top of MTD.
374
375           If compiled as module it will be called nvmem_u-boot-env.
376
377 config NVMEM_UNIPHIER_EFUSE
378         tristate "UniPhier SoCs eFuse support"
379         depends on ARCH_UNIPHIER || COMPILE_TEST
380         depends on HAS_IOMEM
381         help
382           This is a simple driver to dump specified values of UniPhier SoC
383           from eFuse.
384
385           This driver can also be built as a module. If so, the module
386           will be called nvmem-uniphier-efuse.
387
388 config NVMEM_VF610_OCOTP
389         tristate "VF610 SoC OCOTP support"
390         depends on SOC_VF610 || COMPILE_TEST
391         depends on HAS_IOMEM
392         help
393           This is a driver for the 'OCOTP' peripheral available on Vybrid
394           devices like VF5xx and VF6xx.
395
396           This driver can also be build as a module. If so, the module will
397           be called nvmem-vf610-ocotp.
398
399 config NVMEM_ZYNQMP
400         tristate "Xilinx ZYNQMP SoC nvmem firmware support"
401         depends on ARCH_ZYNQMP
402         help
403           This is a driver to access hardware related data like
404           soc revision, IDCODE... etc by using the firmware
405           interface.
406
407           If sure, say yes. If unsure, say no.
408
409 config NVMEM_QORIQ_EFUSE
410         tristate "NXP QorIQ eFuse support"
411         depends on PPC_85xx || COMPILE_TEST
412         depends on HAS_IOMEM
413         help
414           This driver provides read support for the eFuses (SFP) on NXP QorIQ
415           series SoC's. This includes secure boot settings, the globally unique
416           NXP ID 'FUIDR' and the OEM unique ID 'OUIDR'.
417
418           This driver can also be built as a module. If so, the module
419           will be called nvmem_qoriq_efuse.
420
421 endif