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