diff options
Diffstat (limited to 'sound/soc/soc-dapm.c')
| -rw-r--r-- | sound/soc/soc-dapm.c | 12 | 
1 files changed, 10 insertions, 2 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index 1e36bc81e5a..258acadb9e7 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -1023,7 +1023,7 @@ int dapm_regulator_event(struct snd_soc_dapm_widget *w,  	if (SND_SOC_DAPM_EVENT_ON(event)) {  		if (w->invert & SND_SOC_DAPM_REGULATOR_BYPASS) { -			ret = regulator_allow_bypass(w->regulator, true); +			ret = regulator_allow_bypass(w->regulator, false);  			if (ret != 0)  				dev_warn(w->dapm->dev,  					 "ASoC: Failed to bypass %s: %d\n", @@ -1033,7 +1033,7 @@ int dapm_regulator_event(struct snd_soc_dapm_widget *w,  		return regulator_enable(w->regulator);  	} else {  		if (w->invert & SND_SOC_DAPM_REGULATOR_BYPASS) { -			ret = regulator_allow_bypass(w->regulator, false); +			ret = regulator_allow_bypass(w->regulator, true);  			if (ret != 0)  				dev_warn(w->dapm->dev,  					 "ASoC: Failed to unbypass %s: %d\n", @@ -3039,6 +3039,14 @@ snd_soc_dapm_new_control(struct snd_soc_dapm_context *dapm,  				w->name, ret);  			return NULL;  		} + +		if (w->invert & SND_SOC_DAPM_REGULATOR_BYPASS) { +			ret = regulator_allow_bypass(w->regulator, true); +			if (ret != 0) +				dev_warn(w->dapm->dev, +					 "ASoC: Failed to unbypass %s: %d\n", +					 w->name, ret); +		}  		break;  	case snd_soc_dapm_clock_supply:  #ifdef CONFIG_CLKDEV_LOOKUP  |