# Copyright (c) 2020 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

menuconfig SPI_FLASH_AT45
	bool "AT45 family flash driver"
	select FLASH_HAS_DRIVER_ENABLED
	select FLASH_HAS_PAGE_LAYOUT
	depends on SPI
	help
	  This driver can handle several instances of AT45 family chips that
	  are enabled by specifying devicetree nodes with the "compatible"
	  property set to "atmel,at45" and other required properties like
	  JEDEC ID, chip capacity, block and page size etc. configured
	  accordingly.

	  The driver is only capable of using "power of 2" binary page sizes
	  in those chips and at initialization configures them to work in
	  that mode (unless it is already done).

if SPI_FLASH_AT45

config SPI_FLASH_AT45_USE_READ_MODIFY_WRITE
	bool "Use Read-Modify-Write command in flash_write()"
	default y
	help
	  Use the Read-Modify-Write command (opcode 0x58) instead of the default
	  Main Memory Program without Built-In Erase (opcode 0x02). This allows
	  writing of data without prior erasing of corresponding pages.

config SPI_FLASH_AT45_INIT_PRIORITY
	int "Driver initialization priority"
	default 80
	help
	  Device driver initialization priority.
	  SPI driver needs to be initialized before this one.

endif # SPI_FLASH_AT45
