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