usb/178722: commit references a PR
dfilter service
dfilter at FreeBSD.ORG
Sat May 18 07:10:01 UTC 2013
The following reply was made to PR usb/178722; it has been noted by GNATS.
From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:
Subject: Re: usb/178722: commit references a PR
Date: Sat, 18 May 2013 07:03:15 +0000 (UTC)
Author: hselasky
Date: Sat May 18 07:03:06 2013
New Revision: 250763
URL: http://svnweb.freebsd.org/changeset/base/250763
Log:
Fix issue with "Logitech Webcam C525":
Set a valid alternate interface setting
when enumerating USB audio devices else
the device mentioned will not work like
expected.
PR: usb/178722
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 Sat May 18 05:48:46 2013 (r250762)
+++ head/sys/dev/sound/usb/uaudio.c Sat May 18 07:03:06 2013 (r250763)
@@ -868,6 +868,7 @@ uaudio_attach(device_t dev)
struct usb_attach_arg *uaa = device_get_ivars(dev);
struct uaudio_softc *sc = device_get_softc(dev);
struct usb_interface_descriptor *id;
+ usb_error_t err;
device_t child;
sc->sc_play_chan.priv_sc = sc;
@@ -925,6 +926,19 @@ uaudio_attach(device_t dev)
if (sc->sc_play_chan.num_alt > 0) {
uint8_t x;
+
+ /*
+ * Need to set a default alternate interface, else
+ * some USB audio devices might go into an infinte
+ * re-enumeration loop:
+ */
+ err = usbd_set_alt_interface_index(sc->sc_udev,
+ sc->sc_play_chan.usb_alt[0].iface_index,
+ sc->sc_play_chan.usb_alt[0].iface_alt_index);
+ if (err) {
+ DPRINTF("setting of alternate index failed: %s!\n",
+ usbd_errstr(err));
+ }
for (x = 0; x != sc->sc_play_chan.num_alt; x++) {
device_printf(dev, "Play: %d Hz, %d ch, %s format, "
"2x8ms buffer.\n",
@@ -938,6 +952,19 @@ uaudio_attach(device_t dev)
if (sc->sc_rec_chan.num_alt > 0) {
uint8_t x;
+
+ /*
+ * Need to set a default alternate interface, else
+ * some USB audio devices might go into an infinte
+ * re-enumeration loop:
+ */
+ err = usbd_set_alt_interface_index(sc->sc_udev,
+ sc->sc_rec_chan.usb_alt[0].iface_index,
+ sc->sc_rec_chan.usb_alt[0].iface_alt_index);
+ if (err) {
+ DPRINTF("setting of alternate index failed: %s!\n",
+ usbd_errstr(err));
+ }
for (x = 0; x != sc->sc_rec_chan.num_alt; x++) {
device_printf(dev, "Record: %d Hz, %d ch, %s format, "
"2x8ms buffer.\n",
_______________________________________________
svn-src-all at freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
More information about the freebsd-usb
mailing list