ASoC: wm5102: Revert manual speaker enable
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Mon, 13 Jun 2016 12:35:17 +0000 (13:35 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 13 Jun 2016 14:11:48 +0000 (15:11 +0100)
The OUT4L and OUT4R widgets are not registered PRE_PMU or POST_PMD
events, as such the manual speaker enable on wm5102 does not actually
ever run. Furthermore since the issue actually only affected rev B of
the silicon which never shipped in volume, simply remove the work around
from the code.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/arizona.c
sound/soc/codecs/arizona.h

index e678157..73eab6c 100644 (file)
@@ -85,30 +85,9 @@ static int arizona_spk_ev(struct snd_soc_dapm_widget *w,
 {
        struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
        struct arizona *arizona = dev_get_drvdata(codec->dev->parent);
-       struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec);
-       bool manual_ena = false;
        int val;
 
-       switch (arizona->type) {
-       case WM5102:
-               switch (arizona->rev) {
-               case 0:
-                       break;
-               default:
-                       manual_ena = true;
-                       break;
-               }
-       default:
-               break;
-       }
-
        switch (event) {
-       case SND_SOC_DAPM_PRE_PMU:
-               if (!priv->spk_ena && manual_ena) {
-                       regmap_write_async(arizona->regmap, 0x4f5, 0x25a);
-                       priv->spk_ena_pending = true;
-               }
-               break;
        case SND_SOC_DAPM_POST_PMU:
                val = snd_soc_read(codec, ARIZONA_INTERRUPT_RAW_STATUS_3);
                if (val & ARIZONA_SPK_OVERHEAT_STS) {
@@ -120,33 +99,12 @@ static int arizona_spk_ev(struct snd_soc_dapm_widget *w,
                regmap_update_bits_async(arizona->regmap,
                                         ARIZONA_OUTPUT_ENABLES_1,
                                         1 << w->shift, 1 << w->shift);
-
-               if (priv->spk_ena_pending) {
-                       msleep(75);
-                       regmap_write_async(arizona->regmap, 0x4f5, 0xda);
-                       priv->spk_ena_pending = false;
-                       priv->spk_ena++;
-               }
                break;
        case SND_SOC_DAPM_PRE_PMD:
-               if (manual_ena) {
-                       priv->spk_ena--;
-                       if (!priv->spk_ena)
-                               regmap_write_async(arizona->regmap,
-                                                  0x4f5, 0x25a);
-               }
-
                regmap_update_bits_async(arizona->regmap,
                                         ARIZONA_OUTPUT_ENABLES_1,
                                         1 << w->shift, 0);
                break;
-       case SND_SOC_DAPM_POST_PMD:
-               if (manual_ena) {
-                       if (!priv->spk_ena)
-                               regmap_write_async(arizona->regmap,
-                                                  0x4f5, 0x0da);
-               }
-               break;
        default:
                break;
        }
index 02d836c..f01d0e7 100644 (file)
@@ -87,9 +87,6 @@ struct arizona_priv {
        unsigned int out_down_pending;
        unsigned int out_down_delay;
 
-       unsigned int spk_ena:2;
-       unsigned int spk_ena_pending:1;
-
        unsigned int dvfs_reqs;
        struct mutex dvfs_lock;
        bool dvfs_cached;