# 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 EEPROM_AT24
	bool "I2C EEPROMs compatible with Atmel's AT24 family"
	default y
	depends on DT_HAS_ATMEL_AT24_ENABLED
	select I2C
	select EEPROM_AT2X
	help
	  Enable support for I2C EEPROMs compatible with Atmel's AT24 family.

	  There are multiple vendors manufacturing I2C EEPROMs compatible with
	  the programming model of the Atmel AT24.

	  Examples of compatible EEPROM families:
	  - Microchip AT24xxx
	  - ST M24xxx

config EEPROM_AT25
	bool "SPI EEPROMs compatible with Atmel's AT25 family"
	default y
	depends on DT_HAS_ATMEL_AT25_ENABLED
	select SPI
	select EEPROM_AT2X
	help
	  Enable support for SPI EEPROMs compatible with Atmel's AT25 family.

	  There are multiple vendors manufacturing SPI EEPROMs compatible with
	  the programming model of the Atmel AT25.

	  Examples of compatible EEPROM families:
	  - Microchip AT25xxx
	  - ST M95xxx

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.tmp11x"
source "drivers/eeprom/Kconfig.xec"
source "drivers/eeprom/Kconfig.mb85rcxx"
source "drivers/eeprom/Kconfig.mb85rsxx"
source "drivers/eeprom/Kconfig.fm25xxx"

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
