# 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_TEGRA210_OPE
	tristate "Tegra210 OPE module"
	help
	  Config to enable the Output Processing Engine (OPE) which includes
	  Parametric Equalizer (PEQ) and Multi Band Dynamic Range Compressor
	  (MBDRC) sub blocks for data processing. It can support up to 8
	  channels.
	  Say Y or M if you want to add support for Tegra210 OPE module.

config SND_SOC_TEGRA186_ASRC
	tristate "Tegra186 ASRC module"
	help
	  Config to enable the Asynchronous Sample Rate Converter (ASRC),
	  which converts the sampling frequency of the input signal from
	  one frequency to another. It can handle over a wide range of
	  sample rate ratios (freq_in/freq_out) from 1:24 to 24:1.
	  ASRC has two modes of operation. One where ratio can be programmed
	  in SW and the other where it gets information from ratio estimator
	  module.
	  Say Y or M if you want to add support for Tegra186 ASRC 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
	  up to 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 up to 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_RT5631
	tristate "SoC Audio support for Tegra boards using an RT5631 codec"
	depends on SND_SOC_TEGRA && I2C && GPIOLIB
	select SND_SOC_TEGRA_MACHINE_DRV
	select SND_SOC_RT5631
	help
	  Say Y or M here if you want to add support for SoC audio on Tegra
	  boards using the RT5631 codec, such as Transformer.

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_MAX98088
	tristate "SoC Audio support for Tegra boards using a MAX9808x codec"
	depends on I2C && GPIOLIB
	select SND_SOC_TEGRA_MACHINE_DRV
	select SND_SOC_MAX98088
	help
	  Say Y or M here if you want to add support for SoC audio on Tegra
	  boards using the MAX98088 codec, such as LG X3.

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
