Re: usb/178722: commit references a PR
The following reply was made to PR usb/178722; it has been noted by GNATS. From: dfil...@freebsd.org (dfilter service) To: bug-follo...@freebsd.org Cc: Subject: Re: usb/178722: commit references a PR Date: Sat, 25 May 2013 17:19:14 + (UTC) Author: hselasky Date: Sat May 25 17:19:06 2013 New Revision: 250988 URL: http://svnweb.freebsd.org/changeset/base/250988 Log: MFC r250763 and r250765: Fix some USB audio device issues. PR: usb/178722 Modified: stable/8/sys/dev/sound/usb/uaudio.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/dev/ (props changed) stable/8/sys/dev/sound/ (props changed) stable/8/sys/dev/sound/usb/ (props changed) Modified: stable/8/sys/dev/sound/usb/uaudio.c == --- stable/8/sys/dev/sound/usb/uaudio.cSat May 25 17:16:31 2013 (r250987) +++ stable/8/sys/dev/sound/usb/uaudio.cSat May 25 17:19:06 2013 (r250988) @@ -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, @@ -5565,7 +5592,6 @@ umidi_open(struct usb_fifo *fifo, int ff } /* clear stall first */ mtx_lock(chan-mtx); - usbd_xfer_set_stall(chan-xfer[UMIDI_TX_TRANSFER]); chan-write_open_refcount++; sub-write_open = 1; @@ -5664,9 +5690,6 @@ umidi_probe(device_t dev) mtx_lock(chan-mtx); - /* clear stall first */ - usbd_xfer_set_stall(chan-xfer[UMIDI_RX_TRANSFER]); - /* * NOTE: At least one device will not work properly unless the * BULK IN pipe is open all the time. This might have to do @@ -5771,8 +5794,11 @@ tr_setup: break; default:/* Error */ + + DPRINTF(error=%s\n, usbd_errstr(error)); + if (error != USB_ERR_CANCELLED) { - /* try clear stall first */ + /* try to clear stall first */ usbd_xfer_set_stall(xfer); goto tr_setup; } ___ svn-src-...@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org ___ freebsd-usb@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to freebsd-usb-unsubscr...@freebsd.org
Re: usb/178722: commit references a PR
The following reply was made to PR usb/178722; it has been noted by GNATS. From: dfil...@freebsd.org (dfilter service) To: bug-follo...@freebsd.org Cc: Subject: Re: usb/178722: commit references a PR Date: Sat, 25 May 2013 17:16:44 + (UTC) Author: hselasky Date: Sat May 25 17:16:31 2013 New Revision: 250987 URL: http://svnweb.freebsd.org/changeset/base/250987 Log: MFC r250763 and r250765: Fix some USB audio device issues. PR: usb/178722 Modified: stable/9/sys/dev/sound/usb/uaudio.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/sound/usb/uaudio.c == --- stable/9/sys/dev/sound/usb/uaudio.cSat May 25 17:09:58 2013 (r250986) +++ stable/9/sys/dev/sound/usb/uaudio.cSat May 25 17:16:31 2013 (r250987) @@ -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, @@ -5565,7 +5592,6 @@ umidi_open(struct usb_fifo *fifo, int ff } /* clear stall first */ mtx_lock(chan-mtx); - usbd_xfer_set_stall(chan-xfer[UMIDI_TX_TRANSFER]); chan-write_open_refcount++; sub-write_open = 1; @@ -5664,9 +5690,6 @@ umidi_probe(device_t dev) mtx_lock(chan-mtx); - /* clear stall first */ - usbd_xfer_set_stall(chan-xfer[UMIDI_RX_TRANSFER]); - /* * NOTE: At least one device will not work properly unless the * BULK IN pipe is open all the time. This might have to do @@ -5771,8 +5794,11 @@ tr_setup: break; default:/* Error */ + + DPRINTF(error=%s\n, usbd_errstr(error)); + if (error != USB_ERR_CANCELLED) { - /* try clear stall first */ + /* try to clear stall first */ usbd_xfer_set_stall(xfer); goto tr_setup; } ___ svn-src-...@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org ___ freebsd-usb@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to freebsd-usb-unsubscr...@freebsd.org
Re: usb/178722: commit references a PR
The following reply was made to PR usb/178722; it has been noted by GNATS. From: dfil...@freebsd.org (dfilter service) To: bug-follo...@freebsd.org Cc: Subject: Re: usb/178722: commit references a PR Date: Sat, 18 May 2013 07:03:15 + (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.cSat May 18 05:48:46 2013 (r250762) +++ head/sys/dev/sound/usb/uaudio.cSat 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-...@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org ___ freebsd-usb@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to freebsd-usb-unsubscr...@freebsd.org