162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ciconfig SND_SOC_TEGRA
362306a36Sopenharmony_ci	tristate "SoC Audio for the Tegra System-on-Chip"
462306a36Sopenharmony_ci	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
562306a36Sopenharmony_ci	depends on COMMON_CLK
662306a36Sopenharmony_ci	depends on RESET_CONTROLLER
762306a36Sopenharmony_ci	select REGMAP_MMIO
862306a36Sopenharmony_ci	select SND_SOC_GENERIC_DMAENGINE_PCM
962306a36Sopenharmony_ci	help
1062306a36Sopenharmony_ci	  Say Y or M here if you want support for SoC audio on Tegra.
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciif SND_SOC_TEGRA
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciconfig SND_SOC_TEGRA20_AC97
1562306a36Sopenharmony_ci	tristate "Tegra20 AC97 interface"
1662306a36Sopenharmony_ci	select SND_SOC_AC97_BUS
1762306a36Sopenharmony_ci	select SND_SOC_TEGRA20_DAS
1862306a36Sopenharmony_ci	help
1962306a36Sopenharmony_ci	  Say Y or M if you want to add support for codecs attached to the
2062306a36Sopenharmony_ci	  Tegra20 AC97 interface. You will also need to select the individual
2162306a36Sopenharmony_ci	  machine drivers to support below.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciconfig SND_SOC_TEGRA20_DAS
2462306a36Sopenharmony_ci	tristate "Tegra20 DAS module"
2562306a36Sopenharmony_ci	help
2662306a36Sopenharmony_ci	  Say Y or M if you want to add support for the Tegra20 DAS module.
2762306a36Sopenharmony_ci	  You will also need to select the individual machine drivers to
2862306a36Sopenharmony_ci	  support below.
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciconfig SND_SOC_TEGRA20_I2S
3162306a36Sopenharmony_ci	tristate "Tegra20 I2S interface"
3262306a36Sopenharmony_ci	select SND_SOC_TEGRA20_DAS
3362306a36Sopenharmony_ci	help
3462306a36Sopenharmony_ci	  Say Y or M if you want to add support for codecs attached to the
3562306a36Sopenharmony_ci	  Tegra20 I2S interface. You will also need to select the individual
3662306a36Sopenharmony_ci	  machine drivers to support below.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciconfig SND_SOC_TEGRA20_SPDIF
3962306a36Sopenharmony_ci	tristate "Tegra20 SPDIF interface"
4062306a36Sopenharmony_ci	help
4162306a36Sopenharmony_ci	  Say Y or M if you want to add support for the Tegra20 SPDIF interface.
4262306a36Sopenharmony_ci	  You will also need to select the individual machine drivers to support
4362306a36Sopenharmony_ci	  below.
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ciconfig SND_SOC_TEGRA30_AHUB
4662306a36Sopenharmony_ci	tristate "Tegra30 AHUB module"
4762306a36Sopenharmony_ci	help
4862306a36Sopenharmony_ci	  Say Y or M if you want to add support for the Tegra30 AHUB module.
4962306a36Sopenharmony_ci	  You will also need to select the individual machine drivers to
5062306a36Sopenharmony_ci	  support below.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciconfig SND_SOC_TEGRA30_I2S
5362306a36Sopenharmony_ci	tristate "Tegra30 I2S interface"
5462306a36Sopenharmony_ci	select SND_SOC_TEGRA30_AHUB
5562306a36Sopenharmony_ci	help
5662306a36Sopenharmony_ci	  Say Y or M if you want to add support for codecs attached to the
5762306a36Sopenharmony_ci	  Tegra30 I2S interface. You will also need to select the individual
5862306a36Sopenharmony_ci	  machine drivers to support below.
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciconfig SND_SOC_TEGRA210_AHUB
6162306a36Sopenharmony_ci	tristate "Tegra210 AHUB module"
6262306a36Sopenharmony_ci	help
6362306a36Sopenharmony_ci	  Config to enable Audio Hub (AHUB) module, which comprises of a
6462306a36Sopenharmony_ci	  switch called Audio Crossbar (AXBAR) used to configure or modify
6562306a36Sopenharmony_ci	  the audio routing path between various HW accelerators present in
6662306a36Sopenharmony_ci	  AHUB.
6762306a36Sopenharmony_ci	  Say Y or M if you want to add support for Tegra210 AHUB module.
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciconfig SND_SOC_TEGRA210_DMIC
7062306a36Sopenharmony_ci	tristate "Tegra210 DMIC module"
7162306a36Sopenharmony_ci	help
7262306a36Sopenharmony_ci	  Config to enable the Digital MIC (DMIC) controller which is used
7362306a36Sopenharmony_ci	  to interface with Pulse Density Modulation (PDM) input devices.
7462306a36Sopenharmony_ci	  The DMIC controller implements a converter to convert PDM signals
7562306a36Sopenharmony_ci	  to Pulse Code Modulation (PCM) signals. This can be viewed as a
7662306a36Sopenharmony_ci	  PDM receiver.
7762306a36Sopenharmony_ci	  Say Y or M if you want to add support for Tegra210 DMIC module.
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ciconfig SND_SOC_TEGRA210_I2S
8062306a36Sopenharmony_ci	tristate "Tegra210 I2S module"
8162306a36Sopenharmony_ci	help
8262306a36Sopenharmony_ci	  Config to enable the Inter-IC Sound (I2S) Controller which
8362306a36Sopenharmony_ci	  implements full-duplex and bidirectional and single direction
8462306a36Sopenharmony_ci	  point-to-point serial interfaces. It can interface with I2S
8562306a36Sopenharmony_ci	  compatible devices.
8662306a36Sopenharmony_ci	  Say Y or M if you want to add support for Tegra210 I2S module.
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ciconfig SND_SOC_TEGRA210_OPE
8962306a36Sopenharmony_ci	tristate "Tegra210 OPE module"
9062306a36Sopenharmony_ci	help
9162306a36Sopenharmony_ci	  Config to enable the Output Processing Engine (OPE) which includes
9262306a36Sopenharmony_ci	  Parametric Equalizer (PEQ) and Multi Band Dynamic Range Compressor
9362306a36Sopenharmony_ci	  (MBDRC) sub blocks for data processing. It can support up to 8
9462306a36Sopenharmony_ci	  channels.
9562306a36Sopenharmony_ci	  Say Y or M if you want to add support for Tegra210 OPE module.
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ciconfig SND_SOC_TEGRA186_ASRC
9862306a36Sopenharmony_ci	tristate "Tegra186 ASRC module"
9962306a36Sopenharmony_ci	help
10062306a36Sopenharmony_ci	  Config to enable the Asynchronous Sample Rate Converter (ASRC),
10162306a36Sopenharmony_ci	  which converts the sampling frequency of the input signal from
10262306a36Sopenharmony_ci	  one frequency to another. It can handle over a wide range of
10362306a36Sopenharmony_ci	  sample rate ratios (freq_in/freq_out) from 1:24 to 24:1.
10462306a36Sopenharmony_ci	  ASRC has two modes of operation. One where ratio can be programmed
10562306a36Sopenharmony_ci	  in SW and the other where it gets information from ratio estimator
10662306a36Sopenharmony_ci	  module.
10762306a36Sopenharmony_ci	  Say Y or M if you want to add support for Tegra186 ASRC module.
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ciconfig SND_SOC_TEGRA186_DSPK
11062306a36Sopenharmony_ci	tristate "Tegra186 DSPK module"
11162306a36Sopenharmony_ci	help
11262306a36Sopenharmony_ci	  Config to enable the Digital Speaker Controller (DSPK) which
11362306a36Sopenharmony_ci	  converts the multi-bit Pulse Code Modulation (PCM) audio input to
11462306a36Sopenharmony_ci	  oversampled 1-bit Pulse Density Modulation (PDM) output. From the
11562306a36Sopenharmony_ci	  signal flow perspective DSPK can be viewed as a PDM transmitter
11662306a36Sopenharmony_ci	  that up-samples the input to the desired sampling rate by
11762306a36Sopenharmony_ci	  interpolation and then converts the oversampled PCM input to
11862306a36Sopenharmony_ci	  the desired 1-bit output via Delta Sigma Modulation (DSM).
11962306a36Sopenharmony_ci	  Say Y or M if you want to add support for Tegra186 DSPK module.
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ciconfig SND_SOC_TEGRA210_ADMAIF
12262306a36Sopenharmony_ci	tristate "Tegra210 ADMAIF module"
12362306a36Sopenharmony_ci	help
12462306a36Sopenharmony_ci	  Config to enable ADMAIF which is the interface between ADMA and
12562306a36Sopenharmony_ci	  Audio Hub (AHUB). Each ADMA channel that sends/receives data to/
12662306a36Sopenharmony_ci	  from AHUB must interface through an ADMAIF channel. ADMA channel
12762306a36Sopenharmony_ci	  sending data to AHUB pairs with an ADMAIF Tx channel, where as
12862306a36Sopenharmony_ci	  ADMA channel receiving data from AHUB pairs with an ADMAIF Rx
12962306a36Sopenharmony_ci	  channel. Buffer size is configurable for each ADMAIIF channel.
13062306a36Sopenharmony_ci	  Say Y or M if you want to add support for Tegra210 ADMAIF module.
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ciconfig SND_SOC_TEGRA210_MVC
13362306a36Sopenharmony_ci	tristate "Tegra210 MVC module"
13462306a36Sopenharmony_ci	help
13562306a36Sopenharmony_ci	  Config to enable the digital Master Volume Controller (MVC) which
13662306a36Sopenharmony_ci	  provides gain or attenuation to a digital signal path. It can be
13762306a36Sopenharmony_ci	  used in input or output signal path. It can be used either for
13862306a36Sopenharmony_ci	  per-stream volume control or for master volume control.
13962306a36Sopenharmony_ci	  Say Y or M if you want to add support for Tegra210 MVC module.
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ciconfig SND_SOC_TEGRA210_SFC
14262306a36Sopenharmony_ci	tristate "Tegra210 SFC module"
14362306a36Sopenharmony_ci	help
14462306a36Sopenharmony_ci	  Config to enable the Sampling Frequency Converter (SFC) which
14562306a36Sopenharmony_ci	  converts the sampling frequency of input signal to another
14662306a36Sopenharmony_ci	  frequency. It supports sampling frequency conversion of streams
14762306a36Sopenharmony_ci	  up to 2 channels (stereo).
14862306a36Sopenharmony_ci	  Say Y or M if you want to add support for Tegra210 SFC module.
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ciconfig SND_SOC_TEGRA210_AMX
15162306a36Sopenharmony_ci	tristate "Tegra210 AMX module"
15262306a36Sopenharmony_ci	help
15362306a36Sopenharmony_ci	  Config to enable the Audio Multiplexer (AMX) which can multiplex
15462306a36Sopenharmony_ci	  four input streams (each of up to 16 channels) and generate
15562306a36Sopenharmony_ci	  output stream (of up to 16 channels). A byte RAM helps to form an
15662306a36Sopenharmony_ci	  output frame by any combination of bytes from the input frames.
15762306a36Sopenharmony_ci	  Say Y or M if you want to add support for Tegra210 AMX module.
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ciconfig SND_SOC_TEGRA210_ADX
16062306a36Sopenharmony_ci	tristate "Tegra210 ADX module"
16162306a36Sopenharmony_ci	help
16262306a36Sopenharmony_ci	  Config to enable the Audio Demultiplexer (ADX) which takes an
16362306a36Sopenharmony_ci	  input stream (up to 16 channels) and demultiplexes it into four
16462306a36Sopenharmony_ci	  output streams (each of up to 16 channels). A byte RAM helps to
16562306a36Sopenharmony_ci	  form output frames by any combination of bytes from the input
16662306a36Sopenharmony_ci	  frame. Its design is identical to that of byte RAM in the AMX
16762306a36Sopenharmony_ci	  except that the data flow direction is reversed.
16862306a36Sopenharmony_ci	  Say Y or M if you want to add support for Tegra210 ADX module.
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ciconfig SND_SOC_TEGRA210_MIXER
17162306a36Sopenharmony_ci	tristate "Tegra210 Mixer module"
17262306a36Sopenharmony_ci	help
17362306a36Sopenharmony_ci	  Config to enable the Mixer module which can help to mix multiple
17462306a36Sopenharmony_ci	  audio streams. It supports mixing of up to 10 input streams,
17562306a36Sopenharmony_ci	  where each stream can contain maximum of 8 channels. It supports
17662306a36Sopenharmony_ci	  5 output each of which can be a mix of any combination of 10
17762306a36Sopenharmony_ci	  input streams.
17862306a36Sopenharmony_ci	  Say Y or M if you want to add support for Tegra210 Mixer module.
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ciconfig SND_SOC_TEGRA_AUDIO_GRAPH_CARD
18162306a36Sopenharmony_ci	tristate "Audio Graph Card based Tegra driver"
18262306a36Sopenharmony_ci	depends on SND_AUDIO_GRAPH_CARD
18362306a36Sopenharmony_ci	help
18462306a36Sopenharmony_ci	  Config to enable Tegra audio machine driver based on generic
18562306a36Sopenharmony_ci	  audio graph driver. It is a thin driver written to customize
18662306a36Sopenharmony_ci	  few things for Tegra audio. Most of the code is re-used from
18762306a36Sopenharmony_ci	  audio graph driver and the same DT bindings are used.
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ciconfig SND_SOC_TEGRA_MACHINE_DRV
19062306a36Sopenharmony_ci	tristate
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ciconfig SND_SOC_TEGRA_RT5631
19362306a36Sopenharmony_ci	tristate "SoC Audio support for Tegra boards using an RT5631 codec"
19462306a36Sopenharmony_ci	depends on SND_SOC_TEGRA && I2C && GPIOLIB
19562306a36Sopenharmony_ci	select SND_SOC_TEGRA_MACHINE_DRV
19662306a36Sopenharmony_ci	select SND_SOC_RT5631
19762306a36Sopenharmony_ci	help
19862306a36Sopenharmony_ci	  Say Y or M here if you want to add support for SoC audio on Tegra
19962306a36Sopenharmony_ci	  boards using the RT5631 codec, such as Transformer.
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ciconfig SND_SOC_TEGRA_RT5640
20262306a36Sopenharmony_ci	tristate "SoC Audio support for Tegra boards using an RT5640 codec"
20362306a36Sopenharmony_ci	depends on I2C && GPIOLIB
20462306a36Sopenharmony_ci	select SND_SOC_TEGRA_MACHINE_DRV
20562306a36Sopenharmony_ci	select SND_SOC_RT5640
20662306a36Sopenharmony_ci	help
20762306a36Sopenharmony_ci	  Say Y or M here if you want to add support for SoC audio on Tegra
20862306a36Sopenharmony_ci	  boards using the RT5640 codec, such as Dalmore.
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ciconfig SND_SOC_TEGRA_WM8753
21162306a36Sopenharmony_ci	tristate "SoC Audio support for Tegra boards using a WM8753 codec"
21262306a36Sopenharmony_ci	depends on I2C && GPIOLIB
21362306a36Sopenharmony_ci	select SND_SOC_TEGRA_MACHINE_DRV
21462306a36Sopenharmony_ci	select SND_SOC_WM8753
21562306a36Sopenharmony_ci	help
21662306a36Sopenharmony_ci	  Say Y or M here if you want to add support for SoC audio on Tegra
21762306a36Sopenharmony_ci	  boards using the WM8753 codec, such as Whistler.
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ciconfig SND_SOC_TEGRA_WM8903
22062306a36Sopenharmony_ci	tristate "SoC Audio support for Tegra boards using a WM8903 codec"
22162306a36Sopenharmony_ci	depends on I2C && GPIOLIB
22262306a36Sopenharmony_ci	select SND_SOC_TEGRA_MACHINE_DRV
22362306a36Sopenharmony_ci	select SND_SOC_WM8903
22462306a36Sopenharmony_ci	help
22562306a36Sopenharmony_ci	  Say Y or M here if you want to add support for SoC audio on Tegra
22662306a36Sopenharmony_ci	  boards using the WM8093 codec. Currently, the supported boards are
22762306a36Sopenharmony_ci	  Harmony, Ventana, Seaboard, Kaen, and Aebl.
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ciconfig SND_SOC_TEGRA_WM9712
23062306a36Sopenharmony_ci	tristate "SoC Audio support for Tegra boards using a WM9712 codec"
23162306a36Sopenharmony_ci	depends on GPIOLIB
23262306a36Sopenharmony_ci	select SND_SOC_TEGRA_MACHINE_DRV
23362306a36Sopenharmony_ci	select SND_SOC_TEGRA20_AC97
23462306a36Sopenharmony_ci	select SND_SOC_WM9712
23562306a36Sopenharmony_ci	help
23662306a36Sopenharmony_ci	  Say Y or M here if you want to add support for SoC audio on Tegra
23762306a36Sopenharmony_ci	  boards using the WM9712 (or compatible) codec.
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ciconfig SND_SOC_TEGRA_TRIMSLICE
24062306a36Sopenharmony_ci	tristate "SoC Audio support for TrimSlice board"
24162306a36Sopenharmony_ci	depends on I2C
24262306a36Sopenharmony_ci	select SND_SOC_TEGRA_MACHINE_DRV
24362306a36Sopenharmony_ci	select SND_SOC_TLV320AIC23_I2C
24462306a36Sopenharmony_ci	help
24562306a36Sopenharmony_ci	  Say Y or M here if you want to add support for SoC audio on the
24662306a36Sopenharmony_ci	  TrimSlice platform.
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ciconfig SND_SOC_TEGRA_ALC5632
24962306a36Sopenharmony_ci	tristate "SoC Audio support for Tegra boards using an ALC5632 codec"
25062306a36Sopenharmony_ci	depends on I2C && GPIOLIB
25162306a36Sopenharmony_ci	select SND_SOC_TEGRA_MACHINE_DRV
25262306a36Sopenharmony_ci	select SND_SOC_ALC5632
25362306a36Sopenharmony_ci	help
25462306a36Sopenharmony_ci	  Say Y or M here if you want to add support for SoC audio on the
25562306a36Sopenharmony_ci	  Toshiba AC100 netbook.
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_ciconfig SND_SOC_TEGRA_MAX98090
25862306a36Sopenharmony_ci	tristate "SoC Audio support for Tegra boards using a MAX98090 codec"
25962306a36Sopenharmony_ci	depends on I2C && GPIOLIB
26062306a36Sopenharmony_ci	select SND_SOC_TEGRA_MACHINE_DRV
26162306a36Sopenharmony_ci	select SND_SOC_MAX98090
26262306a36Sopenharmony_ci	help
26362306a36Sopenharmony_ci	  Say Y or M here if you want to add support for SoC audio on Tegra
26462306a36Sopenharmony_ci	  boards using the MAX98090 codec, such as Venice2.
26562306a36Sopenharmony_ci
26662306a36Sopenharmony_ciconfig SND_SOC_TEGRA_MAX98088
26762306a36Sopenharmony_ci	tristate "SoC Audio support for Tegra boards using a MAX9808x codec"
26862306a36Sopenharmony_ci	depends on I2C && GPIOLIB
26962306a36Sopenharmony_ci	select SND_SOC_TEGRA_MACHINE_DRV
27062306a36Sopenharmony_ci	select SND_SOC_MAX98088
27162306a36Sopenharmony_ci	help
27262306a36Sopenharmony_ci	  Say Y or M here if you want to add support for SoC audio on Tegra
27362306a36Sopenharmony_ci	  boards using the MAX98088 codec, such as LG X3.
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ciconfig SND_SOC_TEGRA_RT5677
27662306a36Sopenharmony_ci	tristate "SoC Audio support for Tegra boards using a RT5677 codec"
27762306a36Sopenharmony_ci	depends on I2C && GPIOLIB
27862306a36Sopenharmony_ci	select SND_SOC_TEGRA_MACHINE_DRV
27962306a36Sopenharmony_ci	select SND_SOC_RT5677
28062306a36Sopenharmony_ci	help
28162306a36Sopenharmony_ci	  Say Y or M here if you want to add support for SoC audio on Tegra
28262306a36Sopenharmony_ci	  boards using the RT5677 codec, such as Ryu.
28362306a36Sopenharmony_ci
28462306a36Sopenharmony_ciconfig SND_SOC_TEGRA_SGTL5000
28562306a36Sopenharmony_ci	tristate "SoC Audio support for Tegra boards using a SGTL5000 codec"
28662306a36Sopenharmony_ci	depends on I2C && GPIOLIB
28762306a36Sopenharmony_ci	select SND_SOC_TEGRA_MACHINE_DRV
28862306a36Sopenharmony_ci	select SND_SOC_SGTL5000
28962306a36Sopenharmony_ci	help
29062306a36Sopenharmony_ci	  Say Y or M here if you want to add support for SoC audio on Tegra
29162306a36Sopenharmony_ci	  boards using the SGTL5000 codec, such as Apalis T30, Apalis TK1 or
29262306a36Sopenharmony_ci	  Colibri T30.
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ciendif
295