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_QNAP_MCU_EEPROM 289 tristate "QNAP MCU EEPROM Support" 290 depends on MFD_QNAP_MCU 291 help 292 Say y here to enable support for accessing the EEPROM attached to 293 QNAP MCU devices. This EEPROM contains additional runtime device 294 information, like MAC addresses for ethernet devices that do not 295 contain their own mac storage. 296 297config NVMEM_RAVE_SP_EEPROM 298 tristate "Rave SP EEPROM Support" 299 depends on RAVE_SP_CORE 300 help 301 Say y here to enable Rave SP EEPROM support. 302 303config NVMEM_RCAR_EFUSE 304 tristate "Renesas R-Car Gen4 E-FUSE support" 305 depends on (ARCH_RENESAS && ARM64) || COMPILE_TEST 306 depends on NVMEM 307 help 308 Enable support for reading the fuses in the E-FUSE or OTP 309 non-volatile memory block on Renesas R-Car Gen4 SoCs. 310 311 This driver can also be built as a module. If so, the module 312 will be called nvmem-rcar-efuse. 313 314config NVMEM_RMEM 315 tristate "Reserved Memory Based Driver Support" 316 depends on HAS_IOMEM 317 select CRC32 318 help 319 This driver maps reserved memory into an nvmem device. It might be 320 useful to expose information left by firmware in memory. 321 322 This driver can also be built as a module. If so, the module 323 will be called nvmem-rmem. 324 325config NVMEM_ROCKCHIP_EFUSE 326 tristate "Rockchip eFuse Support" 327 depends on ARCH_ROCKCHIP || COMPILE_TEST 328 depends on HAS_IOMEM 329 help 330 This is a simple driver to dump specified values of Rockchip SoC 331 from eFuse, such as cpu-leakage. 332 333 This driver can also be built as a module. If so, the module 334 will be called nvmem_rockchip_efuse. 335 336config NVMEM_ROCKCHIP_OTP 337 tristate "Rockchip OTP controller support" 338 depends on ARCH_ROCKCHIP || COMPILE_TEST 339 depends on HAS_IOMEM 340 help 341 This is a simple driver to dump specified values of Rockchip SoC 342 from OTP, such as cpu-leakage. 343 344 This driver can also be built as a module. If so, the module 345 will be called nvmem_rockchip_otp. 346 347config NVMEM_SC27XX_EFUSE 348 tristate "Spreadtrum SC27XX eFuse Support" 349 depends on MFD_SC27XX_PMIC || COMPILE_TEST 350 depends on HAS_IOMEM 351 help 352 This is a simple driver to dump specified values of Spreadtrum 353 SC27XX PMICs from eFuse. 354 355 This driver can also be built as a module. If so, the module 356 will be called nvmem-sc27xx-efuse. 357 358config NVMEM_SNVS_LPGPR 359 tristate "Support for Low Power General Purpose Register" 360 depends on ARCH_MXC || COMPILE_TEST 361 help 362 This is a driver for Low Power General Purpose Register (LPGPR) available on 363 i.MX6 and i.MX7 SoCs in Secure Non-Volatile Storage (SNVS) of this chip. 364 365 This driver can also be built as a module. If so, the module 366 will be called nvmem-snvs-lpgpr. 367 368config NVMEM_SPMI_SDAM 369 tristate "SPMI SDAM Support" 370 depends on SPMI 371 help 372 This driver supports the Shared Direct Access Memory Module on 373 Qualcomm Technologies, Inc. PMICs. It provides the clients 374 an interface to read/write to the SDAM module's shared memory. 375 376config NVMEM_SPRD_EFUSE 377 tristate "Spreadtrum SoC eFuse Support" 378 depends on ARCH_SPRD || COMPILE_TEST 379 depends on HAS_IOMEM 380 help 381 This is a simple driver to dump specified values of Spreadtrum 382 SoCs from eFuse. 383 384 This driver can also be built as a module. If so, the module 385 will be called nvmem-sprd-efuse. 386 387config NVMEM_STM32_BSEC_OPTEE_TA 388 def_bool NVMEM_STM32_ROMEM && OPTEE 389 help 390 Say y here to enable the accesses to STM32MP SoC OTPs by the OP-TEE 391 trusted application STM32MP BSEC. 392 393 This library is a used by stm32-romem driver or included in the module 394 called nvmem-stm32-romem. 395 396config NVMEM_STM32_ROMEM 397 tristate "STMicroelectronics STM32 factory-programmed memory support" 398 depends on ARCH_STM32 || COMPILE_TEST 399 depends on OPTEE || !OPTEE 400 help 401 Say y here to enable read-only access for STMicroelectronics STM32 402 factory-programmed memory area. 403 404 This driver can also be built as a module. If so, the module 405 will be called nvmem-stm32-romem. 406 407config NVMEM_SUNPLUS_OCOTP 408 tristate "Sunplus SoC OTP support" 409 depends on SOC_SP7021 || COMPILE_TEST 410 depends on HAS_IOMEM 411 help 412 This is a driver for the On-chip OTP controller (OCOTP) available 413 on Sunplus SoCs. It provides access to 128 bytes of one-time 414 programmable eFuse. 415 416 This driver can also be built as a module. If so, the module 417 will be called nvmem-sunplus-ocotp. 418 419config NVMEM_SUNXI_SID 420 tristate "Allwinner SoCs SID support" 421 depends on ARCH_SUNXI 422 help 423 This is a driver for the 'security ID' available on various Allwinner 424 devices. 425 426 This driver can also be built as a module. If so, the module 427 will be called nvmem_sunxi_sid. 428 429config NVMEM_U_BOOT_ENV 430 tristate "U-Boot environment variables support" 431 depends on OF && MTD 432 select NVMEM_LAYOUT_U_BOOT_ENV 433 help 434 U-Boot stores its setup as environment variables. This driver adds 435 support for verifying & exporting such data. It also exposes variables 436 as NVMEM cells so they can be referenced by other drivers. 437 438 Currently this drivers works only with env variables on top of MTD. 439 440 If compiled as module it will be called nvmem_u-boot-env. 441 442config NVMEM_UNIPHIER_EFUSE 443 tristate "UniPhier SoCs eFuse support" 444 depends on ARCH_UNIPHIER || COMPILE_TEST 445 depends on HAS_IOMEM 446 help 447 This is a simple driver to dump specified values of UniPhier SoC 448 from eFuse. 449 450 This driver can also be built as a module. If so, the module 451 will be called nvmem-uniphier-efuse. 452 453config NVMEM_VF610_OCOTP 454 tristate "VF610 SoC OCOTP support" 455 depends on SOC_VF610 || COMPILE_TEST 456 depends on HAS_IOMEM 457 help 458 This is a driver for the 'OCOTP' peripheral available on Vybrid 459 devices like VF5xx and VF6xx. 460 461 This driver can also be build as a module. If so, the module will 462 be called nvmem-vf610-ocotp. 463 464config NVMEM_ZYNQMP 465 tristate "Xilinx ZYNQMP SoC nvmem firmware support" 466 depends on ARCH_ZYNQMP 467 help 468 This is a driver to access hardware related data like 469 soc revision, IDCODE... etc by using the firmware 470 interface. 471 472 If sure, say yes. If unsure, say no. 473 474config NVMEM_QORIQ_EFUSE 475 tristate "NXP QorIQ eFuse support" 476 depends on PPC_85xx || COMPILE_TEST 477 depends on HAS_IOMEM 478 help 479 This driver provides read support for the eFuses (SFP) on NXP QorIQ 480 series SoC's. This includes secure boot settings, the globally unique 481 NXP ID 'FUIDR' and the OEM unique ID 'OUIDR'. 482 483 This driver can also be built as a module. If so, the module 484 will be called nvmem_qoriq_efuse. 485 486endif 487