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