# 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 if SOC_SERIES_MEC1501X
	default 1 if SOC_SERIES_MEC172X
	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
	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
