forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-31 f70575805708cabdedea7498aaa3f710fde4d920
kernel/sound/soc/codecs/cs4265.c
....@@ -1,14 +1,10 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * cs4265.c -- CS4265 ALSA SoC audio driver
34 *
45 * Copyright 2014 Cirrus Logic, Inc.
56 *
67 * Author: Paul Handrigan <paul.handrigan@cirrus.com>
7
- *
8
- * This program is free software; you can redistribute it and/or modify
9
- * it under the terms of the GNU General Public License version 2 as
10
- * published by the Free Software Foundation.
11
- *
128 */
139
1410 #include <linux/module.h>
....@@ -157,8 +153,7 @@
157153 SOC_SINGLE("Validity Bit Control Switch", CS4265_SPDIF_CTL2,
158154 3, 1, 0),
159155 SOC_ENUM("SPDIF Mono/Stereo", spdif_mono_stereo_enum),
160
- SOC_SINGLE("MMTLR Data Switch", CS4265_SPDIF_CTL2,
161
- 0, 1, 0),
156
+ SOC_SINGLE("MMTLR Data Switch", CS4265_SPDIF_CTL2, 0, 1, 0),
162157 SOC_ENUM("Mono Channel Select", spdif_mono_select_enum),
163158 SND_SOC_BYTES("C Data Buffer", CS4265_C_DATA_BUFF, 24),
164159 };
....@@ -190,7 +185,7 @@
190185
191186 SND_SOC_DAPM_SWITCH("Loopback", SND_SOC_NOPM, 0, 0,
192187 &loopback_ctl),
193
- SND_SOC_DAPM_SWITCH("SPDIF", SND_SOC_NOPM, 0, 0,
188
+ SND_SOC_DAPM_SWITCH("SPDIF", CS4265_SPDIF_CTL2, 5, 1,
194189 &spdif_switch),
195190 SND_SOC_DAPM_SWITCH("DAC", CS4265_PWRCTL, 1, 1,
196191 &dac_switch),
....@@ -221,10 +216,11 @@
221216 {"LINEOUTR", NULL, "DAC"},
222217 {"SPDIFOUT", NULL, "SPDIF"},
223218
219
+ {"Pre-amp MIC", NULL, "MICL"},
220
+ {"Pre-amp MIC", NULL, "MICR"},
221
+ {"ADC Mux", "MIC", "Pre-amp MIC"},
224222 {"ADC Mux", "LINEIN", "LINEINL"},
225223 {"ADC Mux", "LINEIN", "LINEINR"},
226
- {"ADC Mux", "MIC", "MICL"},
227
- {"ADC Mux", "MIC", "MICR"},
228224 {"ADC", NULL, "ADC Mux"},
229225 {"DOUT", NULL, "ADC"},
230226 {"DAI1 Capture", NULL, "DOUT"},
....@@ -381,7 +377,7 @@
381377 return 0;
382378 }
383379
384
-static int cs4265_digital_mute(struct snd_soc_dai *dai, int mute)
380
+static int cs4265_mute(struct snd_soc_dai *dai, int mute, int direction)
385381 {
386382 struct snd_soc_component *component = dai->component;
387383
....@@ -496,13 +492,15 @@
496492 SNDRV_PCM_RATE_176400 | SNDRV_PCM_RATE_192000)
497493
498494 #define CS4265_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_U16_LE | \
499
- SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_U24_LE)
495
+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_U24_LE | \
496
+ SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_U32_LE)
500497
501498 static const struct snd_soc_dai_ops cs4265_ops = {
502499 .hw_params = cs4265_pcm_hw_params,
503
- .digital_mute = cs4265_digital_mute,
500
+ .mute_stream = cs4265_mute,
504501 .set_fmt = cs4265_set_fmt,
505502 .set_sysclk = cs4265_set_sysclk,
503
+ .no_capture_mute = 1,
506504 };
507505
508506 static struct snd_soc_dai_driver cs4265_dai[] = {