# 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"
	default y
	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"

config EEPROM_SIMULATOR
	bool "Simulated EEPROM driver"
	default y
	depends on DT_HAS_ZEPHYR_SIM_EEPROM_ENABLED
	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
