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	help
82	  Config to enable the Inter-IC Sound (I2S) Controller which
83	  implements full-duplex and bidirectional and single direction
84	  point-to-point serial interfaces. It can interface with I2S
85	  compatible devices.
86	  Say Y or M if you want to add support for Tegra210 I2S module.
87
88config SND_SOC_TEGRA186_ASRC
89	tristate "Tegra186 ASRC module"
90	help
91	  Config to enable the Asynchronous Sample Rate Converter (ASRC),
92	  which converts the sampling frequency of the input signal from
93	  one frequency to another. It can handle over a wide range of
94	  sample rate ratios (freq_in/freq_out) from 1:24 to 24:1.
95	  ASRC has two modes of operation. One where ratio can be programmed
96	  in SW and the other where it gets information from ratio estimator
97	  module.
98	  Say Y or M if you want to add support for Tegra186 ASRC module.
99
100config SND_SOC_TEGRA186_DSPK
101	tristate "Tegra186 DSPK module"
102	help
103	  Config to enable the Digital Speaker Controller (DSPK) which
104	  converts the multi-bit Pulse Code Modulation (PCM) audio input to
105	  oversampled 1-bit Pulse Density Modulation (PDM) output. From the
106	  signal flow perspective DSPK can be viewed as a PDM transmitter
107	  that up-samples the input to the desired sampling rate by
108	  interpolation and then converts the oversampled PCM input to
109	  the desired 1-bit output via Delta Sigma Modulation (DSM).
110	  Say Y or M if you want to add support for Tegra186 DSPK module.
111
112config SND_SOC_TEGRA210_ADMAIF
113	tristate "Tegra210 ADMAIF module"
114	help
115	  Config to enable ADMAIF which is the interface between ADMA and
116	  Audio Hub (AHUB). Each ADMA channel that sends/receives data to/
117	  from AHUB must interface through an ADMAIF channel. ADMA channel
118	  sending data to AHUB pairs with an ADMAIF Tx channel, where as
119	  ADMA channel receiving data from AHUB pairs with an ADMAIF Rx
120	  channel. Buffer size is configurable for each ADMAIIF channel.
121	  Say Y or M if you want to add support for Tegra210 ADMAIF module.
122
123config SND_SOC_TEGRA210_MVC
124	tristate "Tegra210 MVC module"
125	help
126	  Config to enable the digital Master Volume Controller (MVC) which
127	  provides gain or attenuation to a digital signal path. It can be
128	  used in input or output signal path. It can be used either for
129	  per-stream volume control or for master volume control.
130	  Say Y or M if you want to add support for Tegra210 MVC module.
131
132config SND_SOC_TEGRA210_SFC
133	tristate "Tegra210 SFC module"
134	help
135	  Config to enable the Sampling Frequency Converter (SFC) which
136	  converts the sampling frequency of input signal to another
137	  frequency. It supports sampling frequency conversion of streams
138	  upto 2 channels (stereo).
139	  Say Y or M if you want to add support for Tegra210 SFC module.
140
141config SND_SOC_TEGRA210_AMX
142	tristate "Tegra210 AMX module"
143	help
144	  Config to enable the Audio Multiplexer (AMX) which can multiplex
145	  four input streams (each of up to 16 channels) and generate
146	  output stream (of up to 16 channels). A byte RAM helps to form an
147	  output frame by any combination of bytes from the input frames.
148	  Say Y or M if you want to add support for Tegra210 AMX module.
149
150config SND_SOC_TEGRA210_ADX
151	tristate "Tegra210 ADX module"
152	help
153	  Config to enable the Audio Demultiplexer (ADX) which takes an
154	  input stream (up to 16 channels) and demultiplexes it into four
155	  output streams (each of up to 16 channels). A byte RAM helps to
156	  form output frames by any combination of bytes from the input
157	  frame. Its design is identical to that of byte RAM in the AMX
158	  except that the data flow direction is reversed.
159	  Say Y or M if you want to add support for Tegra210 ADX module.
160
161config SND_SOC_TEGRA210_MIXER
162	tristate "Tegra210 Mixer module"
163	help
164	  Config to enable the Mixer module which can help to mix multiple
165	  audio streams. It supports mixing of upto 10 input streams,
166	  where each stream can contain maximum of 8 channels. It supports
167	  5 output each of which can be a mix of any combination of 10
168	  input streams.
169	  Say Y or M if you want to add support for Tegra210 Mixer module.
170
171config SND_SOC_TEGRA_AUDIO_GRAPH_CARD
172	tristate "Audio Graph Card based Tegra driver"
173	depends on SND_AUDIO_GRAPH_CARD
174	help
175	  Config to enable Tegra audio machine driver based on generic
176	  audio graph driver. It is a thin driver written to customize
177	  few things for Tegra audio. Most of the code is re-used from
178	  audio graph driver and the same DT bindings are used.
179
180config SND_SOC_TEGRA_MACHINE_DRV
181	tristate
182
183config SND_SOC_TEGRA_RT5640
184	tristate "SoC Audio support for Tegra boards using an RT5640 codec"
185	depends on I2C && GPIOLIB
186	select SND_SOC_TEGRA_MACHINE_DRV
187	select SND_SOC_RT5640
188	help
189	  Say Y or M here if you want to add support for SoC audio on Tegra
190	  boards using the RT5640 codec, such as Dalmore.
191
192config SND_SOC_TEGRA_WM8753
193	tristate "SoC Audio support for Tegra boards using a WM8753 codec"
194	depends on I2C && GPIOLIB
195	select SND_SOC_TEGRA_MACHINE_DRV
196	select SND_SOC_WM8753
197	help
198	  Say Y or M here if you want to add support for SoC audio on Tegra
199	  boards using the WM8753 codec, such as Whistler.
200
201config SND_SOC_TEGRA_WM8903
202	tristate "SoC Audio support for Tegra boards using a WM8903 codec"
203	depends on I2C && GPIOLIB
204	select SND_SOC_TEGRA_MACHINE_DRV
205	select SND_SOC_WM8903
206	help
207	  Say Y or M here if you want to add support for SoC audio on Tegra
208	  boards using the WM8093 codec. Currently, the supported boards are
209	  Harmony, Ventana, Seaboard, Kaen, and Aebl.
210
211config SND_SOC_TEGRA_WM9712
212	tristate "SoC Audio support for Tegra boards using a WM9712 codec"
213	depends on GPIOLIB
214	select SND_SOC_TEGRA_MACHINE_DRV
215	select SND_SOC_TEGRA20_AC97
216	select SND_SOC_WM9712
217	help
218	  Say Y or M here if you want to add support for SoC audio on Tegra
219	  boards using the WM9712 (or compatible) codec.
220
221config SND_SOC_TEGRA_TRIMSLICE
222	tristate "SoC Audio support for TrimSlice board"
223	depends on I2C
224	select SND_SOC_TEGRA_MACHINE_DRV
225	select SND_SOC_TLV320AIC23_I2C
226	help
227	  Say Y or M here if you want to add support for SoC audio on the
228	  TrimSlice platform.
229
230config SND_SOC_TEGRA_ALC5632
231	tristate "SoC Audio support for Tegra boards using an ALC5632 codec"
232	depends on I2C && GPIOLIB
233	select SND_SOC_TEGRA_MACHINE_DRV
234	select SND_SOC_ALC5632
235	help
236	  Say Y or M here if you want to add support for SoC audio on the
237	  Toshiba AC100 netbook.
238
239config SND_SOC_TEGRA_MAX98090
240	tristate "SoC Audio support for Tegra boards using a MAX98090 codec"
241	depends on I2C && GPIOLIB
242	select SND_SOC_TEGRA_MACHINE_DRV
243	select SND_SOC_MAX98090
244	help
245	  Say Y or M here if you want to add support for SoC audio on Tegra
246	  boards using the MAX98090 codec, such as Venice2.
247
248config SND_SOC_TEGRA_RT5677
249	tristate "SoC Audio support for Tegra boards using a RT5677 codec"
250	depends on I2C && GPIOLIB
251	select SND_SOC_TEGRA_MACHINE_DRV
252	select SND_SOC_RT5677
253	help
254	  Say Y or M here if you want to add support for SoC audio on Tegra
255	  boards using the RT5677 codec, such as Ryu.
256
257config SND_SOC_TEGRA_SGTL5000
258	tristate "SoC Audio support for Tegra boards using a SGTL5000 codec"
259	depends on I2C && GPIOLIB
260	select SND_SOC_TEGRA_MACHINE_DRV
261	select SND_SOC_SGTL5000
262	help
263	  Say Y or M here if you want to add support for SoC audio on Tegra
264	  boards using the SGTL5000 codec, such as Apalis T30, Apalis TK1 or
265	  Colibri T30.
266
267endif
268