On Thursday 05 March 2009 20:34:27 [email protected] wrote:
> Signed-off-by: Theodore Kilgore <[email protected]>
> ----------------------------------------------------------------------
> --- mr97310a.c.old 2009-02-23 23:59:07.000000000 -0600
> +++ mr97310a.c 2009-03-05 19:14:13.000000000 -0600
> @@ -29,9 +29,7 @@ MODULE_LICENSE("GPL");
> /* specific webcam descriptor */
> struct sd {
> struct gspca_dev gspca_dev; /* !! must be the first item */
> -
> u8 sof_read;
> - u8 header_read;
> };
>
> /* V4L2 controls supported by the driver */
> @@ -100,12 +98,9 @@ static int sd_init(struct gspca_dev *gsp
>
> static int sd_start(struct gspca_dev *gspca_dev)
> {
> - struct sd *sd = (struct sd *) gspca_dev;
> __u8 *data = gspca_dev->usb_buf;
> int err_code;
>
> - sd->sof_read = 0;
> -
Good catch, I didn't realize this was kzalloc'd.
> /* Note: register descriptions guessed from MR97113A driver */
>
> data[0] = 0x01;
> @@ -285,40 +280,29 @@ static void sd_pkt_scan(struct gspca_dev
> __u8 *data, /* isoc packet */
> int len) /* iso packet length */
> {
> - struct sd *sd = (struct sd *) gspca_dev;
> unsigned char *sof;
>
> sof = pac_find_sof(gspca_dev, data, len);
> if (sof) {
> int n;
> -
> + int marker_len = sizeof pac_sof_marker;
The value doesn't change; there's no need to use a variable for this.
> /* finish decoding current frame */
> n = sof - data;
> - if (n > sizeof pac_sof_marker)
> - n -= sizeof pac_sof_marker;
> + if (n > marker_len)
> + n -= marker_len;
> else
> n = 0;
> frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
> data, n);
> - sd->header_read = 0;
> - gspca_frame_add(gspca_dev, FIRST_PACKET, frame, NULL, 0);
> - len -= sof - data;
> + /* Start next frame. */
> + gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
> + pac_sof_marker, marker_len);
> + len -= n;
> + len -= marker_len;
> + if (len < 0)
> + len = 0;
len -= sof - data; is a shorter way to find the remaining length.
> data = sof;
> }
> - if (sd->header_read < 7) {
> - int needed;
> -
> - /* skip the rest of the header */
> - needed = 7 - sd->header_read;
> - if (len <= needed) {
> - sd->header_read += len;
> - return;
> - }
> - data += needed;
> - len -= needed;
> - sd->header_read = 7;
> - }
> -
> gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
> }
>
> @@ -337,6 +321,7 @@ static const struct sd_desc sd_desc = {
> /* -- module initialisation -- */
> static const __devinitdata struct usb_device_id device_table[] = {
> {USB_DEVICE(0x08ca, 0x0111)},
> + {USB_DEVICE(0x093a, 0x010f)},
This change is unrelated; maybe it should be in a different patch? Don't
forget to update Documentation/video4linux/gspca.txt with the new camera.
-Kyle
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html