mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-22 11:17:19 +00:00
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
This commit is contained in:
parent
21278efe5b
commit
33da3daa40
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=250763
@ -868,6 +868,7 @@ uaudio_attach(device_t dev)
|
|||||||
struct usb_attach_arg *uaa = device_get_ivars(dev);
|
struct usb_attach_arg *uaa = device_get_ivars(dev);
|
||||||
struct uaudio_softc *sc = device_get_softc(dev);
|
struct uaudio_softc *sc = device_get_softc(dev);
|
||||||
struct usb_interface_descriptor *id;
|
struct usb_interface_descriptor *id;
|
||||||
|
usb_error_t err;
|
||||||
device_t child;
|
device_t child;
|
||||||
|
|
||||||
sc->sc_play_chan.priv_sc = sc;
|
sc->sc_play_chan.priv_sc = sc;
|
||||||
@ -925,6 +926,19 @@ uaudio_attach(device_t dev)
|
|||||||
|
|
||||||
if (sc->sc_play_chan.num_alt > 0) {
|
if (sc->sc_play_chan.num_alt > 0) {
|
||||||
uint8_t x;
|
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++) {
|
for (x = 0; x != sc->sc_play_chan.num_alt; x++) {
|
||||||
device_printf(dev, "Play: %d Hz, %d ch, %s format, "
|
device_printf(dev, "Play: %d Hz, %d ch, %s format, "
|
||||||
"2x8ms buffer.\n",
|
"2x8ms buffer.\n",
|
||||||
@ -938,6 +952,19 @@ uaudio_attach(device_t dev)
|
|||||||
|
|
||||||
if (sc->sc_rec_chan.num_alt > 0) {
|
if (sc->sc_rec_chan.num_alt > 0) {
|
||||||
uint8_t x;
|
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++) {
|
for (x = 0; x != sc->sc_rec_chan.num_alt; x++) {
|
||||||
device_printf(dev, "Record: %d Hz, %d ch, %s format, "
|
device_printf(dev, "Record: %d Hz, %d ch, %s format, "
|
||||||
"2x8ms buffer.\n",
|
"2x8ms buffer.\n",
|
||||||
|
Loading…
Reference in New Issue
Block a user