Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 25 May 2013 17:20:02 GMT
From:      dfilter@FreeBSD.ORG (dfilter service)
To:        freebsd-usb@FreeBSD.org
Subject:   Re: usb/178722: commit references a PR
Message-ID:  <201305251720.r4PHK2ca011308@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR usb/178722; it has been noted by GNATS.

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: usb/178722: commit references a PR
Date: Sat, 25 May 2013 17:16:44 +0000 (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.c	Sat May 25 17:09:58 2013	(r250986)
 +++ stable/9/sys/dev/sound/usb/uaudio.c	Sat 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-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201305251720.r4PHK2ca011308>