# SPDX-License-Identifier: GPL-2.0-only
config SND_SOC_TEGRA
	tristate "SoC Audio for the Tegra System-on-Chip"
	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
	depends on COMMON_CLK
	depends on RESET_CONTROLLER
	select REGMAP_MMIO
	select SND_SOC_GENERIC_DMAENGINE_PCM
	help
	  Say Y or M here if you want support for SoC audio on Tegra.

if SND_SOC_TEGRA

config SND_SOC_TEGRA20_AC97
	tristate "Tegra20 AC97 interface"
	select SND_SOC_AC97_BUS
	select SND_SOC_TEGRA20_DAS
	help
	  Say Y or M if you want to add support for codecs attached to the
	  Tegra20 AC97 interface. You will also need to select the individual
	  machine drivers to support below.

config SND_SOC_TEGRA20_DAS
	tristate "Tegra20 DAS module"
	help
	  Say Y or M if you want to add support for the Tegra20 DAS module.
	  You will also need to select the individual machine drivers to
	  support below.

config SND_SOC_TEGRA20_I2S
	tristate "Tegra20 I2S interface"
	select SND_SOC_TEGRA20_DAS
	help
	  Say Y or M if you want to add support for codecs attached to the
	  Tegra20 I2S interface. You will also need to select the individual
	  machine drivers to support below.

config SND_SOC_TEGRA20_SPDIF
	tristate "Tegra20 SPDIF interface"
	default m
	help
	  Say Y or M if you want to add support for the Tegra20 SPDIF interface.
	  You will also need to select the individual machine drivers to support
	  below.

config SND_SOC_TEGRA30_AHUB
	tristate "Tegra30 AHUB module"
	help
	  Say Y or M if you want to add support for the Tegra30 AHUB module.
	  You will also need to select the individual machine drivers to
	  support below.

config SND_SOC_TEGRA30_I2S
	tristate "Tegra30 I2S interface"
	select SND_SOC_TEGRA30_AHUB
	help
	  Say Y or M if you want to add support for codecs attached to the
	  Tegra30 I2S interface. You will also need to select the individual
	  machine drivers to support below.

config SND_SOC_TEGRA210_AHUB
	tristate "Tegra210 AHUB module"
	help
	  Config to enable Audio Hub (AHUB) module, which comprises of a
	  switch called Audio Crossbar (AXBAR) used to configure or modify
	  the audio routing path between various HW accelerators present in
	  AHUB.
	  Say Y or M if you want to add support for Tegra210 AHUB module.

config SND_SOC_TEGRA210_DMIC
	tristate "Tegra210 DMIC module"
	help
	  Config to enable the Digital MIC (DMIC) controller which is used
	  to interface with Pulse Density Modulation (PDM) input devices.
	  The DMIC controller implements a converter to convert PDM signals
	  to Pulse Code Modulation (PCM) signals. This can be viewed as a
	  PDM receiver.
	  Say Y or M if you want to add support for Tegra210 DMIC module.

config SND_SOC_TEGRA210_I2S
	tristate "Tegra210 I2S module"
	help
	  Config to enable the Inter-IC Sound (I2S) Controller which
	  implements full-duplex and bidirectional and single direction
	  point-to-point serial interfaces. It can interface with I2S
	  compatible devices.
	  Say Y or M if you want to add support for Tegra210 I2S module.

config SND_SOC_TEGRA186_DSPK
	tristate "Tegra186 DSPK module"
	help
	  Config to enable the Digital Speaker Controller (DSPK) which
	  converts the multi-bit Pulse Code Modulation (PCM) audio input to
	  oversampled 1-bit Pulse Density Modulation (PDM) output. From the
	  signal flow perspective DSPK can be viewed as a PDM transmitter
	  that up-samples the input to the desired sampling rate by
	  interpolation and then converts the oversampled PCM input to
	  the desired 1-bit output via Delta Sigma Modulation (DSM).
	  Say Y or M if you want to add support for Tegra186 DSPK module.

