aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/soc/codecs/tlv320aic3x.c10
-rw-r--r--sound/soc/codecs/wl1273.c3
-rw-r--r--sound/soc/omap/omap-mcbsp.c2
3 files changed, 10 insertions, 5 deletions
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
index b3175860bcb4..94dc707d9022 100644
--- a/sound/soc/codecs/tlv320aic3x.c
+++ b/sound/soc/codecs/tlv320aic3x.c
@@ -1069,7 +1069,8 @@ static int aic3x_set_bias_level(struct snd_soc_codec *codec,
1069 case SND_SOC_BIAS_ON: 1069 case SND_SOC_BIAS_ON:
1070 break; 1070 break;
1071 case SND_SOC_BIAS_PREPARE: 1071 case SND_SOC_BIAS_PREPARE:
1072 if (aic3x->master) { 1072 if (codec->bias_level == SND_SOC_BIAS_STANDBY &&
1073 aic3x->master) {
1073 /* enable pll */ 1074 /* enable pll */
1074 reg = aic3x_read_reg_cache(codec, AIC3X_PLL_PROGA_REG); 1075 reg = aic3x_read_reg_cache(codec, AIC3X_PLL_PROGA_REG);
1075 aic3x_write(codec, AIC3X_PLL_PROGA_REG, 1076 aic3x_write(codec, AIC3X_PLL_PROGA_REG,
@@ -1077,15 +1078,16 @@ static int aic3x_set_bias_level(struct snd_soc_codec *codec,
1077 } 1078 }
1078 break; 1079 break;
1079 case SND_SOC_BIAS_STANDBY: 1080 case SND_SOC_BIAS_STANDBY:
1080 /* fall through and disable pll */ 1081 if (codec->bias_level == SND_SOC_BIAS_PREPARE &&
1081 case SND_SOC_BIAS_OFF: 1082 aic3x->master) {
1082 if (aic3x->master) {
1083 /* disable pll */ 1083 /* disable pll */
1084 reg = aic3x_read_reg_cache(codec, AIC3X_PLL_PROGA_REG); 1084 reg = aic3x_read_reg_cache(codec, AIC3X_PLL_PROGA_REG);
1085 aic3x_write(codec, AIC3X_PLL_PROGA_REG, 1085 aic3x_write(codec, AIC3X_PLL_PROGA_REG,
1086 reg & ~PLL_ENABLE); 1086 reg & ~PLL_ENABLE);
1087 } 1087 }
1088 break; 1088 break;
1089 case SND_SOC_BIAS_OFF:
1090 break;
1089 } 1091 }
1090 codec->bias_level = level; 1092 codec->bias_level = level;
1091 1093
diff --git a/sound/soc/codecs/wl1273.c b/sound/soc/codecs/wl1273.c
index 0cd590970883..0c47c788ccdf 100644
--- a/sound/soc/codecs/wl1273.c
+++ b/sound/soc/codecs/wl1273.c
@@ -193,6 +193,9 @@ static int snd_wl1273_set_audio_route(struct snd_kcontrol *kcontrol,
193 struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); 193 struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
194 struct wl1273_priv *wl1273 = snd_soc_codec_get_drvdata(codec); 194 struct wl1273_priv *wl1273 = snd_soc_codec_get_drvdata(codec);
195 195
196 if (wl1273->mode == ucontrol->value.integer.value[0])
197 return 0;
198
196 /* Do not allow changes while stream is running */ 199 /* Do not allow changes while stream is running */
197 if (codec->active) 200 if (codec->active)
198 return -EPERM; 201 return -EPERM;
diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
index 7ba5690118f8..99696187b55a 100644
--- a/sound/soc/omap/omap-mcbsp.c
+++ b/sound/soc/omap/omap-mcbsp.c
@@ -759,7 +759,7 @@ static struct snd_soc_dai_driver omap_mcbsp_dai =
759 .ops = &mcbsp_dai_ops, 759 .ops = &mcbsp_dai_ops,
760}; 760};
761 761
762int omap_mcbsp_st_info_volsw(struct snd_kcontrol *kcontrol, 762static int omap_mcbsp_st_info_volsw(struct snd_kcontrol *kcontrol,
763 struct snd_ctl_elem_info *uinfo) 763 struct snd_ctl_elem_info *uinfo)
764{ 764{
765 struct soc_mixer_control *mc = 765 struct soc_mixer_control *mc =