summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMarcus Glocker <mglocker@cvs.openbsd.org>2010-07-26 07:01:09 +0000
committerMarcus Glocker <mglocker@cvs.openbsd.org>2010-07-26 07:01:09 +0000
commit2814a567dabf3f44dd6d196f0726143304294b89 (patch)
tree8fe676d75165b19c6a304331deecb7a454525304 /sys
parent12738501a521de949783a0ef772f333a85a28079 (diff)
Make one more Sonix chipset cam work with 640x480 by a) adding it to the
UVIDEO_FLAG_FIX_MAX_VIDEO_FRAME_SIZE quirk list and b) cranking the manually calculated frame size by pixels * 4 bytes (discussed with jakemsr@).
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/usb/uvideo.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/sys/dev/usb/uvideo.c b/sys/dev/usb/uvideo.c
index 7a4f78aa637..e216059dd4c 100644
--- a/sys/dev/usb/uvideo.c
+++ b/sys/dev/usb/uvideo.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvideo.c,v 1.133 2010/07/15 04:46:33 mglocker Exp $ */
+/* $OpenBSD: uvideo.c,v 1.134 2010/07/26 07:01:08 mglocker Exp $ */
/*
* Copyright (c) 2008 Robert Nagy <robert@openbsd.org>
@@ -328,6 +328,13 @@ struct uvideo_devs {
NULL,
UVIDEO_FLAG_FIX_MAX_VIDEO_FRAME_SIZE
},
+ {
+ /* Needs to fix dwMaxVideoFrameSize */
+ { USB_VENDOR_MICRODIA, USB_PRODUCT_MICRODIA_CAM_1 },
+ NULL,
+ NULL,
+ UVIDEO_FLAG_FIX_MAX_VIDEO_FRAME_SIZE
+ },
};
#define uvideo_lookup(v, p) \
((struct uvideo_devs *)usb_lookup(uvideo_devs, v, p))
@@ -1116,7 +1123,7 @@ uvideo_vs_parse_desc_frame_uncompressed(struct uvideo_softc *sc,
sc->sc_fmtgrp[fmtidx].pixelformat == V4L2_PIX_FMT_YUYV) {
fd = (struct usb_video_frame_uncompressed_desc *)
sc->sc_fmtgrp[fmtidx].frame[d->bFrameIndex];
- fbuf_size = UGETW(fd->wWidth) * UGETW(fd->wHeight) * 2;
+ fbuf_size = UGETW(fd->wWidth) * UGETW(fd->wHeight) * 4;
DPRINTF(1, "wWidth = %d, wHeight = %d\n",
UGETW(fd->wWidth), UGETW(fd->wHeight));
} else
@@ -1469,7 +1476,7 @@ uvideo_vs_get_probe(struct uvideo_softc *sc, uint8_t *probe_data,
sc->sc_fmtgrp_cur->pixelformat == V4L2_PIX_FMT_YUYV) {
USETDW(pc->dwMaxVideoFrameSize,
UGETW(sc->sc_fmtgrp_cur->frame_cur->wWidth) *
- UGETW(sc->sc_fmtgrp_cur->frame_cur->wHeight) * 2);
+ UGETW(sc->sc_fmtgrp_cur->frame_cur->wHeight) * 4);
}
}