svn commit: r282652 - head/sys/dev/sound/usb
Hans Petter Selasky
hselasky at FreeBSD.org
Fri May 8 17:48:49 UTC 2015
Author: hselasky
Date: Fri May 8 17:48:48 2015
New Revision: 282652
URL: https://svnweb.freebsd.org/changeset/base/282652
Log:
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
Modified:
head/sys/dev/sound/usb/uaudio.c
Modified: head/sys/dev/sound/usb/uaudio.c
==============================================================================
--- head/sys/dev/sound/usb/uaudio.c Fri May 8 17:07:11 2015 (r282651)
+++ head/sys/dev/sound/usb/uaudio.c Fri May 8 17:48:48 2015 (r282652)
@@ -1575,6 +1575,19 @@ uaudio_chan_fill_info_sub(struct uaudio_
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_
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
More information about the svn-src-head
mailing list