# SPDX-License-Identifier: GPL-2.0-only
config SND_SOC_ROCKCHIP
	tristate "ASoC support for Rockchip"
	depends on COMPILE_TEST || ARCH_ROCKCHIP
	help
	  Say Y or M if you want to add support for codecs attached to
	  the Rockchip SoCs' Audio interfaces. You will also need to
	  select the audio interfaces to support below.

config SND_SOC_ROCKCHIP_I2S
	tristate "Rockchip I2S Device Driver"
	depends on CLKDEV_LOOKUP && SND_SOC_ROCKCHIP
	select SND_SOC_GENERIC_DMAENGINE_PCM
	help
	  Say Y or M if you want to add support for I2S driver for
	  Rockchip I2S device. The device supports upto maximum of
	  8 channels each for play and record.

config SND_SOC_ROCKCHIP_PDM
	tristate "Rockchip PDM Controller Driver"
	depends on CLKDEV_LOOKUP && SND_SOC_ROCKCHIP
	select SND_SOC_GENERIC_DMAENGINE_PCM
	select RATIONAL
	help
	  Say Y or M if you want to add support for PDM driver for
	  Rockchip PDM Controller. The Controller supports up to maximum of
	  8 channels record.

config SND_SOC_ROCKCHIP_SPDIF
	tristate "Rockchip SPDIF Device Driver"
	depends on CLKDEV_LOOKUP && SND_SOC_ROCKCHIP
	select SND_SOC_GENERIC_DMAENGINE_PCM
	help
	  Say Y or M if you want to add support for SPDIF driver for
	  Rockchip SPDIF transceiver device.

config SND_SOC_ROCKCHIP_MAX98090
	tristate "ASoC support for Rockchip boards using a MAX98090 codec"
	depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB && CLKDEV_LOOKUP
	select SND_SOC_ROCKCHIP_I2S
	select SND_SOC_MAX98090
	select SND_SOC_TS3A227E
	help
	  Say Y or M here if you want to add support for SoC audio on Rockchip
	  boards using the MAX98090 codec, such as Veyron.

config SND_SOC_ROCKCHIP_RT5645
	tristate "ASoC support for Rockchip boards using a RT5645/RT5650 codec"
	depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB && CLKDEV_LOOKUP
	select SND_SOC_ROCKCHIP_I2S
	select SND_SOC_RT5645
	help
	  Say Y or M here if you want to add support for SoC audio on Rockchip
	  boards using the RT5645/RT5650 codec, such as Veyron.

config SND_SOC_RK3288_HDMI_ANALOG
	tristate "ASoC support multiple codecs for Rockchip RK3288 boards"
	depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB && CLKDEV_LOOKUP
	select SND_SOC_ROCKCHIP_I2S
	select SND_SOC_HDMI_CODEC
	select SND_SOC_ES8328_I2C
	select SND_SOC_ES8328_SPI if SPI_MASTER
	select DRM_DW_HDMI_I2S_AUDIO if DRM_DW_HDMI
	help
	  Say Y or M here if you want to add support for SoC audio on Rockchip
	  RK3288 boards using an analog output and the built-in HDMI audio.

config SND_SOC_RK3399_GRU_SOUND
	tristate "ASoC support multiple codecs for Rockchip RK3399 GRU boards"
	depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB && CLKDEV_LOOKUP && SPI
	select SND_SOC_ROCKCHIP_I2S
	select SND_SOC_MAX98357A
	select SND_SOC_RT5514
	select SND_SOC_DA7219
	select SND_SOC_RT5514_SPI
	select SND_SOC_HDMI_CODEC
	select SND_SOC_DMIC
	help
	  Say Y or M here if you want to add support multiple codecs for SoC
	  audio on Rockchip RK3399 GRU boards.
