Don't set configuration unnecessarily, some (broken) devices seem to break
if you do.
This commit is contained in:
parent
0a52ae7e58
commit
5aa16bd113
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: ugen.c,v 1.6 1998/12/29 03:13:10 augustss Exp $ */
|
/* $NetBSD: ugen.c,v 1.7 1998/12/29 15:33:10 augustss Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||||
|
@ -132,16 +132,18 @@ USB_ATTACH(ugen)
|
||||||
USB_ATTACH_START(ugen, sc, uaa);
|
USB_ATTACH_START(ugen, sc, uaa);
|
||||||
char devinfo[1024];
|
char devinfo[1024];
|
||||||
usbd_status r;
|
usbd_status r;
|
||||||
|
int conf;
|
||||||
|
|
||||||
usbd_devinfo(uaa->device, 0, devinfo);
|
usbd_devinfo(uaa->device, 0, devinfo);
|
||||||
USB_ATTACH_SETUP;
|
USB_ATTACH_SETUP;
|
||||||
printf("%s: %s\n", USBDEVNAME(sc->sc_dev), devinfo);
|
printf("%s: %s\n", USBDEVNAME(sc->sc_dev), devinfo);
|
||||||
|
|
||||||
sc->sc_udev = uaa->device;
|
sc->sc_udev = uaa->device;
|
||||||
r = ugen_set_config(sc, 1); /* XXX 1 */
|
conf = 1; /* XXX should not hard code 1 */
|
||||||
|
r = ugen_set_config(sc, conf);
|
||||||
if (r != USBD_NORMAL_COMPLETION) {
|
if (r != USBD_NORMAL_COMPLETION) {
|
||||||
printf("%s: setting configuration 1 failed\n",
|
printf("%s: setting configuration %d failed\n",
|
||||||
USBDEVNAME(sc->sc_dev));
|
USBDEVNAME(sc->sc_dev), conf);
|
||||||
sc->sc_disconnected = 1;
|
sc->sc_disconnected = 1;
|
||||||
USB_ATTACH_ERROR_RETURN;
|
USB_ATTACH_ERROR_RETURN;
|
||||||
}
|
}
|
||||||
|
@ -163,9 +165,12 @@ ugen_set_config(sc, configno)
|
||||||
|
|
||||||
DPRINTFN(1,("ugen_set_config: %s to configno %d, sc=%p\n",
|
DPRINTFN(1,("ugen_set_config: %s to configno %d, sc=%p\n",
|
||||||
USBDEVNAME(sc->sc_dev), configno, sc));
|
USBDEVNAME(sc->sc_dev), configno, sc));
|
||||||
r = usbd_set_config_no(dev, configno, 0);
|
if (usbd_get_config_descriptor(dev)->bConfigurationValue != configno) {
|
||||||
if (r != USBD_NORMAL_COMPLETION)
|
/* Avoid setting the current value. */
|
||||||
return (r);
|
r = usbd_set_config_no(dev, configno, 0);
|
||||||
|
if (r != USBD_NORMAL_COMPLETION)
|
||||||
|
return (r);
|
||||||
|
}
|
||||||
|
|
||||||
r = usbd_interface_count(dev, &niface);
|
r = usbd_interface_count(dev, &niface);
|
||||||
if (r != USBD_NORMAL_COMPLETION)
|
if (r != USBD_NORMAL_COMPLETION)
|
||||||
|
|
Loading…
Reference in New Issue