version 1.47, 2006/11/16 01:33:27 |
version 1.47.4.2, 2007/03/12 05:57:34 |
Line 450 usbd_bulk_transfer(usbd_xfer_handle xfer |
|
Line 450 usbd_bulk_transfer(usbd_xfer_handle xfer |
|
splx(s); |
splx(s); |
return (err); |
return (err); |
} |
} |
error = tsleep((caddr_t)xfer, PZERO | PCATCH, lbl, 0); |
error = tsleep((void *)xfer, PZERO | PCATCH, lbl, 0); |
splx(s); |
splx(s); |
if (error) { |
if (error) { |
DPRINTF(("usbd_bulk_transfer: tsleep=%d\n", error)); |
DPRINTF(("usbd_bulk_transfer: tsleep=%d\n", error)); |
Line 525 usb_detach_wakeup(device_ptr_t dv) |
|
Line 525 usb_detach_wakeup(device_ptr_t dv) |
|
wakeup(dv); |
wakeup(dv); |
} |
} |
|
|
const usb_descriptor_t * |
const usb_cdc_descriptor_t * |
usb_find_desc(usbd_device_handle dev, int type, int subtype) |
usb_find_desc(usbd_device_handle dev, int type, int subtype) |
{ |
{ |
usbd_desc_iter_t iter; |
usbd_desc_iter_t iter; |
const usb_descriptor_t *desc; |
const usb_cdc_descriptor_t *desc; |
|
|
usb_desc_iter_init(dev, &iter); |
usb_desc_iter_init(dev, &iter); |
for (;;) { |
for (;;) { |
desc = usb_desc_iter_next(&iter); |
desc = (const usb_cdc_descriptor_t *)usb_desc_iter_next(&iter); |
if (!desc || (desc->bDescriptorType == type && |
if (!desc || (desc->bDescriptorType == type && |
(subtype == USBD_SUBTYPE_ANY || |
(subtype == USBD_CDCSUBTYPE_ANY || |
subtype == desc->bDescriptorSubtype))) |
subtype == desc->bDescriptorSubtype))) |
break; |
break; |
} |
} |
Line 543 usb_find_desc(usbd_device_handle dev, in |
|
Line 543 usb_find_desc(usbd_device_handle dev, in |
|
} |
} |
|
|
/* same as usb_find_desc(), but searches only in the specified interface. */ |
/* same as usb_find_desc(), but searches only in the specified interface. */ |
const usb_descriptor_t * |
const usb_cdc_descriptor_t * |
usb_find_desc_if(usbd_device_handle dev, int type, int subtype, |
usb_find_desc_if(usbd_device_handle dev, int type, int subtype, |
usb_interface_descriptor_t *id) |
usb_interface_descriptor_t *id) |
{ |
{ |
usbd_desc_iter_t iter; |
usbd_desc_iter_t iter; |
const usb_descriptor_t *desc; |
const usb_cdc_descriptor_t *desc; |
|
|
usb_desc_iter_init(dev, &iter); |
usb_desc_iter_init(dev, &iter); |
|
|
iter.cur = (void *)id; /* start from the interface desc */ |
iter.cur = (void *)id; /* start from the interface desc */ |
usb_desc_iter_next(&iter); /* and skip it */ |
usb_desc_iter_next(&iter); /* and skip it */ |
|
|
while ((desc = usb_desc_iter_next(&iter)) != NULL) { |
while ((desc = (const usb_cdc_descriptor_t *)usb_desc_iter_next(&iter)) |
|
!= NULL) { |
if (desc->bDescriptorType == UDESC_INTERFACE) { |
if (desc->bDescriptorType == UDESC_INTERFACE) { |
/* we ran into the next interface --- not found */ |
/* we ran into the next interface --- not found */ |
return NULL; |
return NULL; |
} |
} |
if (desc->bDescriptorType == type && |
if (desc->bDescriptorType == type && |
(subtype == USBD_SUBTYPE_ANY || |
(subtype == USBD_CDCSUBTYPE_ANY || |
subtype == desc->bDescriptorSubtype)) |
subtype == desc->bDescriptorSubtype)) |
break; |
break; |
} |
} |