# SPDX-License-Identifier: GPL-2.0-only
menu "Aspeed SoC drivers"

config SOC_ASPEED
	def_bool y
	depends on ARCH_ASPEED || COMPILE_TEST

config ASPEED_BMC_MISC
	bool "Miscellaneous ASPEED BMC interfaces"
	depends on ARCH_ASPEED || COMPILE_TEST
	default ARCH_ASPEED
	help
	  Say yes to expose VGA and LPC scratch registers, and other
	  miscellaneous control interfaces specific to the ASPEED BMC SoCs

config ASPEED_LPC_CTRL
	depends on SOC_ASPEED && REGMAP && MFD_SYSCON
	tristate "Aspeed ast2400/2500 HOST LPC to BMC bridge control"
	---help---
	  Control Aspeed ast2400/2500 HOST LPC to BMC mappings through
	  ioctl()s, the driver also provides a read/write interface to a BMC ram
	  region where the host LPC read/write region can be buffered.

config ASPEED_LPC_SNOOP
	tristate "Aspeed ast2500 HOST LPC snoop support"
	depends on SOC_ASPEED && REGMAP && MFD_SYSCON
	help
	  Provides a driver to control the LPC snoop interface which
	  allows the BMC to listen on and save the data written by
	  the host to an arbitrary LPC I/O port.

config ASPEED_P2A_CTRL
	depends on SOC_ASPEED && REGMAP && MFD_SYSCON
	tristate "Aspeed ast2400/2500 HOST P2A VGA MMIO to BMC bridge control"
	help
	  Control Aspeed ast2400/2500 HOST P2A VGA MMIO to BMC mappings through
	  ioctl()s, the driver also provides an interface for userspace mappings to
	  a pre-defined region.

config ASPEED_XDMA
	tristate "Aspeed XDMA Engine Driver"
	depends on SOC_ASPEED && REGMAP && MFD_SYSCON && HAS_DMA
	help
	  Enable support for the Aspeed XDMA Engine found on the Aspeed AST2XXX
	  SOCs. The XDMA engine can perform automatic PCI DMA operations
	  between the AST2XXX (acting as a BMC) and a host processor.

endmenu
