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