# NPCX Flash driver configuration options

# Copyright (c) 2023 Nuvoton Technology Corporation.
# SPDX-License-Identifier: Apache-2.0

config FLASH_NPCX_FIU_QSPI
	bool "Nuvoton NPCX QSPI Bus Flash driver"
	default y
	depends on DT_HAS_NUVOTON_NPCX_FIU_QSPI_ENABLED
	help
	  This option enables the QSPI Bus Flash driver for NPCX family of
	  processors.

config FLASH_NPCX_FIU_NOR
	bool "Nuvoton NPCX embedded controller (EC) QSPI NOR Flash driver"
	default y
	depends on DT_HAS_NUVOTON_NPCX_FIU_NOR_ENABLED
	depends on FLASH_NPCX_FIU_QSPI
	select FLASH_HAS_DRIVER_ENABLED
	select FLASH_HAS_PAGE_LAYOUT
	select FLASH_JESD216
	select FLASH_HAS_EX_OP
	help
	  This option enables the QSPI NOR Flash driver for NPCX family of
	  processors.

config FLASH_NPCX_FIU_NOR_INIT
	bool "QSPI NOR flash feature during driver initialization"
	default y
	depends on FLASH_NPCX_FIU_NOR
	help
	  This option enables the QSPI NOR Flash features such as Quad-Enable,
	  4-byte address support and so on during driver initialization. Disable
	  it if QSPI NOR devices are not ready during driver initialization.
