forked from Minki/linux
ASoC: cs42l42: Report full jack status when plug is detected
When a plug event is detect report the full state of all status bits, don't assume that there will have been a previous unplug event to clear all the bits. Report the state of both HEADPHONE and MICROPHONE bits according to detected type, and clear all the button status bits. The current button status is already checked and reported at the end of the function. During a system suspend the jack could be unplugged and plugged, possibly changing the jack type. On resume the interrupt status will indicate a plug event - there will not be an unplug event to clear the bits. Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220121120412.672284-2-rf@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
6cbff4b3a1
commit
8d06f797f8
@ -1637,7 +1637,11 @@ static irqreturn_t cs42l42_irq_thread(int irq, void *data)
|
||||
|
||||
mutex_lock(&cs42l42->jack_detect_mutex);
|
||||
|
||||
/* Check auto-detect status */
|
||||
/*
|
||||
* Check auto-detect status. Don't assume a previous unplug event has
|
||||
* cleared the flags. If the jack is unplugged and plugged during
|
||||
* system suspend there won't have been an unplug event.
|
||||
*/
|
||||
if ((~masks[5]) & irq_params_table[5].mask) {
|
||||
if (stickies[5] & CS42L42_HSDET_AUTO_DONE_MASK) {
|
||||
cs42l42_process_hs_type_detect(cs42l42);
|
||||
@ -1645,11 +1649,15 @@ static irqreturn_t cs42l42_irq_thread(int irq, void *data)
|
||||
case CS42L42_PLUG_CTIA:
|
||||
case CS42L42_PLUG_OMTP:
|
||||
snd_soc_jack_report(cs42l42->jack, SND_JACK_HEADSET,
|
||||
SND_JACK_HEADSET);
|
||||
SND_JACK_HEADSET |
|
||||
SND_JACK_BTN_0 | SND_JACK_BTN_1 |
|
||||
SND_JACK_BTN_2 | SND_JACK_BTN_3);
|
||||
break;
|
||||
case CS42L42_PLUG_HEADPHONE:
|
||||
snd_soc_jack_report(cs42l42->jack, SND_JACK_HEADPHONE,
|
||||
SND_JACK_HEADPHONE);
|
||||
SND_JACK_HEADSET |
|
||||
SND_JACK_BTN_0 | SND_JACK_BTN_1 |
|
||||
SND_JACK_BTN_2 | SND_JACK_BTN_3);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user