Skip to content

Commit

Permalink
ASoC: rt286: add jack detection disable with NULL jack passed
Browse files Browse the repository at this point in the history
Some platforms, e.g. WSB, don't need jack detection when
system is in Suspend, for power save reason.

Here add headphone/mic jack detection disable feature with NULL
jack passed in, when disabled, it will disable interrupt, and
disable LDO1, which is used for jack detection when headphone
is plugged in.

Signed-off-by: Jie Yang <yang.jie@intel.com>
Reviewed-by: Bard Liao <bardliao@realtek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Jie Yang authored and Mark Brown committed Feb 24, 2015
1 parent c517d83 commit e2cef68
Showing 1 changed file with 14 additions and 3 deletions.
17 changes: 14 additions & 3 deletions sound/soc/codecs/rt286.c
Original file line number Diff line number Diff line change
Expand Up @@ -395,9 +395,20 @@ int rt286_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack)

rt286->jack = jack;

/* Send an initial empty report */
snd_soc_jack_report(rt286->jack, 0,
SND_JACK_MICROPHONE | SND_JACK_HEADPHONE);
if (jack) {
/* enable IRQ */
if (rt286->jack->status | SND_JACK_HEADPHONE)
snd_soc_dapm_force_enable_pin(&codec->dapm, "LDO1");
regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x2, 0x2);
/* Send an initial empty report */
snd_soc_jack_report(rt286->jack, rt286->jack->status,
SND_JACK_MICROPHONE | SND_JACK_HEADPHONE);
} else {
/* disable IRQ */
regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x2, 0x0);
snd_soc_dapm_disable_pin(&codec->dapm, "LDO1");
}
snd_soc_dapm_sync(&codec->dapm);

return 0;
}
Expand Down

0 comments on commit e2cef68

Please sign in to comment.