diff options
author | Marcus Glocker <mglocker@cvs.openbsd.org> | 2008-07-03 09:50:05 +0000 |
---|---|---|
committer | Marcus Glocker <mglocker@cvs.openbsd.org> | 2008-07-03 09:50:05 +0000 |
commit | 5a0754bfe0405005d4644eea69c448e9c919787e (patch) | |
tree | b438a4c38f1236698ba9e13c204002e9689560e6 | |
parent | 4c44a880ad8826139c59a040d699dd08cf4c6e85 (diff) |
Add struct for VC_EXTENSION_UNIT and dump it in debug mode.
-rw-r--r-- | sys/dev/usb/uvideo.c | 25 | ||||
-rw-r--r-- | sys/dev/usb/uvideo.h | 13 |
2 files changed, 35 insertions, 3 deletions
diff --git a/sys/dev/usb/uvideo.c b/sys/dev/usb/uvideo.c index 87d3d8653d8..375b7dff244 100644 --- a/sys/dev/usb/uvideo.c +++ b/sys/dev/usb/uvideo.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uvideo.c,v 1.45 2008/07/02 21:28:50 mglocker Exp $ */ +/* $OpenBSD: uvideo.c,v 1.46 2008/07/03 09:50:04 mglocker Exp $ */ /* * Copyright (c) 2008 Robert Nagy <robert@openbsd.org> @@ -134,6 +134,8 @@ void uvideo_dump_desc_format_uncompressed(struct uvideo_softc *, const usb_descriptor_t *); void uvideo_dump_desc_frame_uncompressed(struct uvideo_softc *, const usb_descriptor_t *); +void uvideo_dump_desc_extension(struct uvideo_softc *, + const usb_descriptor_t *); void uvideo_hexdump(void *, int); int uvideo_debug_file_open(struct uvideo_softc *); void uvideo_debug_file_write_sample(void *); @@ -1429,7 +1431,8 @@ uvideo_dump_desc_all(struct uvideo_softc *sc) } else { printf(" (UDESCSUB_VC_EXTENSION_" "UNIT)\n"); - /* TODO */ + printf("|\n"); + uvideo_dump_desc_extension(sc, desc); } break; case UDESCSUB_VS_FRAME_MJPEG: @@ -1768,6 +1771,24 @@ uvideo_dump_desc_format_uncompressed(struct uvideo_softc *sc, } void +uvideo_dump_desc_extension(struct uvideo_softc *sc, + const usb_descriptor_t *desc) +{ + struct usb_video_vc_extension_desc *d; + + d = (struct usb_video_vc_extension_desc *)(uint8_t *)desc; + + printf("bLength=%d\n", d->bLength); + printf("bDescriptorType=0x%02x\n", d->bDescriptorType); + printf("bDescriptorSubtype=0x%02x\n", d->bDescriptorSubtype); + printf("bUnitID=0x%02x\n", d->bUnitID); + /* XXX we need a hexdump here */ + printf("guidExtensionCode=%s\n", d->guidExtensionCode); + printf("bNumControls=0x%02x\n", d->bNumControls); + printf("bNrInPins=0x%02x\n", d->bNrInPins); +} + +void uvideo_hexdump(void *buf, int len) { int i; diff --git a/sys/dev/usb/uvideo.h b/sys/dev/usb/uvideo.h index 3c3fcdd4530..f1673a6907c 100644 --- a/sys/dev/usb/uvideo.h +++ b/sys/dev/usb/uvideo.h @@ -1,4 +1,4 @@ -/* $OpenBSD: uvideo.h,v 1.17 2008/07/02 21:28:50 mglocker Exp $ */ +/* $OpenBSD: uvideo.h,v 1.18 2008/07/03 09:50:04 mglocker Exp $ */ /* * Copyright (c) 2007 Robert Nagy <robert@openbsd.org> @@ -208,6 +208,17 @@ struct usb_video_camera_terminal_desc { uByte *bmControls; /* XXX */ }; +/* Table 3-9: VC Extension Unit Descriptor */ +struct usb_video_vc_extension_desc { + uByte bLength; + uByte bDescriptorType; + uByte bDescriptorSubtype; + uByte bUnitID; + uByte guidExtensionCode[16]; + uByte bNumControls; + uByte bNrInPins; +} __packed; + /* Table 3-11: VC Endpoint Descriptor */ struct usb_video_vc_endpoint_desc { uByte bLength; |