# SPDX-License-Identifier: GPL-2.0-only
##
## Au1200/Au1550/Au1300 PSC + DBDMA
##
config SND_SOC_AU1XPSC
	tristate "SoC Audio for Au12xx/Au13xx/Au1550"
	depends on MIPS_ALCHEMY
	help
	  This option enables support for the Programmable Serial
	  Controllers in AC97 and I2S mode, and the Descriptor-Based DMA
	  Controller (DBDMA) as found on the Au12xx/Au13xx/Au1550 SoC.

config SND_SOC_AU1XPSC_I2S
	tristate

config SND_SOC_AU1XPSC_AC97
	tristate
	select AC97_BUS
	select SND_AC97_CODEC
	select SND_SOC_AC97_BUS

##
## Au1000/1500/1100 DMA + AC97C/I2SC
##
config SND_SOC_AU1XAUDIO
	tristate "SoC Audio for Au1000/Au1500/Au1100"
	depends on MIPS_ALCHEMY
	help
	  This is a driver set for the AC97 unit and the
	  old DMA controller as found on the Au1000/Au1500/Au1100 chips.

config SND_SOC_AU1XAC97C
	tristate
	select AC97_BUS
	select SND_AC97_CODEC
	select SND_SOC_AC97_BUS

config SND_SOC_AU1XI2SC
	tristate


##
## Boards
##
config SND_SOC_DB1000
	tristate "DB1000 Audio support"
	depends on SND_SOC_AU1XAUDIO
	select SND_SOC_AU1XAC97C
	select SND_SOC_AC97_CODEC
	help
	  Select this option to enable AC97 audio on the early DB1x00 series
	  of boards (DB1000/DB1500/DB1100).

config SND_SOC_DB1200
	tristate "DB1200/DB1300/DB1550 Audio support"
	depends on SND_SOC_AU1XPSC
	select SND_SOC_AU1XPSC_AC97
	select SND_SOC_AC97_CODEC
	select SND_SOC_WM9712
	select SND_SOC_AU1XPSC_I2S
	select SND_SOC_WM8731_I2C
	help
	  Select this option to enable audio (AC97 and I2S) on the
	  Alchemy/AMD/RMI/NetLogic Db1200, Db1550 and Db1300 evaluation boards.
	  If you need Db1300 touchscreen support, you definitely want to say Y.
