#
# Copyright (c) 2018 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#


menuconfig SPI_FLASH_W25QXXDV
	bool "SPI NOR Flash Winbond W25QXXDV"
	select FLASH_HAS_DRIVER_ENABLED
	depends on SPI

if SPI_FLASH_W25QXXDV

config SPI_FLASH_W25QXXDV_DRV_NAME
	string "SPI flash device name"
	default "W25QXXDV"

config SPI_FLASH_W25QXXDV_INIT_PRIORITY
	int
	default 80
	help
	  Device driver initialization priority.
	  Device is connected to SPI bus, it has to
	  be initialized after SPI driver.

config SPI_FLASH_W25QXXDV_GPIO_SPI_CS
	bool "Manage SPI CS through a GPIO pin"
	help
	This option is useful if one needs to manage SPI CS through a GPIO
	pin to by-pass the SPI controller's CS logic.

config SPI_FLASH_W25QXXDV_GPIO_CS_WAIT_DELAY
	int "Delay time in us"
	default 0
        depends on SPI_FLASH_W25QXXDV_GPIO_SPI_CS
	help
	This is the wait delay (in us) to allow for CS switching to take effect

config SPI_FLASH_W25QXXDV_FLASH_SIZE
	int "Flash size in bytes"
	default 2097152
	help
	  This is the flash capacity in bytes.

config SPI_FLASH_W25QXXDV_DEVICE_ID
	hex "Device ID in hex"
	default 0x00ef4015
	help
	  This is the device ID of the flash chip to use, which is 0x00ef4015 for
          the W25QXXDV

config SPI_FLASH_W25QXXDV_PAGE_PROGRAM_SIZE
	int "Page Program Size in bytes"
	default 256
	help
	  This is the maximum size of a page program operation. Writing data
	  over this page boundary will split the write operation into two
	  pages.

endif # SPI_FLASH_W25QXXDV
