Author: hselasky
Date: Thu May 21 07:10:49 2015
New Revision: 283185
URL: https://svnweb.freebsd.org/changeset/base/283185

Log:
  MFC r282652:
  Ensure the USB audio driver doesn't attach twice on the same USB
  device by grabbing all the USB audio device interfaces.

Modified:
  stable/10/sys/dev/sound/usb/uaudio.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/sound/usb/uaudio.c
==============================================================================
--- stable/10/sys/dev/sound/usb/uaudio.c        Thu May 21 07:09:19 2015        
(r283184)
+++ stable/10/sys/dev/sound/usb/uaudio.c        Thu May 21 07:10:49 2015        
(r283185)
@@ -1574,6 +1574,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) {
@@ -1809,9 +1822,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
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to