> /* Selects the latest USB headset plugged in for offloading */ > + if (data->hs_jack && list_empty(&data->devices)) > + snd_jack_report(data->hs_jack->jack, SND_JACK_USB); > + with the list_empty check, this looks like only the first connected headset will be handled, not the last? > list_add_tail(&sdev->list, &data->devices); > } else { > list_del(&sdev->list); > + > + if (data->hs_jack && list_empty(&data->devices)) > + snd_jack_report(data->hs_jack->jack, 0); > } > mutex_unlock(&data->mutex); > > return 0; > }