diff --git a/sound/soc/codecs/cpcap.c b/sound/soc/codecs/cpcap.c index d7dedf016ed1c..0b526c2a00d8e 100644 --- a/sound/soc/codecs/cpcap.c +++ b/sound/soc/codecs/cpcap.c @@ -1473,6 +1473,31 @@ static int cpcap_voice_call(struct cpcap_audio *cpcap, struct snd_soc_dai *dai, err = regmap_update_bits(cpcap->regmap, CPCAP_REG_CDI, mask, voice_call ? mask : 0); + printk("VOICE CALL %i\n", voice_call); + + if (voice_call) + { + struct snd_soc_dapm_widget *w; + + w = snd_soc_dai_get_widget(dai, SNDRV_PCM_STREAM_PLAYBACK); + + w->active = 1; + snd_soc_dai_activate(dai, SNDRV_PCM_STREAM_PLAYBACK); + snd_soc_dapm_force_enable_pin(w->dapm, w->name); + snd_soc_dapm_sync(w->dapm); + } + else + { + struct snd_soc_dapm_widget *w; + + w = snd_soc_dai_get_widget(dai, SNDRV_PCM_STREAM_PLAYBACK); + + w->active = 0; + snd_soc_dai_deactivate(dai, SNDRV_PCM_STREAM_PLAYBACK); + snd_soc_dapm_disable_pin(w->dapm, w->name); + snd_soc_dapm_sync(w->dapm); + } + return err; }