diff options
| author | skrll <skrll@NetBSD.org> | 2015-03-27 12:46:51 +0000 |
|---|---|---|
| committer | skrll <skrll@NetBSD.org> | 2015-03-27 12:46:51 +0000 |
| commit | c170bdeed0dcd2f97fb657b73880a5a4f770e237 (patch) | |
| tree | 9661ef51a3e8fb22a266b21a9aa16033ab8a4b20 /sys/dev/usb | |
| parent | 2bda327b9f99ec79e7d23a818c5b628a6ebf41f4 (diff) | |
Add usbd_get_bos_desc{,_full} from Takahiro HAYASHI
Diffstat (limited to 'sys/dev/usb')
| -rw-r--r-- | sys/dev/usb/usbdi_util.c | 31 | ||||
| -rw-r--r-- | sys/dev/usb/usbdi_util.h | 5 |
2 files changed, 33 insertions, 3 deletions
diff --git a/sys/dev/usb/usbdi_util.c b/sys/dev/usb/usbdi_util.c index c01771c280a..667e7442082 100644 --- a/sys/dev/usb/usbdi_util.c +++ b/sys/dev/usb/usbdi_util.c @@ -1,4 +1,4 @@ -/* $NetBSD: usbdi_util.c,v 1.63 2014/09/12 16:40:38 skrll Exp $ */ +/* $NetBSD: usbdi_util.c,v 1.64 2015/03/27 12:46:51 skrll Exp $ */ /* * Copyright (c) 1998, 2012 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: usbdi_util.c,v 1.63 2014/09/12 16:40:38 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usbdi_util.c,v 1.64 2015/03/27 12:46:51 skrll Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -105,6 +105,33 @@ usbd_get_config_desc_full(usbd_device_handle dev, int conf, void *d, int size) } usbd_status +usbd_get_bos_desc(usbd_device_handle dev, int confidx, + usb_bos_descriptor_t *d) +{ + usbd_status err; + + DPRINTFN(3,("usbd_get_bos_desc: confidx=%d\n", confidx)); + err = usbd_get_desc(dev, UDESC_BOS, confidx, + USB_BOS_DESCRIPTOR_SIZE, d); + if (err) + return (err); + if (d->bDescriptorType != UDESC_BOS) { + DPRINTFN(-1,("usbd_get_bos_desc: confidx=%d, bad desc " + "len=%d type=%d\n", + confidx, d->bLength, d->bDescriptorType)); + return (USBD_INVAL); + } + return (USBD_NORMAL_COMPLETION); +} + +usbd_status +usbd_get_bos_desc_full(usbd_device_handle dev, int conf, void *d, int size) +{ + DPRINTFN(3,("usbd_get_bos_desc_full: conf=%d\n", conf)); + return (usbd_get_desc(dev, UDESC_BOS, conf, size, d)); +} + +usbd_status usbd_get_device_desc(usbd_device_handle dev, usb_device_descriptor_t *d) { DPRINTFN(3,("usbd_get_device_desc:\n")); diff --git a/sys/dev/usb/usbdi_util.h b/sys/dev/usb/usbdi_util.h index d98b42d700b..3dd3cd6a0f6 100644 --- a/sys/dev/usb/usbdi_util.h +++ b/sys/dev/usb/usbdi_util.h @@ -1,4 +1,4 @@ -/* $NetBSD: usbdi_util.h,v 1.45 2013/09/26 07:25:31 skrll Exp $ */ +/* $NetBSD: usbdi_util.h,v 1.46 2015/03/27 12:46:51 skrll Exp $ */ /* * Copyright (c) 1998, 2004 The NetBSD Foundation, Inc. @@ -40,6 +40,9 @@ usbd_status usbd_get_desc(usbd_device_handle dev, int type, usbd_status usbd_get_config_desc(usbd_device_handle, int, usb_config_descriptor_t *); usbd_status usbd_get_config_desc_full(usbd_device_handle, int, void *, int); +usbd_status usbd_get_bos_desc(usbd_device_handle, int, + usb_bos_descriptor_t *); +usbd_status usbd_get_bos_desc_full(usbd_device_handle, int, void *, int); usbd_status usbd_get_device_desc(usbd_device_handle dev, usb_device_descriptor_t *d); usbd_status usbd_set_address(usbd_device_handle dev, int addr); |
