# EEPROM driver configuration options

# Copyright (c) 2019 Vestas Wind Systems A/S
# SPDX-License-Identifier: Apache-2.0

menuconfig EEPROM
	bool "Electrically Erasable Programmable Read-Only Memory (EEPROM) drivers"
	help
	  Enable support for EEPROM hardware.

if EEPROM

module = EEPROM
module-str = eeprom
source "subsys/logging/Kconfig.template.log_config"

config EEPROM_INIT_PRIORITY
	int "EEPROM init priority"
	default KERNEL_INIT_PRIORITY_DEVICE
	help
	  EEPROM driver device initialization priority. This initialization
	  priority is used unless the driver implementation has its own
	  initialization priority.

config EEPROM_SHELL
	bool "EEPROM shell"
	depends on SHELL
	help
	  Enable the EEPROM shell with EEPROM related commands.

config EEPROM_SHELL_BUFFER_SIZE
	int "EEPROM shell buffer size"
	default 256
	depends on EEPROM_SHELL
	help
	  Size of the buffer used for EEPROM read/write commands in
	  the EEPROM shell.

config EEPROM_AT2X
	bool
	help
	  Enable support for Atmel AT2x (and compatible) I2C/SPI
	  EEPROMs.

config EEPROM_AT2X_EMUL
	bool "Emulate an Atmel AT24 I2C chip"
	depends on EMUL
	help
	  This is an emulator for the Atmel AT24 series of I2C-attached EEPROMs.

	  At present it only supports 8-bit addressing. The size of the EEPROM
	  is given by the 'size' property. See the binding for further details.

config EMUL_EEPROM_AT2X
	bool "[DEPRECATED] Emulate an Atmel AT24 I2C chip"
	select EEPROM_AT2X_EMUL
	select DEPRECATED
	help
	  This is an emulator for the Atmel AT24 series of I2C-attached EEPROMs.

	  At present it only supports 8-bit addressing. The size of the EEPROM
	  is given by the 'size' property. See the binding for further details.

	  [DEPRECATED] Select EEPROM_AT2X_EMUL instead.

config EEPROM_AT24
	bool "Atmel AT24 (and compatible) I2C EEPROM support"
	default y
	depends on DT_HAS_ATMEL_AT24_ENABLED
	select I2C
	select EEPROM_AT2X
	help
	  Enable support for Atmel AT24 (and compatible) I2C EEPROMs.

config EEPROM_AT25
	bool "Atmel AT25 (and compatible) SPI EEPROM support"
	default y
	depends on DT_HAS_ATMEL_AT25_ENABLED
	select SPI
	select EEPROM_AT2X
	help
	  Enable support for Atmel AT25 (and compatible) SPI EEPROMs.

config EEPROM_AT2X_INIT_PRIORITY
	int "AT2X EEPROM init priority"
	default 80
	depends on EEPROM_AT2X
	help
	  AT2X EEPROM driver device initialization priority.

	  The EEPROM is connected to I2C or SPI bus an has to be initialized
	  after I2C/SPI driver.

source "drivers/eeprom/Kconfig.lpc11u6x"
source "drivers/eeprom/Kconfig.stm32"
source "drivers/eeprom/Kconfig.eeprom_emu"
source "drivers/eeprom/Kconfig.tmp116"
source "drivers/eeprom/Kconfig.xec"
source "drivers/eeprom/Kconfig.mb85rcxx"

config EEPROM_SIMULATOR
	bool "Simulated EEPROM driver"
	default y
	depends on DT_HAS_ZEPHYR_SIM_EEPROM_ENABLED
	depends on !(ARCH_POSIX && !EXTERNAL_LIBC)
	select STATS
	select STATS_NAMES
	help
	  Enable Simulated EEPROM driver.

config EEPROM_SIMULATOR_SIMULATE_TIMING
	bool "Hardware timing simulation"
	depends on EEPROM_SIMULATOR
	help
	  Enable Simulated hardware timing.

if EEPROM_SIMULATOR_SIMULATE_TIMING

config EEPROM_SIMULATOR_MIN_READ_TIME_US
	int
	prompt "Minimum read time (µS)"
	default 2
	range 1 1000000

config EEPROM_SIMULATOR_MIN_WRITE_TIME_US
	int
	prompt "Minimum write time (µS)"
	default 100
	range 1 1000000

endif # EEPROM_SIMULATOR_SIMULATE_TIMING

config EEPROM_FAKE
	bool "Fake EEPROM driver"
	default y
	depends on DT_HAS_ZEPHYR_FAKE_EEPROM_ENABLED
	help
	  Enable support for the FFF-based fake EEPROM driver.

endif # EEPROM
