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