forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-31 f70575805708cabdedea7498aaa3f710fde4d920
kernel/sound/soc/codecs/wm8995.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * wm8995.c -- WM8995 ALSA SoC Audio driver
34 *
....@@ -6,10 +7,6 @@
67 * Author: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
78 *
89 * Based on wm8994.c and wm_hubs.c by Mark Brown
9
- *
10
- * This program is free software; you can redistribute it and/or modify
11
- * it under the terms of the GNU General Public License version 2 as
12
- * published by the Free Software Foundation.
1310 */
1411
1512 #include <linux/module.h>
....@@ -492,7 +489,7 @@
492489 int reg, reg_r;
493490
494491 /* We also need the same setting for L/R and only one path */
495
- reg = snd_soc_component_read32(component, WM8995_DAC1_LEFT_MIXER_ROUTING);
492
+ reg = snd_soc_component_read(component, WM8995_DAC1_LEFT_MIXER_ROUTING);
496493 switch (reg) {
497494 case WM8995_AIF2DACL_TO_DAC1L:
498495 dev_dbg(component->dev, "Class W source AIF2DAC\n");
....@@ -512,7 +509,7 @@
512509 break;
513510 }
514511
515
- reg_r = snd_soc_component_read32(component, WM8995_DAC1_RIGHT_MIXER_ROUTING);
512
+ reg_r = snd_soc_component_read(component, WM8995_DAC1_RIGHT_MIXER_ROUTING);
516513 if (reg_r != reg) {
517514 dev_dbg(component->dev, "Left and right DAC mixers different\n");
518515 enable = 0;
....@@ -538,7 +535,7 @@
538535 unsigned int reg;
539536 const char *clk;
540537
541
- reg = snd_soc_component_read32(component, WM8995_CLOCKING_1);
538
+ reg = snd_soc_component_read(component, WM8995_CLOCKING_1);
542539 /* Check what we're currently using for CLK_SYS */
543540 if (reg & WM8995_SYSCLK_SRC)
544541 clk = "AIF2CLK";
....@@ -599,7 +596,7 @@
599596 snd_soc_component_write(component, reg, val);
600597 while (timeout--) {
601598 msleep(10);
602
- val = snd_soc_component_read32(component, WM8995_DC_SERVO_READBACK_0);
599
+ val = snd_soc_component_read(component, WM8995_DC_SERVO_READBACK_0);
603600 if ((val & mask) == mask)
604601 return;
605602 }
....@@ -613,7 +610,7 @@
613610 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
614611 unsigned int reg;
615612
616
- reg = snd_soc_component_read32(component, WM8995_ANALOGUE_HP_1);
613
+ reg = snd_soc_component_read(component, WM8995_ANALOGUE_HP_1);
617614
618615 switch (event) {
619616 case SND_SOC_DAPM_POST_PMU:
....@@ -1420,7 +1417,7 @@
14201417 }
14211418 }
14221419
1423
-static int wm8995_aif_mute(struct snd_soc_dai *dai, int mute)
1420
+static int wm8995_aif_mute(struct snd_soc_dai *dai, int mute, int direction)
14241421 {
14251422 struct snd_soc_component *component = dai->component;
14261423 int mute_reg;
....@@ -1465,7 +1462,7 @@
14651462 switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
14661463 case SND_SOC_DAIFMT_DSP_B:
14671464 aif |= WM8995_AIF1_LRCLK_INV;
1468
- /* fall through */
1465
+ fallthrough;
14691466 case SND_SOC_DAIFMT_DSP_A:
14701467 aif |= (0x3 << WM8995_AIF1_FMT_SHIFT);
14711468 break;
....@@ -1807,10 +1804,10 @@
18071804 component = dai->component;
18081805 wm8995 = snd_soc_component_get_drvdata(component);
18091806
1810
- aif1 = snd_soc_component_read32(component, WM8995_AIF1_CLOCKING_1)
1807
+ aif1 = snd_soc_component_read(component, WM8995_AIF1_CLOCKING_1)
18111808 & WM8995_AIF1CLK_ENA;
18121809
1813
- aif2 = snd_soc_component_read32(component, WM8995_AIF2_CLOCKING_1)
1810
+ aif2 = snd_soc_component_read(component, WM8995_AIF2_CLOCKING_1)
18141811 & WM8995_AIF2CLK_ENA;
18151812
18161813 switch (id) {
....@@ -1995,20 +1992,6 @@
19951992 return 0;
19961993 }
19971994
1998
-static void wm8995_remove(struct snd_soc_component *component)
1999
-{
2000
- struct wm8995_priv *wm8995;
2001
- int i;
2002
-
2003
- wm8995 = snd_soc_component_get_drvdata(component);
2004
-
2005
- for (i = 0; i < ARRAY_SIZE(wm8995->supplies); ++i)
2006
- regulator_unregister_notifier(wm8995->supplies[i].consumer,
2007
- &wm8995->disable_nb[i]);
2008
-
2009
- regulator_bulk_free(ARRAY_SIZE(wm8995->supplies), wm8995->supplies);
2010
-}
2011
-
20121995 static int wm8995_probe(struct snd_soc_component *component)
20131996 {
20141997 struct wm8995_priv *wm8995;
....@@ -2021,8 +2004,9 @@
20212004 for (i = 0; i < ARRAY_SIZE(wm8995->supplies); i++)
20222005 wm8995->supplies[i].supply = wm8995_supply_names[i];
20232006
2024
- ret = regulator_bulk_get(component->dev, ARRAY_SIZE(wm8995->supplies),
2025
- wm8995->supplies);
2007
+ ret = devm_regulator_bulk_get(component->dev,
2008
+ ARRAY_SIZE(wm8995->supplies),
2009
+ wm8995->supplies);
20262010 if (ret) {
20272011 dev_err(component->dev, "Failed to request supplies: %d\n", ret);
20282012 return ret;
....@@ -2039,8 +2023,9 @@
20392023
20402024 /* This should really be moved into the regulator core */
20412025 for (i = 0; i < ARRAY_SIZE(wm8995->supplies); i++) {
2042
- ret = regulator_register_notifier(wm8995->supplies[i].consumer,
2043
- &wm8995->disable_nb[i]);
2026
+ ret = devm_regulator_register_notifier(
2027
+ wm8995->supplies[i].consumer,
2028
+ &wm8995->disable_nb[i]);
20442029 if (ret) {
20452030 dev_err(component->dev,
20462031 "Failed to register regulator notifier: %d\n",
....@@ -2052,10 +2037,10 @@
20522037 wm8995->supplies);
20532038 if (ret) {
20542039 dev_err(component->dev, "Failed to enable supplies: %d\n", ret);
2055
- goto err_reg_get;
2040
+ return ret;
20562041 }
20572042
2058
- ret = snd_soc_component_read32(component, WM8995_SOFTWARE_RESET);
2043
+ ret = snd_soc_component_read(component, WM8995_SOFTWARE_RESET);
20592044 if (ret < 0) {
20602045 dev_err(component->dev, "Failed to read device ID: %d\n", ret);
20612046 goto err_reg_enable;
....@@ -2099,8 +2084,6 @@
20992084
21002085 err_reg_enable:
21012086 regulator_bulk_disable(ARRAY_SIZE(wm8995->supplies), wm8995->supplies);
2102
-err_reg_get:
2103
- regulator_bulk_free(ARRAY_SIZE(wm8995->supplies), wm8995->supplies);
21042087 return ret;
21052088 }
21062089
....@@ -2111,18 +2094,20 @@
21112094 .set_sysclk = wm8995_set_dai_sysclk,
21122095 .set_fmt = wm8995_set_dai_fmt,
21132096 .hw_params = wm8995_hw_params,
2114
- .digital_mute = wm8995_aif_mute,
2097
+ .mute_stream = wm8995_aif_mute,
21152098 .set_pll = wm8995_set_fll,
21162099 .set_tristate = wm8995_set_tristate,
2100
+ .no_capture_mute = 1,
21172101 };
21182102
21192103 static const struct snd_soc_dai_ops wm8995_aif2_dai_ops = {
21202104 .set_sysclk = wm8995_set_dai_sysclk,
21212105 .set_fmt = wm8995_set_dai_fmt,
21222106 .hw_params = wm8995_hw_params,
2123
- .digital_mute = wm8995_aif_mute,
2107
+ .mute_stream = wm8995_aif_mute,
21242108 .set_pll = wm8995_set_fll,
21252109 .set_tristate = wm8995_set_tristate,
2110
+ .no_capture_mute = 1,
21262111 };
21272112
21282113 static const struct snd_soc_dai_ops wm8995_aif3_dai_ops = {
....@@ -2188,7 +2173,6 @@
21882173
21892174 static const struct snd_soc_component_driver soc_component_dev_wm8995 = {
21902175 .probe = wm8995_probe,
2191
- .remove = wm8995_remove,
21922176 .set_bias_level = wm8995_set_bias_level,
21932177 .controls = wm8995_snd_controls,
21942178 .num_controls = ARRAY_SIZE(wm8995_snd_controls),