# SPDX-License-Identifier: GPL-2.0-only
menuconfig NVMEM
	bool "NVMEM Support"
	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.

	  This driver can also be built as a module. If so, the module
	  will be called nvmem_core.

	  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.

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_SCU
	tristate "i.MX8 SCU On-Chip OTP Controller support"
	depends on IMX_SCU
	help
	  This is a driver for the SCU On-Chip OTP Controller (OCOTP)
	  available on i.MX8 SoCs.

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_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 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 QCOM_QFPROM
	tristate "QCOM 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 ROCKCHIP_EFUSE
	tristate "Rockchip eFuse Support"
	depends on ARCH_ROCKCHIP || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  This is a simple drive 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_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_STM32_ROMEM
	tristate "STMicroelectronics STM32 factory-programmed memory support"
	depends on ARCH_STM32 || COMPILE_TEST
	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_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 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 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 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_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 RAVE_SP_EEPROM
	tristate "Rave SP EEPROM Support"
	depends on RAVE_SP_CORE
	help
	  Say y here to enable Rave SP EEPROM support.

config 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_ZYNQMP
	bool "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.

endif
