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