# eSPI configuration options

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

menuconfig ESPI
	bool "ESPI Driver"
	help
	  Enable ESPI Driver.

if ESPI

source "drivers/espi/Kconfig.xec"

module = ESPI
module-str = espi
source "subsys/logging/Kconfig.template.log_config"

config ESPI_SLAVE
	bool "ESPI slave driver"
	default y
	help
	  Enables eSPI driver in slave mode.

config ESPI_INIT_PRIORITY
	int "IRQ Priority for ESPI Controller"
	default 3
	help
	  IRQ Priority for ESPI Controller.

config ESPI_PERIPHERAL_CHANNEL
	bool "eSPI peripheral channel"
	default y
	help
	  eSPI Controller supports peripheral channel.

config ESPI_VWIRE_CHANNEL
	bool "eSPI virtual wire channel"
	default y
	help
	  eSPI Controller supports virtual wires channel.

config ESPI_OOB_CHANNEL
	bool "eSPI Out-of-band channel"
	help
	  eSPI Controller supports OOB channel.

config ESPI_FLASH_CHANNEL
	bool "ESPI flash channel"
	help
	  eSPI Controller supports flash channel.

if ESPI_PERIPHERAL_CHANNEL

config ESPI_PERIPHERAL_UART
	bool "UART peripheral"
	help
	  Enables UART over eSPI peripheral channel.

config ESPI_PERIPHERAL_8042_KBC
	bool "8042 kbc peripheral"
	help
	  Enables 8042 keyboard controller over eSPI peripheral channel.

config ESPI_PERIPHERAL_HOST_IO
	bool "Host I/O peripheral"
	help
	  Enables ACPI Host I/O over eSPI peripheral channel.

config ESPI_PERIPHERAL_PORT_92
	bool "Legacy Port 92 peripheral"
	help
	  Enables legacy Port 92 over eSPI peripheral channel.

config ESPI_PERIPHERAL_DEBUG_PORT_80
	bool "Debug Port 80 peripheral"
	help
	  Enables debug Port 80 over eSPI peripheral channel.

endif # ESPI_PERIPHERAL_CHANNEL

endif # ESPI
