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