1# SPDX-License-Identifier: GPL-2.0-only 2menuconfig 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 13if NVMEM 14 15config 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 27source "drivers/nvmem/layouts/Kconfig" 28 29# Devices 30 31config 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 43config 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 55config 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 64config 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 75config 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 87config 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 96config 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 104config 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 116config 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 124config 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 137config 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 147config 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 157config NVMEM_MAX77759 158 tristate "Maxim Integrated MAX77759 NVMEM Support" 159 depends on MFD_MAX77759 160 default MFD_MAX77759 161 help 162 Say Y here to include support for the user-accessible storage found 163 in Maxim Integrated MAX77759 PMICs. This IC provides space for 30 164 bytes of storage. 165 166 This driver can also be built as a module. If so, the module 167 will be called nvmem-max77759. 168 169config NVMEM_MESON_EFUSE 170 tristate "Amlogic Meson GX eFuse Support" 171 depends on (ARCH_MESON || COMPILE_TEST) && MESON_SM 172 help 173 This is a driver to retrieve specific values from the eFuse found on 174 the Amlogic Meson GX SoCs. 175 176 This driver can also be built as a module. If so, the module 177 will be called nvmem_meson_efuse. 178 179config NVMEM_MESON_MX_EFUSE 180 tristate "Amlogic Meson6/Meson8/Meson8b eFuse Support" 181 depends on ARCH_MESON || COMPILE_TEST 182 help 183 This is a driver to retrieve specific values from the eFuse found on 184 the Amlogic Meson6, Meson8 and Meson8b SoCs. 185 186 This driver can also be built as a module. If so, the module 187 will be called nvmem_meson_mx_efuse. 188 189config NVMEM_MICROCHIP_OTPC 190 tristate "Microchip OTPC support" 191 depends on ARCH_AT91 || COMPILE_TEST 192 help 193 This driver enable the OTP controller available on Microchip SAMA7G5 194 SoCs. It controls the access to the OTP memory connected to it. 195 196config NVMEM_MTK_EFUSE 197 tristate "Mediatek SoCs EFUSE support" 198 depends on ARCH_MEDIATEK || COMPILE_TEST 199 depends on HAS_IOMEM 200 help 201 This is a driver to access hardware related data like sensor 202 calibration, HDMI impedance etc. 203 204 This driver can also be built as a module. If so, the module 205 will be called efuse-mtk. 206 207config NVMEM_MXS_OCOTP 208 tristate "Freescale MXS On-Chip OTP Memory Support" 209 depends on ARCH_MXS || COMPILE_TEST 210 depends on HAS_IOMEM 211 help 212 If you say Y here, you will get readonly access to the 213 One Time Programmable memory pages that are stored 214 on the Freescale i.MX23/i.MX28 processor. 215 216 This driver can also be built as a module. If so, the module 217 will be called nvmem-mxs-ocotp. 218 219config NVMEM_NINTENDO_OTP 220 tristate "Nintendo Wii and Wii U OTP Support" 221 depends on WII || COMPILE_TEST 222 help 223 This is a driver exposing the OTP of a Nintendo Wii or Wii U console. 224 225 This memory contains common and per-console keys, signatures and 226 related data required to access peripherals. 227 228 This driver can also be built as a module. If so, the module 229 will be called nvmem-nintendo-otp. 230 231config NVMEM_QCOM_QFPROM 232 tristate "QCOM QFPROM Support" 233 depends on ARCH_QCOM || COMPILE_TEST 234 depends on HAS_IOMEM 235 help 236 Say y here to enable QFPROM support. The 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 240 will be called nvmem_qfprom. 241 242config NVMEM_QCOM_SEC_QFPROM 243 tristate "QCOM SECURE QFPROM Support" 244 depends on ARCH_QCOM || COMPILE_TEST 245 depends on HAS_IOMEM 246 depends on OF 247 select QCOM_SCM 248 help 249 Say y here to enable secure QFPROM support. The secure QFPROM provides access 250 functions for QFPROM data to rest of the drivers via nvmem interface. 251 252 This driver can also be built as a module. If so, the module will be called 253 nvmem_sec_qfprom. 254 255config NVMEM_RAVE_SP_EEPROM 256 tristate "Rave SP EEPROM Support" 257 depends on RAVE_SP_CORE 258 help 259 Say y here to enable Rave SP EEPROM support. 260 261config NVMEM_RCAR_EFUSE 262 tristate "Renesas R-Car Gen4 E-FUSE support" 263 depends on (ARCH_RENESAS && ARM64) || COMPILE_TEST 264 depends on NVMEM 265 help 266 Enable support for reading the fuses in the E-FUSE or OTP 267 non-volatile memory block on Renesas R-Car Gen4 SoCs. 268 269 This driver can also be built as a module. If so, the module 270 will be called nvmem-rcar-efuse. 271 272config NVMEM_RMEM 273 tristate "Reserved Memory Based Driver Support" 274 depends on HAS_IOMEM 275 help 276 This driver maps reserved memory into an nvmem device. It might be 277 useful to expose information left by firmware in memory. 278 279 This driver can also be built as a module. If so, the module 280 will be called nvmem-rmem. 281 282config NVMEM_ROCKCHIP_EFUSE 283 tristate "Rockchip eFuse Support" 284 depends on ARCH_ROCKCHIP || COMPILE_TEST 285 depends on HAS_IOMEM 286 help 287 This is a simple driver to dump specified values of Rockchip SoC 288 from eFuse, such as cpu-leakage. 289 290 This driver can also be built as a module. If so, the module 291 will be called nvmem_rockchip_efuse. 292 293config NVMEM_ROCKCHIP_OTP 294 tristate "Rockchip OTP controller support" 295 depends on ARCH_ROCKCHIP || COMPILE_TEST 296 depends on HAS_IOMEM 297 help 298 This is a simple driver to dump specified values of Rockchip SoC 299 from OTP, such as cpu-leakage. 300 301 This driver can also be built as a module. If so, the module 302 will be called nvmem_rockchip_otp. 303 304config NVMEM_SC27XX_EFUSE 305 tristate "Spreadtrum SC27XX eFuse Support" 306 depends on MFD_SC27XX_PMIC || COMPILE_TEST 307 depends on HAS_IOMEM 308 help 309 This is a simple driver to dump specified values of Spreadtrum 310 SC27XX PMICs from eFuse. 311 312 This driver can also be built as a module. If so, the module 313 will be called nvmem-sc27xx-efuse. 314 315config NVMEM_SNVS_LPGPR 316 tristate "Support for Low Power General Purpose Register" 317 depends on ARCH_MXC || COMPILE_TEST 318 help 319 This is a driver for Low Power General Purpose Register (LPGPR) available on 320 i.MX6 and i.MX7 SoCs in Secure Non-Volatile Storage (SNVS) of this chip. 321 322 This driver can also be built as a module. If so, the module 323 will be called nvmem-snvs-lpgpr. 324 325config NVMEM_SPMI_SDAM 326 tristate "SPMI SDAM Support" 327 depends on SPMI 328 help 329 This driver supports the Shared Direct Access Memory Module on 330 Qualcomm Technologies, Inc. PMICs. It provides the clients 331 an interface to read/write to the SDAM module's shared memory. 332 333config NVMEM_SPRD_EFUSE 334 tristate "Spreadtrum SoC eFuse Support" 335 depends on ARCH_SPRD || COMPILE_TEST 336 depends on HAS_IOMEM 337 help 338 This is a simple driver to dump specified values of Spreadtrum 339 SoCs from eFuse. 340 341 This driver can also be built as a module. If so, the module 342 will be called nvmem-sprd-efuse. 343 344config NVMEM_STM32_BSEC_OPTEE_TA 345 def_bool NVMEM_STM32_ROMEM && OPTEE 346 help 347 Say y here to enable the accesses to STM32MP SoC OTPs by the OP-TEE 348 trusted application STM32MP BSEC. 349 350 This library is a used by stm32-romem driver or included in the module 351 called nvmem-stm32-romem. 352 353config NVMEM_STM32_ROMEM 354 tristate "STMicroelectronics STM32 factory-programmed memory support" 355 depends on ARCH_STM32 || COMPILE_TEST 356 depends on OPTEE || !OPTEE 357 help 358 Say y here to enable read-only access for STMicroelectronics STM32 359 factory-programmed memory area. 360 361 This driver can also be built as a module. If so, the module 362 will be called nvmem-stm32-romem. 363 364config NVMEM_SUNPLUS_OCOTP 365 tristate "Sunplus SoC OTP support" 366 depends on SOC_SP7021 || COMPILE_TEST 367 depends on HAS_IOMEM 368 help 369 This is a driver for the On-chip OTP controller (OCOTP) available 370 on Sunplus SoCs. It provides access to 128 bytes of one-time 371 programmable eFuse. 372 373 This driver can also be built as a module. If so, the module 374 will be called nvmem-sunplus-ocotp. 375 376config NVMEM_SUNXI_SID 377 tristate "Allwinner SoCs SID support" 378 depends on ARCH_SUNXI 379 help 380 This is a driver for the 'security ID' available on various Allwinner 381 devices. 382 383 This driver can also be built as a module. If so, the module 384 will be called nvmem_sunxi_sid. 385 386config NVMEM_U_BOOT_ENV 387 tristate "U-Boot environment variables support" 388 depends on OF && MTD 389 select NVMEM_LAYOUT_U_BOOT_ENV 390 help 391 U-Boot stores its setup as environment variables. This driver adds 392 support for verifying & exporting such data. It also exposes variables 393 as NVMEM cells so they can be referenced by other drivers. 394 395 Currently this drivers works only with env variables on top of MTD. 396 397 If compiled as module it will be called nvmem_u-boot-env. 398 399config NVMEM_UNIPHIER_EFUSE 400 tristate "UniPhier SoCs eFuse support" 401 depends on ARCH_UNIPHIER || COMPILE_TEST 402 depends on HAS_IOMEM 403 help 404 This is a simple driver to dump specified values of UniPhier SoC 405 from eFuse. 406 407 This driver can also be built as a module. If so, the module 408 will be called nvmem-uniphier-efuse. 409 410config NVMEM_VF610_OCOTP 411 tristate "VF610 SoC OCOTP support" 412 depends on SOC_VF610 || COMPILE_TEST 413 depends on HAS_IOMEM 414 help 415 This is a driver for the 'OCOTP' peripheral available on Vybrid 416 devices like VF5xx and VF6xx. 417 418 This driver can also be build as a module. If so, the module will 419 be called nvmem-vf610-ocotp. 420 421config NVMEM_ZYNQMP 422 tristate "Xilinx ZYNQMP SoC nvmem firmware support" 423 depends on ARCH_ZYNQMP 424 help 425 This is a driver to access hardware related data like 426 soc revision, IDCODE... etc by using the firmware 427 interface. 428 429 If sure, say yes. If unsure, say no. 430 431config NVMEM_QORIQ_EFUSE 432 tristate "NXP QorIQ eFuse support" 433 depends on PPC_85xx || COMPILE_TEST 434 depends on HAS_IOMEM 435 help 436 This driver provides read support for the eFuses (SFP) on NXP QorIQ 437 series SoC's. This includes secure boot settings, the globally unique 438 NXP ID 'FUIDR' and the OEM unique ID 'OUIDR'. 439 440 This driver can also be built as a module. If so, the module 441 will be called nvmem_qoriq_efuse. 442 443endif 444