1# SPDX-License-Identifier: GPL-2.0-only
2config SND_SOC_TEGRA
3	tristate "SoC Audio for the Tegra System-on-Chip"
4	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
5	depends on COMMON_CLK
6	depends on RESET_CONTROLLER
7	select REGMAP_MMIO
8	select SND_SOC_GENERIC_DMAENGINE_PCM
9	help
10	  Say Y or M here if you want support for SoC audio on Tegra.
11
12if SND_SOC_TEGRA
13
14config SND_SOC_TEGRA20_AC97
15	tristate "Tegra20 AC97 interface"
16	select SND_SOC_AC97_BUS
17	select SND_SOC_TEGRA20_DAS
18	help
19	  Say Y or M if you want to add support for codecs attached to the
20	  Tegra20 AC97 interface. You will also need to select the individual
21	  machine drivers to support below.
22
23config SND_SOC_TEGRA20_DAS
24	tristate "Tegra20 DAS module"
25	help
26	  Say Y or M if you want to add support for the Tegra20 DAS module.
27	  You will also need to select the individual machine drivers to
28	  support below.
29
30config SND_SOC_TEGRA20_I2S
31	tristate "Tegra20 I2S interface"
32	select SND_SOC_TEGRA20_DAS
33	help
34	  Say Y or M if you want to add support for codecs attached to the
35	  Tegra20 I2S interface. You will also need to select the individual
36	  machine drivers to support below.
37
38config SND_SOC_TEGRA20_SPDIF
39	tristate "Tegra20 SPDIF interface"
40	help
41	  Say Y or M if you want to add support for the Tegra20 SPDIF interface.
42	  You will also need to select the individual machine drivers to support
43	  below.
44
45config SND_SOC_TEGRA30_AHUB
46	tristate "Tegra30 AHUB module"
47	help
48	  Say Y or M if you want to add support for the Tegra30 AHUB module.
49	  You will also need to select the individual machine drivers to
50	  support below.
51
52config SND_SOC_TEGRA30_I2S
53	tristate "Tegra30 I2S interface"
54	select SND_SOC_TEGRA30_AHUB
55	help
56	  Say Y or M if you want to add support for codecs attached to the
57	  Tegra30 I2S interface. You will also need to select the individual
58	  machine drivers to support below.
59
60config SND_SOC_TEGRA210_AHUB
61	tristate "Tegra210 AHUB module"
62	help
63	  Config to enable Audio Hub (AHUB) module, which comprises of a
64	  switch called Audio Crossbar (AXBAR) used to configure or modify
65	  the audio routing path between various HW accelerators present in
66	  AHUB.
67	  Say Y or M if you want to add support for Tegra210 AHUB module.
68
69config SND_SOC_TEGRA210_DMIC
70	tristate "Tegra210 DMIC module"
71	help
72	  Config to enable the Digital MIC (DMIC) controller which is used
73	  to interface with Pulse Density Modulation (PDM) input devices.
74	  The DMIC controller implements a converter to convert PDM signals
75	  to Pulse Code Modulation (PCM) signals. This can be viewed as a
76	  PDM receiver.
77	  Say Y or M if you want to add support for Tegra210 DMIC module.
78
79config SND_SOC_TEGRA210_I2S
80	tristate "Tegra210 I2S module"
81	select SND_SIMPLE_CARD_UTILS
82	help
83	  Config to enable the Inter-IC Sound (I2S) Controller which
84	  implements full-duplex and bidirectional and single direction
85	  point-to-point serial interfaces. It can interface with I2S
86	  compatible devices.
87	  Say Y or M if you want to add support for Tegra210 I2S module.
88
89config SND_SOC_TEGRA210_OPE
90	tristate "Tegra210 OPE module"
91	help
92	  Config to enable the Output Processing Engine (OPE) which includes
93	  Parametric Equalizer (PEQ) and Multi Band Dynamic Range Compressor
94	  (MBDRC) sub blocks for data processing. It can support up to 8
95	  channels.
96	  Say Y or M if you want to add support for Tegra210 OPE module.
97
98config SND_SOC_TEGRA186_ASRC
99	tristate "Tegra186 ASRC module"
100	help
101	  Config to enable the Asynchronous Sample Rate Converter (ASRC),
102	  which converts the sampling frequency of the input signal from
103	  one frequency to another. It can handle over a wide range of
104	  sample rate ratios (freq_in/freq_out) from 1:24 to 24:1.
105	  ASRC has two modes of operation. One where ratio can be programmed
106	  in SW and the other where it gets information from ratio estimator
107	  module.
108	  Say Y or M if you want to add support for Tegra186 ASRC module.
109
110config SND_SOC_TEGRA186_DSPK
111	tristate "Tegra186 DSPK module"
112	help
113	  Config to enable the Digital Speaker Controller (DSPK) which
114	  converts the multi-bit Pulse Code Modulation (PCM) audio input to
115	  oversampled 1-bit Pulse Density Modulation (PDM) output. From the
116	  signal flow perspective DSPK can be viewed as a PDM transmitter
117	  that up-samples the input to the desired sampling rate by
118	  interpolation and then converts the oversampled PCM input to
119	  the desired 1-bit output via Delta Sigma Modulation (DSM).
120	  Say Y or M if you want to add support for Tegra186 DSPK module.
121
122config SND_SOC_TEGRA210_ADMAIF
123	tristate "Tegra210 ADMAIF module"
124	help
125	  Config to enable ADMAIF which is the interface between ADMA and
126	  Audio Hub (AHUB). Each ADMA channel that sends/receives data to/
127	  from AHUB must interface through an ADMAIF channel. ADMA channel
128	  sending data to AHUB pairs with an ADMAIF Tx channel, where as
129	  ADMA channel receiving data from AHUB pairs with an ADMAIF Rx
130	  channel. Buffer size is configurable for each ADMAIIF channel.
131	  Say Y or M if you want to add support for Tegra210 ADMAIF module.
132
133config SND_SOC_TEGRA210_MVC
134	tristate "Tegra210 MVC module"
135	help
136	  Config to enable the digital Master Volume Controller (MVC) which
137	  provides gain or attenuation to a digital signal path. It can be
138	  used in input or output signal path. It can be used either for
139	  per-stream volume control or for master volume control.
140	  Say Y or M if you want to add support for Tegra210 MVC module.
141
142config SND_SOC_TEGRA210_SFC
143	tristate "Tegra210 SFC module"
144	help
145	  Config to enable the Sampling Frequency Converter (SFC) which
146	  converts the sampling frequency of input signal to another
147	  frequency. It supports sampling frequency conversion of streams
148	  up to 2 channels (stereo).
149	  Say Y or M if you want to add support for Tegra210 SFC module.
150
151config SND_SOC_TEGRA210_AMX
152	tristate "Tegra210 AMX module"
153	help
154	  Config to enable the Audio Multiplexer (AMX) which can multiplex
155	  four input streams (each of up to 16 channels) and generate
156	  output stream (of up to 16 channels). A byte RAM helps to form an
157	  output frame by any combination of bytes from the input frames.
158	  Say Y or M if you want to add support for Tegra210 AMX module.
159
160config SND_SOC_TEGRA210_ADX
161	tristate "Tegra210 ADX module"
162	help
163	  Config to enable the Audio Demultiplexer (ADX) which takes an
164	  input stream (up to 16 channels) and demultiplexes it into four
165	  output streams (each of up to 16 channels). A byte RAM helps to
166	  form output frames by any combination of bytes from the input
167	  frame. Its design is identical to that of byte RAM in the AMX
168	  except that the data flow direction is reversed.
169	  Say Y or M if you want to add support for Tegra210 ADX module.
170
171config SND_SOC_TEGRA210_MIXER
172	tristate "Tegra210 Mixer module"
173	help
174	  Config to enable the Mixer module which can help to mix multiple
175	  audio streams. It supports mixing of up to 10 input streams,
176	  where each stream can contain maximum of 8 channels. It supports
177	  5 output each of which can be a mix of any combination of 10
178	  input streams.
179	  Say Y or M if you want to add support for Tegra210 Mixer module.
180
181config SND_SOC_TEGRA_AUDIO_GRAPH_CARD
182	tristate "Audio Graph Card based Tegra driver"
183	depends on SND_AUDIO_GRAPH_CARD
184	help
185	  Config to enable Tegra audio machine driver based on generic
186	  audio graph driver. It is a thin driver written to customize
187	  few things for Tegra audio. Most of the code is re-used from
188	  audio graph driver and the same DT bindings are used.
189
190config SND_SOC_TEGRA_MACHINE_DRV
191	tristate
192
193config SND_SOC_TEGRA_RT5631
194	tristate "SoC Audio support for Tegra boards using an RT5631 codec"
195	depends on SND_SOC_TEGRA && I2C && GPIOLIB
196	select SND_SOC_TEGRA_MACHINE_DRV
197	select SND_SOC_RT5631
198	help
199	  Say Y or M here if you want to add support for SoC audio on Tegra
200	  boards using the RT5631 codec, such as Transformer.
201
202config SND_SOC_TEGRA_RT5640
203	tristate "SoC Audio support for Tegra boards using an RT5640 codec"
204	depends on I2C && GPIOLIB
205	select SND_SOC_TEGRA_MACHINE_DRV
206	select SND_SOC_RT5640
207	help
208	  Say Y or M here if you want to add support for SoC audio on Tegra
209	  boards using the RT5640 codec, such as Dalmore.
210
211config SND_SOC_TEGRA_WM8753
212	tristate "SoC Audio support for Tegra boards using a WM8753 codec"
213	depends on I2C && GPIOLIB
214	select SND_SOC_TEGRA_MACHINE_DRV
215	select SND_SOC_WM8753
216	help
217	  Say Y or M here if you want to add support for SoC audio on Tegra
218	  boards using the WM8753 codec, such as Whistler.
219
220config SND_SOC_TEGRA_WM8903
221	tristate "SoC Audio support for Tegra boards using a WM8903 codec"
222	depends on I2C && GPIOLIB
223	select SND_SOC_TEGRA_MACHINE_DRV
224	select SND_SOC_WM8903
225	help
226	  Say Y or M here if you want to add support for SoC audio on Tegra
227	  boards using the WM8093 codec. Currently, the supported boards are
228	  Harmony, Ventana, Seaboard, Kaen, and Aebl.
229
230config SND_SOC_TEGRA_WM9712
231	tristate "SoC Audio support for Tegra boards using a WM9712 codec"
232	depends on GPIOLIB
233	select SND_SOC_TEGRA_MACHINE_DRV
234	select SND_SOC_TEGRA20_AC97
235	select SND_SOC_WM9712
236	help
237	  Say Y or M here if you want to add support for SoC audio on Tegra
238	  boards using the WM9712 (or compatible) codec.
239
240config SND_SOC_TEGRA_TRIMSLICE
241	tristate "SoC Audio support for TrimSlice board"
242	depends on I2C
243	select SND_SOC_TEGRA_MACHINE_DRV
244	select SND_SOC_TLV320AIC23_I2C
245	help
246	  Say Y or M here if you want to add support for SoC audio on the
247	  TrimSlice platform.
248
249config SND_SOC_TEGRA_ALC5632
250	tristate "SoC Audio support for Tegra boards using an ALC5632 codec"
251	depends on I2C && GPIOLIB
252	select SND_SOC_TEGRA_MACHINE_DRV
253	select SND_SOC_ALC5632
254	help
255	  Say Y or M here if you want to add support for SoC audio on the
256	  Toshiba AC100 netbook.
257
258config SND_SOC_TEGRA_MAX98090
259	tristate "SoC Audio support for Tegra boards using a MAX98090 codec"
260	depends on I2C && GPIOLIB
261	select SND_SOC_TEGRA_MACHINE_DRV
262	select SND_SOC_MAX98090
263	help
264	  Say Y or M here if you want to add support for SoC audio on Tegra
265	  boards using the MAX98090 codec, such as Venice2.
266
267config SND_SOC_TEGRA_MAX98088
268	tristate "SoC Audio support for Tegra boards using a MAX9808x codec"
269	depends on I2C && GPIOLIB
270	select SND_SOC_TEGRA_MACHINE_DRV
271	select SND_SOC_MAX98088
272	help
273	  Say Y or M here if you want to add support for SoC audio on Tegra
274	  boards using the MAX98088 codec, such as LG X3.
275
276config SND_SOC_TEGRA_RT5677
277	tristate "SoC Audio support for Tegra boards using a RT5677 codec"
278	depends on I2C && GPIOLIB
279	select SND_SOC_TEGRA_MACHINE_DRV
280	select SND_SOC_RT5677
281	help
282	  Say Y or M here if you want to add support for SoC audio on Tegra
283	  boards using the RT5677 codec, such as Ryu.
284
285config SND_SOC_TEGRA_SGTL5000
286	tristate "SoC Audio support for Tegra boards using a SGTL5000 codec"
287	depends on I2C && GPIOLIB
288	select SND_SOC_TEGRA_MACHINE_DRV
289	select SND_SOC_SGTL5000
290	help
291	  Say Y or M here if you want to add support for SoC audio on Tegra
292	  boards using the SGTL5000 codec, such as Apalis T30, Apalis TK1 or
293	  Colibri T30.
294
295endif
296