# Microchip XEC ESPI configuration options

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

config ESPI_XEC
	bool "XEC Microchip ESPI driver"
	depends on SOC_SERIES_MEC1501X
	help
	  Enable the Microchip XEC ESPI driver for MEC15xx family.

if ESPI_XEC

config ESPI_OOB_CHANNEL
	default y

config ESPI_FLASH_CHANNEL
	default y

config ESPI_PERIPHERAL_HOST_IO
	default  y

config ESPI_PERIPHERAL_HOST_IO_PVT
	default  y

config ESPI_PERIPHERAL_DEBUG_PORT_80
	default y

config ESPI_PERIPHERAL_UART
	default y

config ESPI_PERIPHERAL_UART_SOC_MAPPING
	int "SoC port exposed as logical eSPI UART"
	default 2
	depends on ESPI_PERIPHERAL_UART
	help
	  This tells the driver to which SoC UART to direct the UART traffic
	  send over eSPI from host.

config ESPI_OOB_BUFFER_SIZE
	int "eSPI OOB channel buffer size in bytes"
	default 128
	depends on ESPI_OOB_CHANNEL
	help
	  Use minimum RAM buffer size by default but allow applications to
	  override the value.
	  Maximum OOB payload is 73 bytes.

config ESPI_FLASH_BUFFER_SIZE
	int "eSPI Flash channel buffer size in bytes"
	default 256
	depends on ESPI_FLASH_CHANNEL
	help
	  Use maximum RAM buffer size defined by spec but allow applications
	  to override if eSPI host doesn't support it.

config ESPI_SAF
	bool "XEC Microchip ESPI SAF driver"
	depends on ESPI_FLASH_CHANNEL
	default n
	help
	  Enable Slave Attached Flash eSPI driver. SAF depends upon ESPI XEC driver
	  and flash channel.

config ESPI_SAF_INIT_PRIORITY
	int "ESPI SAF driver initialization priority"
	depends on ESPI_SAF
	default 4
	help
	  Driver initialization priority for eSPI SAF driver.

endif #ESPI_XEC
