Ensure the USB audio driver doesn't attach twice on the same USB

device by grabbing all the USB audio device interfaces.

MFC after:	1 week
This commit is contained in:
Hans Petter Selasky 2015-05-08 17:48:48 +00:00
parent 9dd1273385
commit 8c20de927a

View File

@ -1575,6 +1575,19 @@ uaudio_chan_fill_info_sub(struct uaudio_softc *sc, struct usb_device *udev,
asf1d.v1 = NULL;
ed1 = NULL;
sed.v1 = NULL;
/*
* There can only be one USB audio instance
* per USB device. Grab all USB audio
* interfaces on this USB device so that we
* don't attach USB audio twice:
*/
if (alt_index == 0 && curidx != sc->sc_mixer_iface_index &&
(id->bInterfaceClass == UICLASS_AUDIO || audio_if != 0 ||
midi_if != 0)) {
usbd_set_parent_iface(sc->sc_udev, curidx,
sc->sc_mixer_iface_index);
}
}
if (audio_if == 0) {
@ -1810,9 +1823,6 @@ uaudio_chan_fill_info_sub(struct uaudio_softc *sc, struct usb_device *udev,
chan_alt->iface_index = curidx;
chan_alt->iface_alt_index = alt_index;
usbd_set_parent_iface(sc->sc_udev, curidx,
sc->sc_mixer_iface_index);
if (ep_dir == UE_DIR_IN)
chan_alt->usb_cfg = uaudio_cfg_record;
else