diff options
Diffstat (limited to 'sound/soc/codecs/rt286.c')
-rw-r--r-- | sound/soc/codecs/rt286.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/sound/soc/codecs/rt286.c b/sound/soc/codecs/rt286.c index f374840a5a7c..16723b167fbf 100644 --- a/sound/soc/codecs/rt286.c +++ b/sound/soc/codecs/rt286.c | |||
@@ -395,9 +395,20 @@ int rt286_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack) | |||
395 | 395 | ||
396 | rt286->jack = jack; | 396 | rt286->jack = jack; |
397 | 397 | ||
398 | /* Send an initial empty report */ | 398 | if (jack) { |
399 | snd_soc_jack_report(rt286->jack, 0, | 399 | /* enable IRQ */ |
400 | SND_JACK_MICROPHONE | SND_JACK_HEADPHONE); | 400 | if (rt286->jack->status | SND_JACK_HEADPHONE) |
401 | snd_soc_dapm_force_enable_pin(&codec->dapm, "LDO1"); | ||
402 | regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x2, 0x2); | ||
403 | /* Send an initial empty report */ | ||
404 | snd_soc_jack_report(rt286->jack, rt286->jack->status, | ||
405 | SND_JACK_MICROPHONE | SND_JACK_HEADPHONE); | ||
406 | } else { | ||
407 | /* disable IRQ */ | ||
408 | regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x2, 0x0); | ||
409 | snd_soc_dapm_disable_pin(&codec->dapm, "LDO1"); | ||
410 | } | ||
411 | snd_soc_dapm_sync(&codec->dapm); | ||
401 | 412 | ||
402 | return 0; | 413 | return 0; |
403 | } | 414 | } |