0001 # SPDX-License-Identifier: GPL-2.0-only
0002 menuconfig NVMEM
0003 bool "NVMEM Support"
0004 help
0005 Support for NVMEM(Non Volatile Memory) devices like EEPROM, EFUSES...
0006
0007 This framework is designed to provide a generic interface to NVMEM
0008 from both the Linux Kernel and the userspace.
0009
0010 If unsure, say no.
0011
0012 if NVMEM
0013
0014 config NVMEM_SYSFS
0015 bool "/sys/bus/nvmem/devices/*/nvmem (sysfs interface)"
0016 depends on SYSFS
0017 default y
0018 help
0019 Say Y here to add a sysfs interface for NVMEM.
0020
0021 This interface is mostly used by userspace applications to
0022 read/write directly into nvmem.
0023
0024 config NVMEM_IMX_IIM
0025 tristate "i.MX IC Identification Module support"
0026 depends on ARCH_MXC || COMPILE_TEST
0027 help
0028 This is a driver for the IC Identification Module (IIM) available on
0029 i.MX SoCs, providing access to 4 Kbits of programmable
0030 eFuses.
0031
0032 This driver can also be built as a module. If so, the module
0033 will be called nvmem-imx-iim.
0034
0035 config NVMEM_IMX_OCOTP
0036 tristate "i.MX 6/7/8 On-Chip OTP Controller support"
0037 depends on ARCH_MXC || COMPILE_TEST
0038 depends on HAS_IOMEM
0039 help
0040 This is a driver for the On-Chip OTP Controller (OCOTP) available on
0041 i.MX6 SoCs, providing access to 4 Kbits of one-time programmable
0042 eFuses.
0043
0044 This driver can also be built as a module. If so, the module
0045 will be called nvmem-imx-ocotp.
0046
0047 config NVMEM_IMX_OCOTP_SCU
0048 tristate "i.MX8 SCU On-Chip OTP Controller support"
0049 depends on IMX_SCU
0050 depends on HAVE_ARM_SMCCC
0051 help
0052 This is a driver for the SCU On-Chip OTP Controller (OCOTP)
0053 available on i.MX8 SoCs.
0054
0055 config JZ4780_EFUSE
0056 tristate "JZ4780 EFUSE Memory Support"
0057 depends on MACH_INGENIC || COMPILE_TEST
0058 depends on HAS_IOMEM
0059 depends on OF
0060 select REGMAP_MMIO
0061 help
0062 Say Y here to include support for JZ4780 efuse memory found on
0063 all JZ4780 SoC based devices.
0064 To compile this driver as a module, choose M here: the module
0065 will be called nvmem_jz4780_efuse.
0066
0067 config NVMEM_LPC18XX_EEPROM
0068 tristate "NXP LPC18XX EEPROM Memory Support"
0069 depends on ARCH_LPC18XX || COMPILE_TEST
0070 depends on HAS_IOMEM
0071 help
0072 Say Y here to include support for NXP LPC18xx EEPROM memory found in
0073 NXP LPC185x/3x and LPC435x/3x/2x/1x devices.
0074 To compile this driver as a module, choose M here: the module
0075 will be called nvmem_lpc18xx_eeprom.
0076
0077 config NVMEM_LPC18XX_OTP
0078 tristate "NXP LPC18XX OTP Memory Support"
0079 depends on ARCH_LPC18XX || COMPILE_TEST
0080 depends on HAS_IOMEM
0081 help
0082 Say Y here to include support for NXP LPC18xx OTP memory found on
0083 all LPC18xx and LPC43xx devices.
0084 To compile this driver as a module, choose M here: the module
0085 will be called nvmem_lpc18xx_otp.
0086
0087 config NVMEM_MXS_OCOTP
0088 tristate "Freescale MXS On-Chip OTP Memory Support"
0089 depends on ARCH_MXS || COMPILE_TEST
0090 depends on HAS_IOMEM
0091 help
0092 If you say Y here, you will get readonly access to the
0093 One Time Programmable memory pages that are stored
0094 on the Freescale i.MX23/i.MX28 processor.
0095
0096 This driver can also be built as a module. If so, the module
0097 will be called nvmem-mxs-ocotp.
0098
0099 config MTK_EFUSE
0100 tristate "Mediatek SoCs EFUSE support"
0101 depends on ARCH_MEDIATEK || COMPILE_TEST
0102 depends on HAS_IOMEM
0103 help
0104 This is a driver to access hardware related data like sensor
0105 calibration, HDMI impedance etc.
0106
0107 This driver can also be built as a module. If so, the module
0108 will be called efuse-mtk.
0109
0110 config MICROCHIP_OTPC
0111 tristate "Microchip OTPC support"
0112 depends on ARCH_AT91 || COMPILE_TEST
0113 help
0114 This driver enable the OTP controller available on Microchip SAMA7G5
0115 SoCs. It controlls the access to the OTP memory connected to it.
0116
0117 config NVMEM_NINTENDO_OTP
0118 tristate "Nintendo Wii and Wii U OTP Support"
0119 depends on WII || COMPILE_TEST
0120 help
0121 This is a driver exposing the OTP of a Nintendo Wii or Wii U console.
0122
0123 This memory contains common and per-console keys, signatures and
0124 related data required to access peripherals.
0125
0126 This driver can also be built as a module. If so, the module
0127 will be called nvmem-nintendo-otp.
0128
0129 config QCOM_QFPROM
0130 tristate "QCOM QFPROM Support"
0131 depends on ARCH_QCOM || COMPILE_TEST
0132 depends on HAS_IOMEM
0133 help
0134 Say y here to enable QFPROM support. The QFPROM provides access
0135 functions for QFPROM data to rest of the drivers via nvmem interface.
0136
0137 This driver can also be built as a module. If so, the module
0138 will be called nvmem_qfprom.
0139
0140 config NVMEM_SPMI_SDAM
0141 tristate "SPMI SDAM Support"
0142 depends on SPMI
0143 help
0144 This driver supports the Shared Direct Access Memory Module on
0145 Qualcomm Technologies, Inc. PMICs. It provides the clients
0146 an interface to read/write to the SDAM module's shared memory.
0147
0148 config ROCKCHIP_EFUSE
0149 tristate "Rockchip eFuse Support"
0150 depends on ARCH_ROCKCHIP || COMPILE_TEST
0151 depends on HAS_IOMEM
0152 help
0153 This is a simple drive to dump specified values of Rockchip SoC
0154 from eFuse, such as cpu-leakage.
0155
0156 This driver can also be built as a module. If so, the module
0157 will be called nvmem_rockchip_efuse.
0158
0159 config ROCKCHIP_OTP
0160 tristate "Rockchip OTP controller support"
0161 depends on ARCH_ROCKCHIP || COMPILE_TEST
0162 depends on HAS_IOMEM
0163 help
0164 This is a simple drive to dump specified values of Rockchip SoC
0165 from otp, such as cpu-leakage.
0166
0167 This driver can also be built as a module. If so, the module
0168 will be called nvmem_rockchip_otp.
0169
0170 config NVMEM_BCM_OCOTP
0171 tristate "Broadcom On-Chip OTP Controller support"
0172 depends on ARCH_BCM_IPROC || COMPILE_TEST
0173 depends on HAS_IOMEM
0174 default ARCH_BCM_IPROC
0175 help
0176 Say y here to enable read/write access to the Broadcom OTP
0177 controller.
0178
0179 This driver can also be built as a module. If so, the module
0180 will be called nvmem-bcm-ocotp.
0181
0182 config NVMEM_STM32_ROMEM
0183 tristate "STMicroelectronics STM32 factory-programmed memory support"
0184 depends on ARCH_STM32 || COMPILE_TEST
0185 help
0186 Say y here to enable read-only access for STMicroelectronics STM32
0187 factory-programmed memory area.
0188
0189 This driver can also be built as a module. If so, the module
0190 will be called nvmem-stm32-romem.
0191
0192 config NVMEM_SUNXI_SID
0193 tristate "Allwinner SoCs SID support"
0194 depends on ARCH_SUNXI
0195 help
0196 This is a driver for the 'security ID' available on various Allwinner
0197 devices.
0198
0199 This driver can also be built as a module. If so, the module
0200 will be called nvmem_sunxi_sid.
0201
0202 config UNIPHIER_EFUSE
0203 tristate "UniPhier SoCs eFuse support"
0204 depends on ARCH_UNIPHIER || COMPILE_TEST
0205 depends on HAS_IOMEM
0206 help
0207 This is a simple driver to dump specified values of UniPhier SoC
0208 from eFuse.
0209
0210 This driver can also be built as a module. If so, the module
0211 will be called nvmem-uniphier-efuse.
0212
0213 config NVMEM_VF610_OCOTP
0214 tristate "VF610 SoC OCOTP support"
0215 depends on SOC_VF610 || COMPILE_TEST
0216 depends on HAS_IOMEM
0217 help
0218 This is a driver for the 'OCOTP' peripheral available on Vybrid
0219 devices like VF5xx and VF6xx.
0220
0221 This driver can also be build as a module. If so, the module will
0222 be called nvmem-vf610-ocotp.
0223
0224 config MESON_EFUSE
0225 tristate "Amlogic Meson GX eFuse Support"
0226 depends on (ARCH_MESON || COMPILE_TEST) && MESON_SM
0227 help
0228 This is a driver to retrieve specific values from the eFuse found on
0229 the Amlogic Meson GX SoCs.
0230
0231 This driver can also be built as a module. If so, the module
0232 will be called nvmem_meson_efuse.
0233
0234 config MESON_MX_EFUSE
0235 tristate "Amlogic Meson6/Meson8/Meson8b eFuse Support"
0236 depends on ARCH_MESON || COMPILE_TEST
0237 help
0238 This is a driver to retrieve specific values from the eFuse found on
0239 the Amlogic Meson6, Meson8 and Meson8b SoCs.
0240
0241 This driver can also be built as a module. If so, the module
0242 will be called nvmem_meson_mx_efuse.
0243
0244 config NVMEM_SNVS_LPGPR
0245 tristate "Support for Low Power General Purpose Register"
0246 depends on ARCH_MXC || COMPILE_TEST
0247 help
0248 This is a driver for Low Power General Purpose Register (LPGPR) available on
0249 i.MX6 and i.MX7 SoCs in Secure Non-Volatile Storage (SNVS) of this chip.
0250
0251 This driver can also be built as a module. If so, the module
0252 will be called nvmem-snvs-lpgpr.
0253
0254 config RAVE_SP_EEPROM
0255 tristate "Rave SP EEPROM Support"
0256 depends on RAVE_SP_CORE
0257 help
0258 Say y here to enable Rave SP EEPROM support.
0259
0260 config SC27XX_EFUSE
0261 tristate "Spreadtrum SC27XX eFuse Support"
0262 depends on MFD_SC27XX_PMIC || COMPILE_TEST
0263 depends on HAS_IOMEM
0264 help
0265 This is a simple driver to dump specified values of Spreadtrum
0266 SC27XX PMICs from eFuse.
0267
0268 This driver can also be built as a module. If so, the module
0269 will be called nvmem-sc27xx-efuse.
0270
0271 config NVMEM_ZYNQMP
0272 bool "Xilinx ZYNQMP SoC nvmem firmware support"
0273 depends on ARCH_ZYNQMP
0274 help
0275 This is a driver to access hardware related data like
0276 soc revision, IDCODE... etc by using the firmware
0277 interface.
0278
0279 If sure, say yes. If unsure, say no.
0280
0281 config SPRD_EFUSE
0282 tristate "Spreadtrum SoC eFuse Support"
0283 depends on ARCH_SPRD || COMPILE_TEST
0284 depends on HAS_IOMEM
0285 help
0286 This is a simple driver to dump specified values of Spreadtrum
0287 SoCs from eFuse.
0288
0289 This driver can also be built as a module. If so, the module
0290 will be called nvmem-sprd-efuse.
0291
0292 config NVMEM_RMEM
0293 tristate "Reserved Memory Based Driver Support"
0294 depends on HAS_IOMEM
0295 help
0296 This driver maps reserved memory into an nvmem device. It might be
0297 useful to expose information left by firmware in memory.
0298
0299 This driver can also be built as a module. If so, the module
0300 will be called nvmem-rmem.
0301
0302 config NVMEM_BRCM_NVRAM
0303 tristate "Broadcom's NVRAM support"
0304 depends on ARCH_BCM_5301X || COMPILE_TEST
0305 depends on HAS_IOMEM
0306 help
0307 This driver provides support for Broadcom's NVRAM that can be accessed
0308 using I/O mapping.
0309
0310 config NVMEM_LAYERSCAPE_SFP
0311 tristate "Layerscape SFP (Security Fuse Processor) support"
0312 depends on ARCH_LAYERSCAPE || COMPILE_TEST
0313 depends on HAS_IOMEM
0314 select REGMAP_MMIO
0315 help
0316 This driver provides support to read the eFuses on Freescale
0317 Layerscape SoC's. For example, the vendor provides a per part
0318 unique ID there.
0319
0320 This driver can also be built as a module. If so, the module
0321 will be called layerscape-sfp.
0322
0323 config NVMEM_SUNPLUS_OCOTP
0324 tristate "Sunplus SoC OTP support"
0325 depends on SOC_SP7021 || COMPILE_TEST
0326 depends on HAS_IOMEM
0327 help
0328 This is a driver for the On-chip OTP controller (OCOTP) available
0329 on Sunplus SoCs. It provides access to 128 bytes of one-time
0330 programmable eFuse.
0331
0332 This driver can also be built as a module. If so, the module
0333 will be called nvmem-sunplus-ocotp.
0334
0335 config NVMEM_APPLE_EFUSES
0336 tristate "Apple eFuse support"
0337 depends on ARCH_APPLE || COMPILE_TEST
0338 default ARCH_APPLE
0339 help
0340 Say y here to enable support for reading eFuses on Apple SoCs
0341 such as the M1. These are e.g. used to store factory programmed
0342 calibration data required for the PCIe or the USB-C PHY.
0343
0344 This driver can also be built as a module. If so, the module will
0345 be called nvmem-apple-efuses.
0346
0347 endif