config SND_SOC_TEGRA210_ADMAIF
	tristate "Tegra210 ADMAIF module"
	help
	  Config to enable ADMAIF which is the interface between ADMA and
	  Audio Hub (AHUB). Each ADMA channel that sends/receives data to/
	  from AHUB must interface through an ADMAIF channel. ADMA channel
	  sending data to AHUB pairs with an ADMAIF Tx channel, where as
	  ADMA channel receiving data from AHUB pairs with an ADMAIF Rx
	  channel. Buffer size is configurable for each ADMAIIF channel.
	  Say Y or M if you want to add support for Tegra210 ADMAIF module.

config SND_SOC_TEGRA_AUDIO_GRAPH_CARD
	tristate "Audio Graph Card based Tegra driver"
	depends on SND_AUDIO_GRAPH_CARD
	help
	  Config to enable Tegra audio machine driver based on generic
	  audio graph driver. It is a thin driver written to customize
	  few things for Tegra audio. Most of the code is re-used from
	  audio graph driver and the same DT bindings are used.

config SND_SOC_TEGRA_RT5640
	tristate "SoC Audio support for Tegra boards using an RT5640 codec"
	depends on I2C && GPIOLIB
	select SND_SOC_RT5640
	help
	  Say Y or M here if you want to add support for SoC audio on Tegra
	  boards using the RT5640 codec, such as Dalmore.

config SND_SOC_TEGRA_WM8753
	tristate "SoC Audio support for Tegra boards using a WM8753 codec"
	depends on I2C && GPIOLIB
	select SND_SOC_WM8753
	help
	  Say Y or M here if you want to add support for SoC audio on Tegra
	  boards using the WM8753 codec, such as Whistler.

config SND_SOC_TEGRA_WM8903
	tristate "SoC Audio support for Tegra boards using a WM8903 codec"
	depends on I2C && GPIOLIB
	select SND_SOC_WM8903
	help
	  Say Y or M here if you want to add support for SoC audio on Tegra
	  boards using the WM8093 codec. Currently, the supported boards are
	  Harmony, Ventana, Seaboard, Kaen, and Aebl.

config SND_SOC_TEGRA_WM9712
	tristate "SoC Audio support for Tegra boards using a WM9712 codec"
	depends on GPIOLIB
	select SND_SOC_TEGRA20_AC97
	select SND_SOC_WM9712
	help
	  Say Y or M here if you want to add support for SoC audio on Tegra
	  boards using the WM9712 (or compatible) codec.

config SND_SOC_TEGRA_TRIMSLICE
	tristate "SoC Audio support for TrimSlice board"
	depends on I2C
	select SND_SOC_TLV320AIC23_I2C
	help
	  Say Y or M here if you want to add support for SoC audio on the
	  TrimSlice platform.

config SND_SOC_TEGRA_ALC5632
	tristate "SoC Audio support for Tegra boards using an ALC5632 codec"
	depends on I2C && GPIOLIB
	select SND_SOC_ALC5632
	help
	  Say Y or M here if you want to add support for SoC audio on the
	  Toshiba AC100 netbook.

config SND_SOC_TEGRA_MAX98090
	tristate "SoC Audio support for Tegra boards using a MAX98090 codec"
	depends on I2C && GPIOLIB
	select SND_SOC_MAX98090
	help
	  Say Y or M here if you want to add support for SoC audio on Tegra
	  boards using the MAX98090 codec, such as Venice2.

config SND_SOC_TEGRA_RT5677
	tristate "SoC Audio support for Tegra boards using a RT5677 codec"
	depends on I2C && GPIOLIB
	select SND_SOC_RT5677
	help
	  Say Y or M here if you want to add support for SoC audio on Tegra
	  boards using the RT5677 codec, such as Ryu.

config SND_SOC_TEGRA_SGTL5000
	tristate "SoC Audio support for Tegra boards using a SGTL5000 codec"
	depends on I2C && GPIOLIB
	select SND_SOC_SGTL5000
	help
	  Say Y or M here if you want to add support for SoC audio on Tegra
	  boards using the SGTL5000 codec, such as Apalis T30, Apalis TK1 or
	  Colibri T30.

endif
