0001 # SPDX-License-Identifier: GPL-2.0-only
0002 config SND_SOC_TEGRA
0003 tristate "SoC Audio for the Tegra System-on-Chip"
0004 depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
0005 depends on COMMON_CLK
0006 depends on RESET_CONTROLLER
0007 select REGMAP_MMIO
0008 select SND_SOC_GENERIC_DMAENGINE_PCM
0009 help
0010 Say Y or M here if you want support for SoC audio on Tegra.
0011
0012 if SND_SOC_TEGRA
0013
0014 config SND_SOC_TEGRA20_AC97
0015 tristate "Tegra20 AC97 interface"
0016 select SND_SOC_AC97_BUS
0017 select SND_SOC_TEGRA20_DAS
0018 help
0019 Say Y or M if you want to add support for codecs attached to the
0020 Tegra20 AC97 interface. You will also need to select the individual
0021 machine drivers to support below.
0022
0023 config SND_SOC_TEGRA20_DAS
0024 tristate "Tegra20 DAS module"
0025 help
0026 Say Y or M if you want to add support for the Tegra20 DAS module.
0027 You will also need to select the individual machine drivers to
0028 support below.
0029
0030 config SND_SOC_TEGRA20_I2S
0031 tristate "Tegra20 I2S interface"
0032 select SND_SOC_TEGRA20_DAS
0033 help
0034 Say Y or M if you want to add support for codecs attached to the
0035 Tegra20 I2S interface. You will also need to select the individual
0036 machine drivers to support below.
0037
0038 config SND_SOC_TEGRA20_SPDIF
0039 tristate "Tegra20 SPDIF interface"
0040 help
0041 Say Y or M if you want to add support for the Tegra20 SPDIF interface.
0042 You will also need to select the individual machine drivers to support
0043 below.
0044
0045 config SND_SOC_TEGRA30_AHUB
0046 tristate "Tegra30 AHUB module"
0047 help
0048 Say Y or M if you want to add support for the Tegra30 AHUB module.
0049 You will also need to select the individual machine drivers to
0050 support below.
0051
0052 config SND_SOC_TEGRA30_I2S
0053 tristate "Tegra30 I2S interface"
0054 select SND_SOC_TEGRA30_AHUB
0055 help
0056 Say Y or M if you want to add support for codecs attached to the
0057 Tegra30 I2S interface. You will also need to select the individual
0058 machine drivers to support below.
0059
0060 config SND_SOC_TEGRA210_AHUB
0061 tristate "Tegra210 AHUB module"
0062 help
0063 Config to enable Audio Hub (AHUB) module, which comprises of a
0064 switch called Audio Crossbar (AXBAR) used to configure or modify
0065 the audio routing path between various HW accelerators present in
0066 AHUB.
0067 Say Y or M if you want to add support for Tegra210 AHUB module.
0068
0069 config SND_SOC_TEGRA210_DMIC
0070 tristate "Tegra210 DMIC module"
0071 help
0072 Config to enable the Digital MIC (DMIC) controller which is used
0073 to interface with Pulse Density Modulation (PDM) input devices.
0074 The DMIC controller implements a converter to convert PDM signals
0075 to Pulse Code Modulation (PCM) signals. This can be viewed as a
0076 PDM receiver.
0077 Say Y or M if you want to add support for Tegra210 DMIC module.
0078
0079 config SND_SOC_TEGRA210_I2S
0080 tristate "Tegra210 I2S module"
0081 help
0082 Config to enable the Inter-IC Sound (I2S) Controller which
0083 implements full-duplex and bidirectional and single direction
0084 point-to-point serial interfaces. It can interface with I2S
0085 compatible devices.
0086 Say Y or M if you want to add support for Tegra210 I2S module.
0087
0088 config SND_SOC_TEGRA210_OPE
0089 tristate "Tegra210 OPE module"
0090 help
0091 Config to enable the Output Processing Engine (OPE) which includes
0092 Parametric Equalizer (PEQ) and Multi Band Dynamic Range Compressor
0093 (MBDRC) sub blocks for data processing. It can support up to 8
0094 channels.
0095 Say Y or M if you want to add support for Tegra210 OPE module.
0096
0097 config SND_SOC_TEGRA186_ASRC
0098 tristate "Tegra186 ASRC module"
0099 help
0100 Config to enable the Asynchronous Sample Rate Converter (ASRC),
0101 which converts the sampling frequency of the input signal from
0102 one frequency to another. It can handle over a wide range of
0103 sample rate ratios (freq_in/freq_out) from 1:24 to 24:1.
0104 ASRC has two modes of operation. One where ratio can be programmed
0105 in SW and the other where it gets information from ratio estimator
0106 module.
0107 Say Y or M if you want to add support for Tegra186 ASRC module.
0108
0109 config SND_SOC_TEGRA186_DSPK
0110 tristate "Tegra186 DSPK module"
0111 help
0112 Config to enable the Digital Speaker Controller (DSPK) which
0113 converts the multi-bit Pulse Code Modulation (PCM) audio input to
0114 oversampled 1-bit Pulse Density Modulation (PDM) output. From the
0115 signal flow perspective DSPK can be viewed as a PDM transmitter
0116 that up-samples the input to the desired sampling rate by
0117 interpolation and then converts the oversampled PCM input to
0118 the desired 1-bit output via Delta Sigma Modulation (DSM).
0119 Say Y or M if you want to add support for Tegra186 DSPK module.
0120
0121 config SND_SOC_TEGRA210_ADMAIF
0122 tristate "Tegra210 ADMAIF module"
0123 help
0124 Config to enable ADMAIF which is the interface between ADMA and
0125 Audio Hub (AHUB). Each ADMA channel that sends/receives data to/
0126 from AHUB must interface through an ADMAIF channel. ADMA channel
0127 sending data to AHUB pairs with an ADMAIF Tx channel, where as
0128 ADMA channel receiving data from AHUB pairs with an ADMAIF Rx
0129 channel. Buffer size is configurable for each ADMAIIF channel.
0130 Say Y or M if you want to add support for Tegra210 ADMAIF module.
0131
0132 config SND_SOC_TEGRA210_MVC
0133 tristate "Tegra210 MVC module"
0134 help
0135 Config to enable the digital Master Volume Controller (MVC) which
0136 provides gain or attenuation to a digital signal path. It can be
0137 used in input or output signal path. It can be used either for
0138 per-stream volume control or for master volume control.
0139 Say Y or M if you want to add support for Tegra210 MVC module.
0140
0141 config SND_SOC_TEGRA210_SFC
0142 tristate "Tegra210 SFC module"
0143 help
0144 Config to enable the Sampling Frequency Converter (SFC) which
0145 converts the sampling frequency of input signal to another
0146 frequency. It supports sampling frequency conversion of streams
0147 upto 2 channels (stereo).
0148 Say Y or M if you want to add support for Tegra210 SFC module.
0149
0150 config SND_SOC_TEGRA210_AMX
0151 tristate "Tegra210 AMX module"
0152 help
0153 Config to enable the Audio Multiplexer (AMX) which can multiplex
0154 four input streams (each of up to 16 channels) and generate
0155 output stream (of up to 16 channels). A byte RAM helps to form an
0156 output frame by any combination of bytes from the input frames.
0157 Say Y or M if you want to add support for Tegra210 AMX module.
0158
0159 config SND_SOC_TEGRA210_ADX
0160 tristate "Tegra210 ADX module"
0161 help
0162 Config to enable the Audio Demultiplexer (ADX) which takes an
0163 input stream (up to 16 channels) and demultiplexes it into four
0164 output streams (each of up to 16 channels). A byte RAM helps to
0165 form output frames by any combination of bytes from the input
0166 frame. Its design is identical to that of byte RAM in the AMX
0167 except that the data flow direction is reversed.
0168 Say Y or M if you want to add support for Tegra210 ADX module.
0169
0170 config SND_SOC_TEGRA210_MIXER
0171 tristate "Tegra210 Mixer module"
0172 help
0173 Config to enable the Mixer module which can help to mix multiple
0174 audio streams. It supports mixing of upto 10 input streams,
0175 where each stream can contain maximum of 8 channels. It supports
0176 5 output each of which can be a mix of any combination of 10
0177 input streams.
0178 Say Y or M if you want to add support for Tegra210 Mixer module.
0179
0180 config SND_SOC_TEGRA_AUDIO_GRAPH_CARD
0181 tristate "Audio Graph Card based Tegra driver"
0182 depends on SND_AUDIO_GRAPH_CARD
0183 help
0184 Config to enable Tegra audio machine driver based on generic
0185 audio graph driver. It is a thin driver written to customize
0186 few things for Tegra audio. Most of the code is re-used from
0187 audio graph driver and the same DT bindings are used.
0188
0189 config SND_SOC_TEGRA_MACHINE_DRV
0190 tristate
0191
0192 config SND_SOC_TEGRA_RT5640
0193 tristate "SoC Audio support for Tegra boards using an RT5640 codec"
0194 depends on I2C && GPIOLIB
0195 select SND_SOC_TEGRA_MACHINE_DRV
0196 select SND_SOC_RT5640
0197 help
0198 Say Y or M here if you want to add support for SoC audio on Tegra
0199 boards using the RT5640 codec, such as Dalmore.
0200
0201 config SND_SOC_TEGRA_WM8753
0202 tristate "SoC Audio support for Tegra boards using a WM8753 codec"
0203 depends on I2C && GPIOLIB
0204 select SND_SOC_TEGRA_MACHINE_DRV
0205 select SND_SOC_WM8753
0206 help
0207 Say Y or M here if you want to add support for SoC audio on Tegra
0208 boards using the WM8753 codec, such as Whistler.
0209
0210 config SND_SOC_TEGRA_WM8903
0211 tristate "SoC Audio support for Tegra boards using a WM8903 codec"
0212 depends on I2C && GPIOLIB
0213 select SND_SOC_TEGRA_MACHINE_DRV
0214 select SND_SOC_WM8903
0215 help
0216 Say Y or M here if you want to add support for SoC audio on Tegra
0217 boards using the WM8093 codec. Currently, the supported boards are
0218 Harmony, Ventana, Seaboard, Kaen, and Aebl.
0219
0220 config SND_SOC_TEGRA_WM9712
0221 tristate "SoC Audio support for Tegra boards using a WM9712 codec"
0222 depends on GPIOLIB
0223 select SND_SOC_TEGRA_MACHINE_DRV
0224 select SND_SOC_TEGRA20_AC97
0225 select SND_SOC_WM9712
0226 help
0227 Say Y or M here if you want to add support for SoC audio on Tegra
0228 boards using the WM9712 (or compatible) codec.
0229
0230 config SND_SOC_TEGRA_TRIMSLICE
0231 tristate "SoC Audio support for TrimSlice board"
0232 depends on I2C
0233 select SND_SOC_TEGRA_MACHINE_DRV
0234 select SND_SOC_TLV320AIC23_I2C
0235 help
0236 Say Y or M here if you want to add support for SoC audio on the
0237 TrimSlice platform.
0238
0239 config SND_SOC_TEGRA_ALC5632
0240 tristate "SoC Audio support for Tegra boards using an ALC5632 codec"
0241 depends on I2C && GPIOLIB
0242 select SND_SOC_TEGRA_MACHINE_DRV
0243 select SND_SOC_ALC5632
0244 help
0245 Say Y or M here if you want to add support for SoC audio on the
0246 Toshiba AC100 netbook.
0247
0248 config SND_SOC_TEGRA_MAX98090
0249 tristate "SoC Audio support for Tegra boards using a MAX98090 codec"
0250 depends on I2C && GPIOLIB
0251 select SND_SOC_TEGRA_MACHINE_DRV
0252 select SND_SOC_MAX98090
0253 help
0254 Say Y or M here if you want to add support for SoC audio on Tegra
0255 boards using the MAX98090 codec, such as Venice2.
0256
0257 config SND_SOC_TEGRA_RT5677
0258 tristate "SoC Audio support for Tegra boards using a RT5677 codec"
0259 depends on I2C && GPIOLIB
0260 select SND_SOC_TEGRA_MACHINE_DRV
0261 select SND_SOC_RT5677
0262 help
0263 Say Y or M here if you want to add support for SoC audio on Tegra
0264 boards using the RT5677 codec, such as Ryu.
0265
0266 config SND_SOC_TEGRA_SGTL5000
0267 tristate "SoC Audio support for Tegra boards using a SGTL5000 codec"
0268 depends on I2C && GPIOLIB
0269 select SND_SOC_TEGRA_MACHINE_DRV
0270 select SND_SOC_SGTL5000
0271 help
0272 Say Y or M here if you want to add support for SoC audio on Tegra
0273 boards using the SGTL5000 codec, such as Apalis T30, Apalis TK1 or
0274 Colibri T30.
0275
0276 endif