| # SPDX-License-Identifier: GPL-2.0-only |
| menuconfig NVMEM |
| bool "NVMEM Support" |
| imply NVMEM_LAYOUTS |
| help |
| Support for NVMEM(Non Volatile Memory) devices like EEPROM, EFUSES... |
| |
| This framework is designed to provide a generic interface to NVMEM |
| from both the Linux Kernel and the userspace. |
| |
| If unsure, say no. |
| |
| if NVMEM |
| |
| config NVMEM_SYSFS |
| bool "/sys/bus/nvmem/devices/*/nvmem (sysfs interface)" |
| depends on SYSFS |
| default y |
| help |
| Say Y here to add a sysfs interface for NVMEM. |
| |
| This interface is mostly used by userspace applications to |
| read/write directly into nvmem. |
| |
| # Layouts |
| |
| source "drivers/nvmem/layouts/Kconfig" |
| |
| # Devices |
| |
| if NVMEM_SYSFS |
| |
| config EEPROM_AT24 |
| tristate "I2C EEPROMs / RAMs / ROMs from most vendors" |
| depends on I2C && SYSFS |
| select REGMAP |
| select REGMAP_I2C |
| help |
| Enable this driver to get read/write support to most I2C EEPROMs |
| and compatible devices like FRAMs, SRAMs, ROMs etc. After you |
| configure the driver to know about each chip on your target |
| board. Use these generic chip names, instead of vendor-specific |
| ones like at24c64, 24lc02 or fm24c04: |
| |
| 24c00, 24c01, 24c02, spd (readonly 24c02), 24c04, 24c08, |
| 24c16, 24c32, 24c64, 24c128, 24c256, 24c512, 24c1024, 24c2048 |
| |
| Unless you like data loss puzzles, always be sure that any chip |
| you configure as a 24c32 (32 kbit) or larger is NOT really a |
| 24c16 (16 kbit) or smaller, and vice versa. Marking the chip |
| as read-only won't help recover from this. Also, if your chip |
| has any software write-protect mechanism you may want to review the |
| code to make sure this driver won't turn it on by accident. |
| |
| If you use this with an SMBus adapter instead of an I2C adapter, |
| full functionality is not available. Only smaller devices are |
| supported (24c16 and below, max 4 kByte). |
| |
| This driver can also be built as a module. If so, the module |
| will be called at24. |
| |
| config EEPROM_AT25 |
| tristate "SPI EEPROMs (FRAMs) from most vendors" |
| depends on SPI && SYSFS |
| select SPI_MEM |
| help |
| Enable this driver to get read/write support to most SPI EEPROMs |
| and Cypress FRAMs, |
| after you configure the board init code to know about each eeprom |
| on your target board. |
| |
| This driver can also be built as a module. If so, the module |
| will be called at25. |
| |
| config EEPROM_93XX46 |
| tristate "Microwire EEPROM 93XX46 support" |
| depends on SPI && SYSFS |
| select REGMAP |
| help |
| Driver for the microwire EEPROM chipsets 93xx46x. The driver |
| supports both read and write commands and also the command to |
| erase the whole EEPROM. |
| |
| This driver can also be built as a module. If so, the module |
| will be called eeprom_93xx46. |
| |
| If unsure, say N. |
| |
| config EEPROM_EE1004 |
| tristate "SPD EEPROMs on DDR4 memory modules" |
| depends on I2C && SYSFS |
| help |
| Enable this driver to get read support to SPD EEPROMs following |
| the JEDEC EE1004 standard. These are typically found on DDR4 |
| SDRAM memory modules. |
| |
| This driver can also be built as a module. If so, the module |
| will be called ee1004. |
| |
| config EEPROM_M24LR |
| tristate "STMicroelectronics M24LR RFID/NFC EEPROM support" |
| depends on I2C && SYSFS |
| select REGMAP_I2C |
| help |
| This enables support for STMicroelectronics M24LR RFID/NFC EEPROM |
| chips. These dual-interface devices expose two I2C addresses: |
| one for EEPROM memory access and another for control and system |
| configuration (e.g. UID, password handling). |
| |
| This driver provides a sysfs interface for control functions and |
| integrates with the nvmem subsystem for EEPROM access. |
| |
| To compile this driver as a module, choose M here: the |
| module will be called m24lr. |
| |
| endif # NVMEM_SYSFS |
| |
| config NVMEM_AIROHA_SMC_EFUSES |
| tristate "Airoha SMC eFuse support" |
| depends on ARM64 |
| depends on ARCH_AIROHA || COMPILE_TEST |
| depends on HAVE_ARM_SMCCC |
| default ARCH_AIROHA |
| help |
| Say y here to enable support for reading eFuses on Airoha AN7581 |
| SoCs. These are e.g. used to store factory programmed |
| calibration data required for the PCIe or the USB-C PHY or Thermal. |
| |
| This driver can also be built as a module. If so, the module will |
| be called nvmem-airoha-smc-efuses. |
| |
| config NVMEM_AN8855_EFUSE |
| tristate "Airoha AN8855 eFuse support" |
| depends on COMPILE_TEST |
| help |
| Say y here to enable support for reading eFuses on Airoha AN8855 |
| Switch. These are e.g. used to store factory programmed |
| calibration data required for the PHY. |
| |
| This driver can also be built as a module. If so, the module will |
| be called nvmem-an8855-efuse. |
| |
| config NVMEM_APPLE_EFUSES |
| tristate "Apple eFuse support" |
| depends on ARCH_APPLE || COMPILE_TEST |
| help |
| Say y here to enable support for reading eFuses on Apple SoCs |
| such as the M1. These are e.g. used to store factory programmed |
| calibration data required for the PCIe or the USB-C PHY. |
| |
| This driver can also be built as a module. If so, the module will |
| be called nvmem-apple-efuses. |
| |
| config NVMEM_APPLE_SPMI |
| tristate "Apple SPMI NVMEM" |
| depends on ARCH_APPLE || COMPILE_TEST |
| depends on SPMI |
| select REGMAP_SPMI |
| help |
| Say y here to build a driver to expose NVMEM cells for a set of power |
| and RTC-related settings on a SPMI-attached PMIC present on Apple |
| devices, such as Apple Silicon Macs. |
| |
| This driver can also be built as a module. If so, the module |
| will be called apple-nvmem-spmi. |
| |
| config NVMEM_BCM_OCOTP |
| tristate "Broadcom On-Chip OTP Controller support" |
| depends on ARCH_BCM_IPROC || COMPILE_TEST |
| depends on HAS_IOMEM |
| default ARCH_BCM_IPROC |
| help |
| Say y here to enable read/write access to the Broadcom OTP |
| controller. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-bcm-ocotp. |
| |
| config NVMEM_BRCM_NVRAM |
| tristate "Broadcom's NVRAM support" |
| depends on ARCH_BCM_5301X || COMPILE_TEST |
| depends on HAS_IOMEM |
| select GENERIC_NET_UTILS |
| help |
| This driver provides support for Broadcom's NVRAM that can be accessed |
| using I/O mapping. |
| |
| config NVMEM_IMX_IIM |
| tristate "i.MX IC Identification Module support" |
| depends on ARCH_MXC || COMPILE_TEST |
| help |
| This is a driver for the IC Identification Module (IIM) available on |
| i.MX SoCs, providing access to 4 Kbits of programmable |
| eFuses. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-imx-iim. |
| |
| config NVMEM_IMX_OCOTP |
| tristate "i.MX 6/7/8 On-Chip OTP Controller support" |
| depends on ARCH_MXC || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| This is a driver for the On-Chip OTP Controller (OCOTP) available on |
| i.MX6 SoCs, providing access to 4 Kbits of one-time programmable |
| eFuses. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-imx-ocotp. |
| |
| config NVMEM_IMX_OCOTP_ELE |
| tristate "i.MX On-Chip OTP Controller support" |
| depends on ARCH_MXC || COMPILE_TEST |
| depends on HAS_IOMEM |
| depends on OF |
| help |
| This is a driver for the On-Chip OTP Controller (OCOTP) |
| available on i.MX SoCs which has ELE. |
| |
| config NVMEM_IMX_OCOTP_SCU |
| tristate "i.MX8 SCU On-Chip OTP Controller support" |
| depends on IMX_SCU |
| depends on HAVE_ARM_SMCCC |
| help |
| This is a driver for the SCU On-Chip OTP Controller (OCOTP) |
| available on i.MX8 SoCs. |
| |
| config NVMEM_JZ4780_EFUSE |
| tristate "JZ4780 EFUSE Memory Support" |
| depends on MACH_INGENIC || COMPILE_TEST |
| depends on HAS_IOMEM |
| depends on OF |
| select REGMAP_MMIO |
| help |
| Say Y here to include support for JZ4780 efuse memory found on |
| all JZ4780 SoC based devices. |
| To compile this driver as a module, choose M here: the module |
| will be called nvmem_jz4780_efuse. |
| |
| config NVMEM_LAN9662_OTPC |
| tristate "Microchip LAN9662 OTP controller support" |
| depends on SOC_LAN966 || ARCH_LAN969X || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| This driver enables the OTP controller available on Microchip LAN9662 |
| SoCs. It controls the access to the OTP memory connected to it. |
| |
| config NVMEM_LAYERSCAPE_SFP |
| tristate "Layerscape SFP (Security Fuse Processor) support" |
| depends on ARCH_LAYERSCAPE || COMPILE_TEST |
| depends on HAS_IOMEM |
| select REGMAP_MMIO |
| help |
| This driver provides support to read the eFuses on Freescale |
| Layerscape SoC's. For example, the vendor provides a per part |
| unique ID there. |
| |
| This driver can also be built as a module. If so, the module |
| will be called layerscape-sfp. |
| |
| config NVMEM_LPC18XX_EEPROM |
| tristate "NXP LPC18XX EEPROM Memory Support" |
| depends on ARCH_LPC18XX || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| Say Y here to include support for NXP LPC18xx EEPROM memory found in |
| NXP LPC185x/3x and LPC435x/3x/2x/1x devices. |
| To compile this driver as a module, choose M here: the module |
| will be called nvmem_lpc18xx_eeprom. |
| |
| config NVMEM_LPC18XX_OTP |
| tristate "NXP LPC18XX OTP Memory Support" |
| depends on ARCH_LPC18XX || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| Say Y here to include support for NXP LPC18xx OTP memory found on |
| all LPC18xx and LPC43xx devices. |
| To compile this driver as a module, choose M here: the module |
| will be called nvmem_lpc18xx_otp. |
| |
| config NVMEM_MAX77759 |
| tristate "Maxim Integrated MAX77759 NVMEM Support" |
| depends on MFD_MAX77759 |
| default MFD_MAX77759 |
| help |
| Say Y here to include support for the user-accessible storage found |
| in Maxim Integrated MAX77759 PMICs. This IC provides space for 30 |
| bytes of storage. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-max77759. |
| |
| config NVMEM_MESON_EFUSE |
| tristate "Amlogic Meson GX eFuse Support" |
| depends on (ARCH_MESON || COMPILE_TEST) && MESON_SM |
| help |
| This is a driver to retrieve specific values from the eFuse found on |
| the Amlogic Meson GX SoCs. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem_meson_efuse. |
| |
| config NVMEM_MESON_MX_EFUSE |
| tristate "Amlogic Meson6/Meson8/Meson8b eFuse Support" |
| depends on ARCH_MESON || COMPILE_TEST |
| help |
| This is a driver to retrieve specific values from the eFuse found on |
| the Amlogic Meson6, Meson8 and Meson8b SoCs. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem_meson_mx_efuse. |
| |
| config NVMEM_MICROCHIP_OTPC |
| tristate "Microchip OTPC support" |
| depends on ARCH_AT91 || COMPILE_TEST |
| help |
| This driver enable the OTP controller available on Microchip SAMA7G5 |
| SoCs. It controls the access to the OTP memory connected to it. |
| |
| config NVMEM_MTK_EFUSE |
| tristate "Mediatek SoCs EFUSE support" |
| depends on ARCH_MEDIATEK || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| This is a driver to access hardware related data like sensor |
| calibration, HDMI impedance etc. |
| |
| This driver can also be built as a module. If so, the module |
| will be called efuse-mtk. |
| |
| config NVMEM_MXS_OCOTP |
| tristate "Freescale MXS On-Chip OTP Memory Support" |
| depends on ARCH_MXS || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| If you say Y here, you will get readonly access to the |
| One Time Programmable memory pages that are stored |
| on the Freescale i.MX23/i.MX28 processor. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-mxs-ocotp. |
| |
| config NVMEM_NINTENDO_OTP |
| tristate "Nintendo Wii and Wii U OTP Support" |
| depends on WII || COMPILE_TEST |
| help |
| This is a driver exposing the OTP of a Nintendo Wii or Wii U console. |
| |
| This memory contains common and per-console keys, signatures and |
| related data required to access peripherals. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-nintendo-otp. |
| |
| config NVMEM_S32G_OCOTP |
| tristate "S32G SoC OCOTP support" |
| depends on ARCH_S32 |
| help |
| This is a driver for the 'OCOTP' peripheral available on S32G |
| platforms. |
| |
| If you say Y here, you will get support for the One Time |
| Programmable memory pages. |
| |
| config NVMEM_QCOM_QFPROM |
| tristate "Qualcomm QFPROM Support" |
| depends on ARCH_QCOM || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| Say y here to enable QFPROM support. The QFPROM provides access |
| functions for QFPROM data to rest of the drivers via nvmem interface. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem_qfprom. |
| |
| config NVMEM_QCOM_SEC_QFPROM |
| tristate "Qualcomm SECURE QFPROM Support" |
| depends on ARCH_QCOM || COMPILE_TEST |
| depends on HAS_IOMEM |
| depends on OF |
| select QCOM_SCM |
| help |
| Say y here to enable secure QFPROM support. The secure QFPROM provides access |
| functions for QFPROM data to rest of the drivers via nvmem interface. |
| |
| This driver can also be built as a module. If so, the module will be called |
| nvmem_sec_qfprom. |
| |
| config NVMEM_QNAP_MCU_EEPROM |
| tristate "QNAP MCU EEPROM Support" |
| depends on MFD_QNAP_MCU |
| help |
| Say y here to enable support for accessing the EEPROM attached to |
| QNAP MCU devices. This EEPROM contains additional runtime device |
| information, like MAC addresses for ethernet devices that do not |
| contain their own mac storage. |
| |
| config NVMEM_RAVE_SP_EEPROM |
| tristate "Rave SP EEPROM Support" |
| depends on RAVE_SP_CORE |
| help |
| Say y here to enable Rave SP EEPROM support. |
| |
| config NVMEM_RCAR_EFUSE |
| tristate "Renesas R-Car Gen4 E-FUSE support" |
| depends on (ARCH_RENESAS && ARM64) || COMPILE_TEST |
| help |
| Enable support for reading the fuses in the E-FUSE or OTP |
| non-volatile memory block on Renesas R-Car Gen4 SoCs. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-rcar-efuse. |
| |
| config NVMEM_RMEM |
| tristate "Reserved Memory Based Driver Support" |
| depends on HAS_IOMEM |
| select CRC32 |
| help |
| This driver maps reserved memory into an nvmem device. It might be |
| useful to expose information left by firmware in memory. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-rmem. |
| |
| config NVMEM_ROCKCHIP_EFUSE |
| tristate "Rockchip eFuse Support" |
| depends on ARCH_ROCKCHIP || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| This is a simple driver to dump specified values of Rockchip SoC |
| from eFuse, such as cpu-leakage. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem_rockchip_efuse. |
| |
| config NVMEM_ROCKCHIP_OTP |
| tristate "Rockchip OTP controller support" |
| depends on ARCH_ROCKCHIP || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| This is a simple driver to dump specified values of Rockchip SoC |
| from OTP, such as cpu-leakage. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem_rockchip_otp. |
| |
| config NVMEM_SC27XX_EFUSE |
| tristate "Spreadtrum SC27XX eFuse Support" |
| depends on MFD_SC27XX_PMIC || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| This is a simple driver to dump specified values of Spreadtrum |
| SC27XX PMICs from eFuse. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-sc27xx-efuse. |
| |
| config NVMEM_SNVS_LPGPR |
| tristate "Support for Low Power General Purpose Register" |
| depends on ARCH_MXC || COMPILE_TEST |
| help |
| This is a driver for Low Power General Purpose Register (LPGPR) available on |
| i.MX6 and i.MX7 SoCs in Secure Non-Volatile Storage (SNVS) of this chip. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-snvs-lpgpr. |
| |
| config NVMEM_SPMI_SDAM |
| tristate "SPMI SDAM Support" |
| depends on SPMI |
| help |
| This driver supports the Shared Direct Access Memory Module on |
| Qualcomm Technologies, Inc. PMICs. It provides the clients |
| an interface to read/write to the SDAM module's shared memory. |
| |
| config NVMEM_SPRD_EFUSE |
| tristate "Spreadtrum SoC eFuse Support" |
| depends on ARCH_SPRD || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| This is a simple driver to dump specified values of Spreadtrum |
| SoCs from eFuse. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-sprd-efuse. |
| |
| config NVMEM_STM32_BSEC_OPTEE_TA |
| def_bool NVMEM_STM32_ROMEM && OPTEE |
| help |
| Say y here to enable the accesses to STM32MP SoC OTPs by the OP-TEE |
| trusted application STM32MP BSEC. |
| |
| This library is a used by stm32-romem driver or included in the module |
| called nvmem-stm32-romem. |
| |
| config NVMEM_STM32_ROMEM |
| tristate "STMicroelectronics STM32 factory-programmed memory support" |
| depends on ARCH_STM32 || COMPILE_TEST |
| depends on OPTEE || !OPTEE |
| help |
| Say y here to enable read-only access for STMicroelectronics STM32 |
| factory-programmed memory area. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-stm32-romem. |
| |
| config NVMEM_SUNPLUS_OCOTP |
| tristate "Sunplus SoC OTP support" |
| depends on SOC_SP7021 || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| This is a driver for the On-chip OTP controller (OCOTP) available |
| on Sunplus SoCs. It provides access to 128 bytes of one-time |
| programmable eFuse. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-sunplus-ocotp. |
| |
| config NVMEM_SUNXI_SID |
| tristate "Allwinner SoCs SID support" |
| depends on ARCH_SUNXI |
| help |
| This is a driver for the 'security ID' available on various Allwinner |
| devices. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem_sunxi_sid. |
| |
| config NVMEM_U_BOOT_ENV |
| tristate "U-Boot environment variables support" |
| depends on OF && MTD |
| select NVMEM_LAYOUT_U_BOOT_ENV |
| help |
| U-Boot stores its setup as environment variables. This driver adds |
| support for verifying & exporting such data. It also exposes variables |
| as NVMEM cells so they can be referenced by other drivers. |
| |
| Currently this drivers works only with env variables on top of MTD. |
| |
| If compiled as module it will be called nvmem_u-boot-env. |
| |
| config NVMEM_UNIPHIER_EFUSE |
| tristate "UniPhier SoCs eFuse support" |
| depends on ARCH_UNIPHIER || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| This is a simple driver to dump specified values of UniPhier SoC |
| from eFuse. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem-uniphier-efuse. |
| |
| config NVMEM_VF610_OCOTP |
| tristate "VF610 SoC OCOTP support" |
| depends on SOC_VF610 || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| This is a driver for the 'OCOTP' peripheral available on Vybrid |
| devices like VF5xx and VF6xx. |
| |
| This driver can also be build as a module. If so, the module will |
| be called nvmem-vf610-ocotp. |
| |
| config NVMEM_ZYNQMP |
| tristate "Xilinx ZYNQMP SoC nvmem firmware support" |
| depends on ARCH_ZYNQMP |
| help |
| This is a driver to access hardware related data like |
| soc revision, IDCODE... etc by using the firmware |
| interface. |
| |
| If sure, say yes. If unsure, say no. |
| |
| config NVMEM_QORIQ_EFUSE |
| tristate "NXP QorIQ eFuse support" |
| depends on PPC_85xx || COMPILE_TEST |
| depends on HAS_IOMEM |
| help |
| This driver provides read support for the eFuses (SFP) on NXP QorIQ |
| series SoC's. This includes secure boot settings, the globally unique |
| NXP ID 'FUIDR' and the OEM unique ID 'OUIDR'. |
| |
| This driver can also be built as a module. If so, the module |
| will be called nvmem_qoriq_efuse. |
| |
| endif # NVMEM |