diff options
Diffstat (limited to 'sound/soc/pxa/spitz.c')
| -rw-r--r-- | sound/soc/pxa/spitz.c | 58 | 
1 files changed, 29 insertions, 29 deletions
diff --git a/sound/soc/pxa/spitz.c b/sound/soc/pxa/spitz.c index fc052d8247ff..1373b017a951 100644 --- a/sound/soc/pxa/spitz.c +++ b/sound/soc/pxa/spitz.c @@ -46,74 +46,74 @@ static int spitz_mic_gpio;  static void spitz_ext_control(struct snd_soc_dapm_context *dapm)  { +	snd_soc_dapm_mutex_lock(dapm); +  	if (spitz_spk_func == SPITZ_SPK_ON) -		snd_soc_dapm_enable_pin(dapm, "Ext Spk"); +		snd_soc_dapm_enable_pin_unlocked(dapm, "Ext Spk");  	else -		snd_soc_dapm_disable_pin(dapm, "Ext Spk"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Ext Spk");  	/* set up jack connection */  	switch (spitz_jack_func) {  	case SPITZ_HP:  		/* enable and unmute hp jack, disable mic bias */ -		snd_soc_dapm_disable_pin(dapm, "Headset Jack"); -		snd_soc_dapm_disable_pin(dapm, "Mic Jack"); -		snd_soc_dapm_disable_pin(dapm, "Line Jack"); -		snd_soc_dapm_enable_pin(dapm, "Headphone Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack"); +		snd_soc_dapm_enable_pin_unlocked(dapm, "Headphone Jack");  		gpio_set_value(SPITZ_GPIO_MUTE_L, 1);  		gpio_set_value(SPITZ_GPIO_MUTE_R, 1);  		break;  	case SPITZ_MIC:  		/* enable mic jack and bias, mute hp */ -		snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); -		snd_soc_dapm_disable_pin(dapm, "Headset Jack"); -		snd_soc_dapm_disable_pin(dapm, "Line Jack"); -		snd_soc_dapm_enable_pin(dapm, "Mic Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack"); +		snd_soc_dapm_enable_pin_unlocked(dapm, "Mic Jack");  		gpio_set_value(SPITZ_GPIO_MUTE_L, 0);  		gpio_set_value(SPITZ_GPIO_MUTE_R, 0);  		break;  	case SPITZ_LINE:  		/* enable line jack, disable mic bias and mute hp */ -		snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); -		snd_soc_dapm_disable_pin(dapm, "Headset Jack"); -		snd_soc_dapm_disable_pin(dapm, "Mic Jack"); -		snd_soc_dapm_enable_pin(dapm, "Line Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack"); +		snd_soc_dapm_enable_pin_unlocked(dapm, "Line Jack");  		gpio_set_value(SPITZ_GPIO_MUTE_L, 0);  		gpio_set_value(SPITZ_GPIO_MUTE_R, 0);  		break;  	case SPITZ_HEADSET:  		/* enable and unmute headset jack enable mic bias, mute L hp */ -		snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); -		snd_soc_dapm_enable_pin(dapm, "Mic Jack"); -		snd_soc_dapm_disable_pin(dapm, "Line Jack"); -		snd_soc_dapm_enable_pin(dapm, "Headset Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack"); +		snd_soc_dapm_enable_pin_unlocked(dapm, "Mic Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack"); +		snd_soc_dapm_enable_pin_unlocked(dapm, "Headset Jack");  		gpio_set_value(SPITZ_GPIO_MUTE_L, 0);  		gpio_set_value(SPITZ_GPIO_MUTE_R, 1);  		break;  	case SPITZ_HP_OFF:  		/* jack removed, everything off */ -		snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); -		snd_soc_dapm_disable_pin(dapm, "Headset Jack"); -		snd_soc_dapm_disable_pin(dapm, "Mic Jack"); -		snd_soc_dapm_disable_pin(dapm, "Line Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack"); +		snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");  		gpio_set_value(SPITZ_GPIO_MUTE_L, 0);  		gpio_set_value(SPITZ_GPIO_MUTE_R, 0);  		break;  	} -	snd_soc_dapm_sync(dapm); + +	snd_soc_dapm_sync_unlocked(dapm); + +	snd_soc_dapm_mutex_unlock(dapm);  }  static int spitz_startup(struct snd_pcm_substream *substream)  {  	struct snd_soc_pcm_runtime *rtd = substream->private_data; -	struct snd_soc_codec *codec = rtd->codec; - -	mutex_lock(&codec->mutex);  	/* check the jack status at stream startup */ -	spitz_ext_control(&codec->dapm); - -	mutex_unlock(&codec->mutex); +	spitz_ext_control(&rtd->card->dapm);  	return 0;  }  | 
