| # 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 |