hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/sound/soc/codecs/88pm860x-codec.c
....@@ -1,12 +1,9 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * 88pm860x-codec.c -- 88PM860x ALSA SoC Audio Driver
34 *
45 * Copyright 2010 Marvell International Ltd.
56 * Author: Haojian Zhuang <haojian.zhuang@marvell.com>
6
- *
7
- * This program is free software; you can redistribute it and/or modify
8
- * it under the terms of the GNU General Public License version 2 as
9
- * published by the Free Software Foundation.
107 */
118
129 #include <linux/kernel.h>
....@@ -277,10 +274,10 @@
277274 unsigned int reg2 = mc->rreg;
278275 int val[2], val2[2], i;
279276
280
- val[0] = snd_soc_component_read32(component, reg) & 0x3f;
281
- val[1] = (snd_soc_component_read32(component, PM860X_SIDETONE_SHIFT) >> 4) & 0xf;
282
- val2[0] = snd_soc_component_read32(component, reg2) & 0x3f;
283
- val2[1] = (snd_soc_component_read32(component, PM860X_SIDETONE_SHIFT)) & 0xf;
277
+ val[0] = snd_soc_component_read(component, reg) & 0x3f;
278
+ val[1] = (snd_soc_component_read(component, PM860X_SIDETONE_SHIFT) >> 4) & 0xf;
279
+ val2[0] = snd_soc_component_read(component, reg2) & 0x3f;
280
+ val2[1] = (snd_soc_component_read(component, PM860X_SIDETONE_SHIFT)) & 0xf;
284281
285282 for (i = 0; i < ARRAY_SIZE(st_table); i++) {
286283 if ((st_table[i].m == val[0]) && (st_table[i].n == val[1]))
....@@ -336,8 +333,8 @@
336333 int max = mc->max, val, val2;
337334 unsigned int mask = (1 << fls(max)) - 1;
338335
339
- val = snd_soc_component_read32(component, reg) >> shift;
340
- val2 = snd_soc_component_read32(component, reg2) >> shift;
336
+ val = snd_soc_component_read(component, reg) >> shift;
337
+ val2 = snd_soc_component_read(component, reg2) >> shift;
341338 ucontrol->value.integer.value[0] = (max - val) & mask;
342339 ucontrol->value.integer.value[1] = (max - val2) & mask;
343340
....@@ -429,7 +426,7 @@
429426 snd_soc_component_update_bits(component, PM860X_EAR_CTRL_2,
430427 RSYNC_CHANGE, RSYNC_CHANGE);
431428 /* update dac */
432
- data = snd_soc_component_read32(component, PM860X_DAC_EN_2);
429
+ data = snd_soc_component_read(component, PM860X_DAC_EN_2);
433430 data &= ~dac;
434431 if (!(data & (DAC_LEFT | DAC_RIGHT)))
435432 data &= ~MODULATOR;
....@@ -532,10 +529,6 @@
532529 * DAPM Controls
533530 */
534531
535
-/* PCM Switch / PCM Interface */
536
-static const struct snd_kcontrol_new pcm_switch_controls =
537
- SOC_DAPM_SINGLE("Switch", PM860X_ADC_EN_2, 0, 1, 0);
538
-
539532 /* AUX1 Switch */
540533 static const struct snd_kcontrol_new aux1_switch_controls =
541534 SOC_DAPM_SINGLE("Switch", PM860X_ANA_TO_ANA, 4, 1, 0);
....@@ -551,17 +544,6 @@
551544 /* Right Ex. PA Switch */
552545 static const struct snd_kcontrol_new repa_switch_controls =
553546 SOC_DAPM_SINGLE("Switch", PM860X_DAC_EN_2, 1, 1, 0);
554
-
555
-/* PCM Mux / Mux7 */
556
-static const char *aif1_text[] = {
557
- "PCM L", "PCM R",
558
-};
559
-
560
-static SOC_ENUM_SINGLE_DECL(aif1_enum,
561
- PM860X_PCM_IFACE_3, 6, aif1_text);
562
-
563
-static const struct snd_kcontrol_new aif1_mux =
564
- SOC_DAPM_ENUM("PCM Mux", aif1_enum);
565547
566548 /* I2S Mux / Mux9 */
567549 static const char *i2s_din_text[] = {
....@@ -920,7 +902,7 @@
920902 * Use MUTE_LEFT & MUTE_RIGHT to implement digital mute.
921903 * These bits can also be used to mute.
922904 */
923
-static int pm860x_digital_mute(struct snd_soc_dai *codec_dai, int mute)
905
+static int pm860x_mute_stream(struct snd_soc_dai *codec_dai, int mute, int direction)
924906 {
925907 struct snd_soc_component *component = codec_dai->component;
926908 int data = 0, mask = MUTE_LEFT | MUTE_RIGHT;
....@@ -1154,17 +1136,19 @@
11541136 }
11551137
11561138 static const struct snd_soc_dai_ops pm860x_pcm_dai_ops = {
1157
- .digital_mute = pm860x_digital_mute,
1139
+ .mute_stream = pm860x_mute_stream,
11581140 .hw_params = pm860x_pcm_hw_params,
11591141 .set_fmt = pm860x_pcm_set_dai_fmt,
11601142 .set_sysclk = pm860x_set_dai_sysclk,
1143
+ .no_capture_mute = 1,
11611144 };
11621145
11631146 static const struct snd_soc_dai_ops pm860x_i2s_dai_ops = {
1164
- .digital_mute = pm860x_digital_mute,
1147
+ .mute_stream = pm860x_mute_stream,
11651148 .hw_params = pm860x_i2s_hw_params,
11661149 .set_fmt = pm860x_i2s_set_dai_fmt,
11671150 .set_sysclk = pm860x_set_dai_sysclk,
1151
+ .no_capture_mute = 1,
11681152 };
11691153
11701154 #define PM860X_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | \