nvmem: core: introduce NVMEM layouts
[platform/kernel/linux-starfive.git] / drivers / nvmem / Kconfig
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         help
59           This driver provides support for Broadcom's NVRAM that can be accessed
60           using I/O mapping.
61
62 config 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
73 config 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
85 config 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
93 config 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
105 config 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
113 config 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
126 config 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
136 config 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
146 config 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
156 config 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
166 config 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
173 config 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
184 config 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
196 config 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
208 config 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
219 config 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
225 config 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
235 config 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
246 config 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
257 config 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
268 config 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
278 config 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
286 config 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
297 config 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
306 config 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
317 config 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
329 config 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
339 config NVMEM_U_BOOT_ENV
340         tristate "U-Boot environment variables support"
341         depends on OF && MTD
342         select CRC32
343         help
344           U-Boot stores its setup as environment variables. This driver adds
345           support for verifying & exporting such data. It also exposes variables
346           as NVMEM cells so they can be referenced by other drivers.
347
348           Currently this drivers works only with env variables on top of MTD.
349
350           If compiled as module it will be called nvmem_u-boot-env.
351
352 config NVMEM_UNIPHIER_EFUSE
353         tristate "UniPhier SoCs eFuse support"
354         depends on ARCH_UNIPHIER || COMPILE_TEST
355         depends on HAS_IOMEM
356         help
357           This is a simple driver to dump specified values of UniPhier SoC
358           from eFuse.
359
360           This driver can also be built as a module. If so, the module
361           will be called nvmem-uniphier-efuse.
362
363 config NVMEM_VF610_OCOTP
364         tristate "VF610 SoC OCOTP support"
365         depends on SOC_VF610 || COMPILE_TEST
366         depends on HAS_IOMEM
367         help
368           This is a driver for the 'OCOTP' peripheral available on Vybrid
369           devices like VF5xx and VF6xx.
370
371           This driver can also be build as a module. If so, the module will
372           be called nvmem-vf610-ocotp.
373
374 config NVMEM_ZYNQMP
375         tristate "Xilinx ZYNQMP SoC nvmem firmware support"
376         depends on ARCH_ZYNQMP
377         help
378           This is a driver to access hardware related data like
379           soc revision, IDCODE... etc by using the firmware
380           interface.
381
382           If sure, say yes. If unsure, say no.
383
384 endif