# 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"
	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_TEGRA210_MVC
	tristate "Tegra210 MVC module"
	help
	  Config to enable the digital Master Volume Controller (MVC) which
	  provides gain or attenuation to a digital signal path. It can be
	  used in input or output signal path. It can be used either for
	  per-stream volume control or for master volume control.
	  Say Y or M if you want to add support for Tegra210 MVC module.

config SND_SOC_TEGRA210_SFC
	tristate "Tegra210 SFC module"
	help
	  Config to enable the Sampling Frequency Converter (SFC) which
	  converts the sampling frequency of input signal to another
	  frequency. It supports sampling frequency conversion of streams
	  upto 2 channels (stereo).
	  Say Y or M if you want to add support for Tegra210 SFC module.

config SND_SOC_TEGRA210_AMX
	tristate "Tegra210 AMX module"
	help
	  Config to enable the Audio Multiplexer (AMX) which can multiplex
	  four input streams (each of up to 16 channels) and generate
	  output stream (of up to 16 channels). A byte RAM helps to form an
	  output frame by any combination of bytes from the input frames.
	  Say Y or M if you want to add support for Tegra210 AMX module.

config SND_SOC_TEGRA210_ADX
	tristate "Tegra210 ADX module"
	help
	  Config to enable the Audio Demultiplexer (ADX) which takes an
	  input stream (up to 16 channels) and demultiplexes it into four
	  output streams (each of up to 16 channels). A byte RAM helps to
	  form output frames by any combination of bytes from the input
	  frame. Its design is identical to that of byte RAM in the AMX
	  except that the data flow direction is reversed.
	  Say Y or M if you want to add support for Tegra210 ADX module.

config SND_SOC_TEGRA210_MIXER
	tristate "Tegra210 Mixer module"
	help
	  Config to enable the Mixer module which can help to mix multiple
	  audio streams. It supports mixing of upto 10 input streams,
	  where each stream can contain maximum of 8 channels. It supports
	  5 output each of which can be a mix of any combination of 10
	  input streams.
	  Say Y or M if you want to add support for Tegra210 Mixer 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_MACHINE_DRV
	tristate

config SND_SOC_TEGRA_RT5640
	tristate "SoC Audio support for Tegra boards using an RT5640 codec"
	depends on I2C && GPIOLIB
	select SND_SOC_TEGRA_MACHINE_DRV
	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_TEGRA_MACHINE_DRV
	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_TEGRA_MACHINE_DRV
	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_TEGRA_MACHINE_DRV
	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_TEGRA_MACHINE_DRV
	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_TEGRA_MACHINE_DRV
	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_TEGRA_MACHINE_DRV
	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_TEGRA_MACHINE_DRV
	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_TEGRA_MACHINE_DRV
	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
