Commit 33cc2839 authored by Vaibhav Agarwal's avatar Vaibhav Agarwal Committed by Greg Kroah-Hartman

greybus: audio: Report jack removal along with module removal

For GB module with jack slot supported, headset/headphone can still
be inserted at the time of module removal. In this case, above layer is
unaware about jack removal event which happened due to module removal.
This may lead to inconsistent state in above HAL layer.  Fix this by
reporting jack removal event explicitly.
Signed-off-by: default avatarVaibhav Agarwal <vaibhav.agarwal@linaro.org>
Reviewed-by: default avatarMark Greer <mgreer@animalcreek.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent 9141ad87
......@@ -909,6 +909,7 @@ void gbaudio_unregister_module(struct gbaudio_module_info *module)
struct snd_soc_codec *codec = gbcodec->codec;
struct snd_card *card = codec->card->snd_card;
struct snd_soc_jack *jack, *next_j;
int mask;
dev_dbg(codec->dev, "Unregister %s module\n", module->name);
......@@ -922,8 +923,16 @@ void gbaudio_unregister_module(struct gbaudio_module_info *module)
#ifdef CONFIG_SND_JACK
/* free jack devices for this module from codec->jack_list */
list_for_each_entry_safe(jack, next_j, &codec->jack_list, list) {
if ((jack == &module->headset_jack)
|| (jack == &module->button_jack)) {
if (jack == &module->headset_jack)
mask = GBCODEC_JACK_MASK;
else if (jack == &module->button_jack)
mask = GBCODEC_JACK_BUTTON_MASK;
else
mask = 0;
if (mask) {
dev_dbg(module->dev, "Report %s removal\n",
jack->jack->id);
snd_soc_jack_report(jack, 0, mask);
snd_device_free(codec->card->snd_card, jack->jack);
list_del(&jack->list);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment