summaryrefslogtreecommitdiff
path: root/sys/dev/usb/usb_subr.c
diff options
context:
space:
mode:
authorNick Hibma <n_hibma@FreeBSD.org>1999-11-21 17:30:42 +0000
committerNick Hibma <n_hibma@FreeBSD.org>1999-11-21 17:30:42 +0000
commit937791192aac279034d36f779dbe968cba663c7e (patch)
tree02b3b31338a30b76377dd22d22bd7a15bee64a30 /sys/dev/usb/usb_subr.c
parent88ea580e343e33a62cd5847bf1c379064f6c5421 (diff)
Notes
Diffstat (limited to 'sys/dev/usb/usb_subr.c')
-rw-r--r--sys/dev/usb/usb_subr.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/dev/usb/usb_subr.c b/sys/dev/usb/usb_subr.c
index b985a5e89640..d37c7e769636 100644
--- a/sys/dev/usb/usb_subr.c
+++ b/sys/dev/usb/usb_subr.c
@@ -1138,15 +1138,20 @@ usbd_fill_deviceinfo(dev, di)
struct usbd_port *p;
int i, err, s;
- di->config = dev->config;
+ di->bus = USBDEVUNIT(dev->bus->bdev);
+ di->addr = dev->address;
usbd_devinfo_vp(dev, di->vendor, di->product);
usbd_printBCD(di->release, UGETW(dev->ddesc.bcdDevice));
di->vendorNo = UGETW(dev->ddesc.idVendor);
di->productNo = UGETW(dev->ddesc.idProduct);
+ di->releaseNo = UGETW(dev->ddesc.bcdDevice);
di->class = dev->ddesc.bDeviceClass;
+ di->subclass = dev->ddesc.bDeviceSubClass;
+ di->protocol = dev->ddesc.bDeviceProtocol;
+ di->config = dev->config;
di->power = dev->self_powered ? 0 : dev->power;
di->lowspeed = dev->lowspeed;
- di->addr = dev->address;
+
if (dev->hub) {
for (i = 0;
i < sizeof(di->ports) / sizeof(di->ports[0]) &&
@@ -1237,6 +1242,8 @@ usb_disconnect_port(up, parent)
return;
}
+ usbd_add_event(USB_EVENT_DETACH, dev);
+
if (dev->subdevs != NULL) {
for (i = 0; dev->subdevs[i]; i++) {
if (!dev->subdevs[i]) /* skip empty elements */
@@ -1257,7 +1264,6 @@ usb_disconnect_port(up, parent)
}
}
- usbd_add_event(USB_EVENT_DETACH, dev);
dev->bus->devices[dev->address] = 0;
up->device = 0;
usb_free_device(dev);