ASoC: twl6040: Remove PLL usage restrictions
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Thu, 13 Oct 2011 12:05:42 +0000 (15:05 +0300)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 13 Oct 2011 16:19:39 +0000 (17:19 +0100)
There is no limitation dictated by outputs or inputs regarding to the
selected PLL (LP/HP).
Remove the checks for this, and allow all path with any PLL configuration.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/twl6040.c

index d078099c36865e698066e3ab1ed534ef5dd53318..8f033f0a42f5826d37cbc3d2960d51f5dc2c6757 100644 (file)
@@ -87,7 +87,6 @@ struct twl6040_data {
        int plug_irq;
        int codec_powered;
        int pll;
-       int non_lp;
        int pll_power_mode;
        int hs_power_mode;
        int hs_power_mode_locked;
@@ -588,10 +587,6 @@ static int out_drv_event(struct snd_soc_dapm_widget *w,
                out->left_step = priv->hf_left_step;
                out->right_step = priv->hf_right_step;
                out->step_delay = 5;    /* 5 ms between volume ramp steps */
-               if (SND_SOC_DAPM_EVENT_ON(event))
-                       priv->non_lp++;
-               else
-                       priv->non_lp--;
                break;
        default:
                return -1;
@@ -686,18 +681,12 @@ static int twl6040_power_mode_event(struct snd_soc_dapm_widget *w,
        int ret = 0;
 
        if (SND_SOC_DAPM_EVENT_ON(event)) {
-               priv->non_lp++;
-               if (!strcmp(w->name, "Earphone Driver")) {
-                       /* Earphone doesn't support low power mode */
-                       priv->hs_power_mode_locked = 1;
-                       ret = headset_power_mode(codec, 1);
-               }
+               /* Earphone doesn't support low power mode */
+               priv->hs_power_mode_locked = 1;
+               ret = headset_power_mode(codec, 1);
        } else {
-               priv->non_lp--;
-               if (!strcmp(w->name, "Earphone Driver")) {
-                       priv->hs_power_mode_locked = 0;
-                       ret = headset_power_mode(codec, priv->hs_power_mode);
-               }
+               priv->hs_power_mode_locked = 0;
+               ret = headset_power_mode(codec, priv->hs_power_mode);
        }
 
        msleep(1);
@@ -1125,14 +1114,10 @@ static const struct snd_soc_dapm_widget twl6040_dapm_widgets[] = {
        /* DACs */
        SND_SOC_DAPM_DAC("HSDAC Left", "Headset Playback", SND_SOC_NOPM, 0, 0),
        SND_SOC_DAPM_DAC("HSDAC Right", "Headset Playback", SND_SOC_NOPM, 0, 0),
-       SND_SOC_DAPM_DAC_E("HFDAC Left", "Handsfree Playback",
-                       TWL6040_REG_HFLCTL, 0, 0,
-                       twl6040_power_mode_event,
-                       SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
-       SND_SOC_DAPM_DAC_E("HFDAC Right", "Handsfree Playback",
-                       TWL6040_REG_HFRCTL, 0, 0,
-                       twl6040_power_mode_event,
-                       SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
+       SND_SOC_DAPM_DAC("HFDAC Left", "Handsfree Playback",
+                        TWL6040_REG_HFLCTL, 0, 0),
+       SND_SOC_DAPM_DAC("HFDAC Right", "Handsfree Playback",
+                        TWL6040_REG_HFRCTL, 0, 0),
        /* Virtual DAC for vibra path (DL4 channel) */
        SND_SOC_DAPM_DAC("VIBRA DAC", "Vibra Playback",
                        SND_SOC_NOPM, 0, 0),
@@ -1383,13 +1368,6 @@ static int twl6040_prepare(struct snd_pcm_substream *substream,
                return -EINVAL;
        }
 
-       if ((priv->sysclk == 17640000) && priv->non_lp) {
-                       dev_err(codec->dev,
-                               "some enabled paths aren't supported at %dHz\n",
-                               priv->sysclk);
-                       return -EPERM;
-       }
-
        ret = twl6040_set_pll(twl6040, priv->pll, priv->clk_in, priv->sysclk);
        if (ret) {
                dev_err(codec->dev, "Can not set PLL (%d)\n", ret);