aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorOndrej Zary <linux@rainbow-software.org>2013-08-30 16:54:23 -0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2013-09-26 06:19:09 -0400
commit1966bc2a48f12d5d11c4fbe0880955cc4bfda0f9 (patch)
tree6a1c4e50b81e194b1d60f0e62fd566f662b3657a /drivers/media
parent08149ecf2cbf788b5a0d01481e290f84e4660c06 (diff)
[media] gspca: store current mode instead of individual parameters
Store complete current mode (struct v4l2_pix_format) in struct gspca_dev instead of separate pixfmt, width and height parameters. This is a preparation for variable resolution support. Signed-off-by: Ondrej Zary <linux@rainbow-software.org> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/usb/gspca/conex.c3
-rw-r--r--drivers/media/usb/gspca/cpia1.c4
-rw-r--r--drivers/media/usb/gspca/gspca.c30
-rw-r--r--drivers/media/usb/gspca/gspca.h4
-rw-r--r--drivers/media/usb/gspca/jeilinj.c5
-rw-r--r--drivers/media/usb/gspca/jl2005bcd.c2
-rw-r--r--drivers/media/usb/gspca/m5602/m5602_mt9m111.c2
-rw-r--r--drivers/media/usb/gspca/mars.c7
-rw-r--r--drivers/media/usb/gspca/mr97310a.c6
-rw-r--r--drivers/media/usb/gspca/nw80x.c11
-rw-r--r--drivers/media/usb/gspca/ov519.c52
-rw-r--r--drivers/media/usb/gspca/ov534.c5
-rw-r--r--drivers/media/usb/gspca/pac207.c4
-rw-r--r--drivers/media/usb/gspca/pac7311.c6
-rw-r--r--drivers/media/usb/gspca/se401.c6
-rw-r--r--drivers/media/usb/gspca/sn9c20x.c6
-rw-r--r--drivers/media/usb/gspca/sonixb.c2
-rw-r--r--drivers/media/usb/gspca/sonixj.c3
-rw-r--r--drivers/media/usb/gspca/spca1528.c3
-rw-r--r--drivers/media/usb/gspca/spca500.c3
-rw-r--r--drivers/media/usb/gspca/sq905c.c2
-rw-r--r--drivers/media/usb/gspca/sq930x.c3
-rw-r--r--drivers/media/usb/gspca/stk014.c5
-rw-r--r--drivers/media/usb/gspca/stk1135.c8
-rw-r--r--drivers/media/usb/gspca/stv06xx/stv06xx.c2
-rw-r--r--drivers/media/usb/gspca/stv06xx/stv06xx_pb0100.c2
-rw-r--r--drivers/media/usb/gspca/sunplus.c3
-rw-r--r--drivers/media/usb/gspca/topro.c13
-rw-r--r--drivers/media/usb/gspca/tv8532.c7
-rw-r--r--drivers/media/usb/gspca/vicam.c8
-rw-r--r--drivers/media/usb/gspca/w996Xcf.c28
-rw-r--r--drivers/media/usb/gspca/xirlink_cit.c34
-rw-r--r--drivers/media/usb/gspca/zc3xx.c3
33 files changed, 146 insertions, 136 deletions
diff --git a/drivers/media/usb/gspca/conex.c b/drivers/media/usb/gspca/conex.c
index 38714df31ac4..2e15c80d6e3d 100644
--- a/drivers/media/usb/gspca/conex.c
+++ b/drivers/media/usb/gspca/conex.c
@@ -783,7 +783,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
783 struct sd *sd = (struct sd *) gspca_dev; 783 struct sd *sd = (struct sd *) gspca_dev;
784 784
785 /* create the JPEG header */ 785 /* create the JPEG header */
786 jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 786 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
787 gspca_dev->pixfmt.width,
787 0x22); /* JPEG 411 */ 788 0x22); /* JPEG 411 */
788 jpeg_set_qual(sd->jpeg_hdr, QUALITY); 789 jpeg_set_qual(sd->jpeg_hdr, QUALITY);
789 790
diff --git a/drivers/media/usb/gspca/cpia1.c b/drivers/media/usb/gspca/cpia1.c
index 064b53043b15..f23df4a9d8c5 100644
--- a/drivers/media/usb/gspca/cpia1.c
+++ b/drivers/media/usb/gspca/cpia1.c
@@ -1553,9 +1553,9 @@ static int sd_start(struct gspca_dev *gspca_dev)
1553 sd->params.format.videoSize = VIDEOSIZE_CIF; 1553 sd->params.format.videoSize = VIDEOSIZE_CIF;
1554 1554
1555 sd->params.roi.colEnd = sd->params.roi.colStart + 1555 sd->params.roi.colEnd = sd->params.roi.colStart +
1556 (gspca_dev->width >> 3); 1556 (gspca_dev->pixfmt.width >> 3);
1557 sd->params.roi.rowEnd = sd->params.roi.rowStart + 1557 sd->params.roi.rowEnd = sd->params.roi.rowStart +
1558 (gspca_dev->height >> 2); 1558 (gspca_dev->pixfmt.height >> 2);
1559 1559
1560 /* And now set the camera to a known state */ 1560 /* And now set the camera to a known state */
1561 ret = do_command(gspca_dev, CPIA_COMMAND_SetGrabMode, 1561 ret = do_command(gspca_dev, CPIA_COMMAND_SetGrabMode,
diff --git a/drivers/media/usb/gspca/gspca.c b/drivers/media/usb/gspca/gspca.c
index 048507b27bb2..c341bbb638f0 100644
--- a/drivers/media/usb/gspca/gspca.c
+++ b/drivers/media/usb/gspca/gspca.c
@@ -504,8 +504,7 @@ static int frame_alloc(struct gspca_dev *gspca_dev, struct file *file,
504 unsigned int frsz; 504 unsigned int frsz;
505 int i; 505 int i;
506 506
507 i = gspca_dev->curr_mode; 507 frsz = gspca_dev->pixfmt.sizeimage;
508 frsz = gspca_dev->cam.cam_mode[i].sizeimage;
509 PDEBUG(D_STREAM, "frame alloc frsz: %d", frsz); 508 PDEBUG(D_STREAM, "frame alloc frsz: %d", frsz);
510 frsz = PAGE_ALIGN(frsz); 509 frsz = PAGE_ALIGN(frsz);
511 if (count >= GSPCA_MAX_FRAMES) 510 if (count >= GSPCA_MAX_FRAMES)
@@ -627,16 +626,14 @@ static struct usb_host_endpoint *alt_xfer(struct usb_host_interface *alt,
627static u32 which_bandwidth(struct gspca_dev *gspca_dev) 626static u32 which_bandwidth(struct gspca_dev *gspca_dev)
628{ 627{
629 u32 bandwidth; 628 u32 bandwidth;
630 int i;
631 629
632 /* get the (max) image size */ 630 /* get the (max) image size */
633 i = gspca_dev->curr_mode; 631 bandwidth = gspca_dev->pixfmt.sizeimage;
634 bandwidth = gspca_dev->cam.cam_mode[i].sizeimage;
635 632
636 /* if the image is compressed, estimate its mean size */ 633 /* if the image is compressed, estimate its mean size */
637 if (!gspca_dev->cam.needs_full_bandwidth && 634 if (!gspca_dev->cam.needs_full_bandwidth &&
638 bandwidth < gspca_dev->cam.cam_mode[i].width * 635 bandwidth < gspca_dev->pixfmt.width *
639 gspca_dev->cam.cam_mode[i].height) 636 gspca_dev->pixfmt.height)
640 bandwidth = bandwidth * 3 / 8; /* 0.375 */ 637 bandwidth = bandwidth * 3 / 8; /* 0.375 */
641 638
642 /* estimate the frame rate */ 639 /* estimate the frame rate */
@@ -650,7 +647,7 @@ static u32 which_bandwidth(struct gspca_dev *gspca_dev)
650 647
651 /* don't hope more than 15 fps with USB 1.1 and 648 /* don't hope more than 15 fps with USB 1.1 and
652 * image resolution >= 640x480 */ 649 * image resolution >= 640x480 */
653 if (gspca_dev->width >= 640 650 if (gspca_dev->pixfmt.width >= 640
654 && gspca_dev->dev->speed == USB_SPEED_FULL) 651 && gspca_dev->dev->speed == USB_SPEED_FULL)
655 bandwidth *= 15; /* 15 fps */ 652 bandwidth *= 15; /* 15 fps */
656 else 653 else
@@ -982,9 +979,7 @@ static void gspca_set_default_mode(struct gspca_dev *gspca_dev)
982 979
983 i = gspca_dev->cam.nmodes - 1; /* take the highest mode */ 980 i = gspca_dev->cam.nmodes - 1; /* take the highest mode */
984 gspca_dev->curr_mode = i; 981 gspca_dev->curr_mode = i;
985 gspca_dev->width = gspca_dev->cam.cam_mode[i].width; 982 gspca_dev->pixfmt = gspca_dev->cam.cam_mode[i];
986 gspca_dev->height = gspca_dev->cam.cam_mode[i].height;
987 gspca_dev->pixfmt = gspca_dev->cam.cam_mode[i].pixelformat;
988 983
989 /* does nothing if ctrl_handler == NULL */ 984 /* does nothing if ctrl_handler == NULL */
990 v4l2_ctrl_handler_setup(gspca_dev->vdev.ctrl_handler); 985 v4l2_ctrl_handler_setup(gspca_dev->vdev.ctrl_handler);
@@ -1105,10 +1100,8 @@ static int vidioc_g_fmt_vid_cap(struct file *file, void *priv,
1105 struct v4l2_format *fmt) 1100 struct v4l2_format *fmt)
1106{ 1101{
1107 struct gspca_dev *gspca_dev = video_drvdata(file); 1102 struct gspca_dev *gspca_dev = video_drvdata(file);
1108 int mode;
1109 1103
1110 mode = gspca_dev->curr_mode; 1104 fmt->fmt.pix = gspca_dev->pixfmt;
1111 fmt->fmt.pix = gspca_dev->cam.cam_mode[mode];
1112 /* some drivers use priv internally, zero it before giving it to 1105 /* some drivers use priv internally, zero it before giving it to
1113 userspace */ 1106 userspace */
1114 fmt->fmt.pix.priv = 0; 1107 fmt->fmt.pix.priv = 0;
@@ -1187,10 +1180,8 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
1187 ret = -EBUSY; 1180 ret = -EBUSY;
1188 goto out; 1181 goto out;
1189 } 1182 }
1190 gspca_dev->width = fmt->fmt.pix.width;
1191 gspca_dev->height = fmt->fmt.pix.height;
1192 gspca_dev->pixfmt = fmt->fmt.pix.pixelformat;
1193 gspca_dev->curr_mode = ret; 1183 gspca_dev->curr_mode = ret;
1184 gspca_dev->pixfmt = gspca_dev->cam.cam_mode[ret];
1194 1185
1195 ret = 0; 1186 ret = 0;
1196out: 1187out:
@@ -1471,8 +1462,9 @@ static int vidioc_streamon(struct file *file, void *priv,
1471 if (ret < 0) 1462 if (ret < 0)
1472 goto out; 1463 goto out;
1473 } 1464 }
1474 PDEBUG_MODE(gspca_dev, D_STREAM, "stream on OK", gspca_dev->pixfmt, 1465 PDEBUG_MODE(gspca_dev, D_STREAM, "stream on OK",
1475 gspca_dev->width, gspca_dev->height); 1466 gspca_dev->pixfmt.pixelformat,
1467 gspca_dev->pixfmt.width, gspca_dev->pixfmt.height);
1476 ret = 0; 1468 ret = 0;
1477out: 1469out:
1478 mutex_unlock(&gspca_dev->queue_lock); 1470 mutex_unlock(&gspca_dev->queue_lock);
diff --git a/drivers/media/usb/gspca/gspca.h b/drivers/media/usb/gspca/gspca.h
index ac0b11f46f50..0f3d15002555 100644
--- a/drivers/media/usb/gspca/gspca.h
+++ b/drivers/media/usb/gspca/gspca.h
@@ -183,9 +183,7 @@ struct gspca_dev {
183 __u8 streaming; /* protected by both mutexes (*) */ 183 __u8 streaming; /* protected by both mutexes (*) */
184 184
185 __u8 curr_mode; /* current camera mode */ 185 __u8 curr_mode; /* current camera mode */
186 __u32 pixfmt; /* current mode parameters */ 186 struct v4l2_pix_format pixfmt; /* current mode parameters */
187 __u16 width;
188 __u16 height;
189 __u32 sequence; /* frame sequence number */ 187 __u32 sequence; /* frame sequence number */
190 188
191 wait_queue_head_t wq; /* wait queue */ 189 wait_queue_head_t wq; /* wait queue */
diff --git a/drivers/media/usb/gspca/jeilinj.c b/drivers/media/usb/gspca/jeilinj.c
index 8da3dde38385..19736e237b37 100644
--- a/drivers/media/usb/gspca/jeilinj.c
+++ b/drivers/media/usb/gspca/jeilinj.c
@@ -378,11 +378,12 @@ static int sd_start(struct gspca_dev *gspca_dev)
378 struct sd *dev = (struct sd *) gspca_dev; 378 struct sd *dev = (struct sd *) gspca_dev;
379 379
380 /* create the JPEG header */ 380 /* create the JPEG header */
381 jpeg_define(dev->jpeg_hdr, gspca_dev->height, gspca_dev->width, 381 jpeg_define(dev->jpeg_hdr, gspca_dev->pixfmt.height,
382 gspca_dev->pixfmt.width,
382 0x21); /* JPEG 422 */ 383 0x21); /* JPEG 422 */
383 jpeg_set_qual(dev->jpeg_hdr, dev->quality); 384 jpeg_set_qual(dev->jpeg_hdr, dev->quality);
384 PDEBUG(D_STREAM, "Start streaming at %dx%d", 385 PDEBUG(D_STREAM, "Start streaming at %dx%d",
385 gspca_dev->height, gspca_dev->width); 386 gspca_dev->pixfmt.height, gspca_dev->pixfmt.width);
386 jlj_start(gspca_dev); 387 jlj_start(gspca_dev);
387 return gspca_dev->usb_err; 388 return gspca_dev->usb_err;
388} 389}
diff --git a/drivers/media/usb/gspca/jl2005bcd.c b/drivers/media/usb/gspca/jl2005bcd.c
index fdaeeb14453f..5b481fa43099 100644
--- a/drivers/media/usb/gspca/jl2005bcd.c
+++ b/drivers/media/usb/gspca/jl2005bcd.c
@@ -455,7 +455,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
455 struct sd *sd = (struct sd *) gspca_dev; 455 struct sd *sd = (struct sd *) gspca_dev;
456 sd->cap_mode = gspca_dev->cam.cam_mode; 456 sd->cap_mode = gspca_dev->cam.cam_mode;
457 457
458 switch (gspca_dev->width) { 458 switch (gspca_dev->pixfmt.width) {
459 case 640: 459 case 640:
460 PDEBUG(D_STREAM, "Start streaming at vga resolution"); 460 PDEBUG(D_STREAM, "Start streaming at vga resolution");
461 jl2005c_stream_start_vga_lg(gspca_dev); 461 jl2005c_stream_start_vga_lg(gspca_dev);
diff --git a/drivers/media/usb/gspca/m5602/m5602_mt9m111.c b/drivers/media/usb/gspca/m5602/m5602_mt9m111.c
index cfa4663f8934..27fcef11aef4 100644
--- a/drivers/media/usb/gspca/m5602/m5602_mt9m111.c
+++ b/drivers/media/usb/gspca/m5602/m5602_mt9m111.c
@@ -266,7 +266,7 @@ static int mt9m111_set_hvflip(struct gspca_dev *gspca_dev)
266 return err; 266 return err;
267 267
268 data[0] = MT9M111_RMB_OVER_SIZED; 268 data[0] = MT9M111_RMB_OVER_SIZED;
269 if (gspca_dev->width == 640) { 269 if (gspca_dev->pixfmt.width == 640) {
270 data[1] = MT9M111_RMB_ROW_SKIP_2X | 270 data[1] = MT9M111_RMB_ROW_SKIP_2X |
271 MT9M111_RMB_COLUMN_SKIP_2X | 271 MT9M111_RMB_COLUMN_SKIP_2X |
272 (hflip << 1) | vflip; 272 (hflip << 1) | vflip;
diff --git a/drivers/media/usb/gspca/mars.c b/drivers/media/usb/gspca/mars.c
index ff2c5abf115b..779a8785f421 100644
--- a/drivers/media/usb/gspca/mars.c
+++ b/drivers/media/usb/gspca/mars.c
@@ -254,7 +254,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
254 int i; 254 int i;
255 255
256 /* create the JPEG header */ 256 /* create the JPEG header */
257 jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 257 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
258 gspca_dev->pixfmt.width,
258 0x21); /* JPEG 422 */ 259 0x21); /* JPEG 422 */
259 jpeg_set_qual(sd->jpeg_hdr, QUALITY); 260 jpeg_set_qual(sd->jpeg_hdr, QUALITY);
260 261
@@ -270,8 +271,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
270 data[0] = 0x00; /* address */ 271 data[0] = 0x00; /* address */
271 data[1] = 0x0c | 0x01; /* reg 0 */ 272 data[1] = 0x0c | 0x01; /* reg 0 */
272 data[2] = 0x01; /* reg 1 */ 273 data[2] = 0x01; /* reg 1 */
273 data[3] = gspca_dev->width / 8; /* h_size , reg 2 */ 274 data[3] = gspca_dev->pixfmt.width / 8; /* h_size , reg 2 */
274 data[4] = gspca_dev->height / 8; /* v_size , reg 3 */ 275 data[4] = gspca_dev->pixfmt.height / 8; /* v_size , reg 3 */
275 data[5] = 0x30; /* reg 4, MI, PAS5101 : 276 data[5] = 0x30; /* reg 4, MI, PAS5101 :
276 * 0x30 for 24mhz , 0x28 for 12mhz */ 277 * 0x30 for 24mhz , 0x28 for 12mhz */
277 data[6] = 0x02; /* reg 5, H start - was 0x04 */ 278 data[6] = 0x02; /* reg 5, H start - was 0x04 */
diff --git a/drivers/media/usb/gspca/mr97310a.c b/drivers/media/usb/gspca/mr97310a.c
index 68bb2f359666..f006e29ca019 100644
--- a/drivers/media/usb/gspca/mr97310a.c
+++ b/drivers/media/usb/gspca/mr97310a.c
@@ -521,7 +521,7 @@ static int start_cif_cam(struct gspca_dev *gspca_dev)
521 if (sd->sensor_type) 521 if (sd->sensor_type)
522 data[5] = 0xbb; 522 data[5] = 0xbb;
523 523
524 switch (gspca_dev->width) { 524 switch (gspca_dev->pixfmt.width) {
525 case 160: 525 case 160:
526 data[9] |= 0x04; /* reg 8, 2:1 scale down from 320 */ 526 data[9] |= 0x04; /* reg 8, 2:1 scale down from 320 */
527 /* fall thru */ 527 /* fall thru */
@@ -618,7 +618,7 @@ static int start_vga_cam(struct gspca_dev *gspca_dev)
618 data[10] = 0x18; 618 data[10] = 0x18;
619 } 619 }
620 620
621 switch (gspca_dev->width) { 621 switch (gspca_dev->pixfmt.width) {
622 case 160: 622 case 160:
623 data[9] |= 0x0c; /* reg 8, 4:1 scale down */ 623 data[9] |= 0x0c; /* reg 8, 4:1 scale down */
624 /* fall thru */ 624 /* fall thru */
@@ -847,7 +847,7 @@ static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 min_clockdiv)
847 u8 clockdiv = (60 * expo + 7999) / 8000; 847 u8 clockdiv = (60 * expo + 7999) / 8000;
848 848
849 /* Limit framerate to not exceed usb bandwidth */ 849 /* Limit framerate to not exceed usb bandwidth */
850 if (clockdiv < min_clockdiv && gspca_dev->width >= 320) 850 if (clockdiv < min_clockdiv && gspca_dev->pixfmt.width >= 320)
851 clockdiv = min_clockdiv; 851 clockdiv = min_clockdiv;
852 else if (clockdiv < 2) 852 else if (clockdiv < 2)
853 clockdiv = 2; 853 clockdiv = 2;
diff --git a/drivers/media/usb/gspca/nw80x.c b/drivers/media/usb/gspca/nw80x.c
index 44c9964b1b3e..599f755e75b8 100644
--- a/drivers/media/usb/gspca/nw80x.c
+++ b/drivers/media/usb/gspca/nw80x.c
@@ -1708,7 +1708,7 @@ static void setautogain(struct gspca_dev *gspca_dev, s32 val)
1708 1708
1709 reg_r(gspca_dev, 0x1004, 1); 1709 reg_r(gspca_dev, 0x1004, 1);
1710 if (gspca_dev->usb_buf[0] & 0x04) { /* if AE_FULL_FRM */ 1710 if (gspca_dev->usb_buf[0] & 0x04) { /* if AE_FULL_FRM */
1711 sd->ae_res = gspca_dev->width * gspca_dev->height; 1711 sd->ae_res = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height;
1712 } else { /* get the AE window size */ 1712 } else { /* get the AE window size */
1713 reg_r(gspca_dev, 0x1011, 8); 1713 reg_r(gspca_dev, 0x1011, 8);
1714 w = (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0] 1714 w = (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0]
@@ -1717,7 +1717,8 @@ static void setautogain(struct gspca_dev *gspca_dev, s32 val)
1717 - (gspca_dev->usb_buf[7] << 8) - gspca_dev->usb_buf[6]; 1717 - (gspca_dev->usb_buf[7] << 8) - gspca_dev->usb_buf[6];
1718 sd->ae_res = h * w; 1718 sd->ae_res = h * w;
1719 if (sd->ae_res == 0) 1719 if (sd->ae_res == 0)
1720 sd->ae_res = gspca_dev->width * gspca_dev->height; 1720 sd->ae_res = gspca_dev->pixfmt.width *
1721 gspca_dev->pixfmt.height;
1721 } 1722 }
1722} 1723}
1723 1724
@@ -1856,21 +1857,21 @@ static int sd_start(struct gspca_dev *gspca_dev)
1856 reg_w_buf(gspca_dev, cmd); 1857 reg_w_buf(gspca_dev, cmd);
1857 switch (sd->webcam) { 1858 switch (sd->webcam) {
1858 case P35u: 1859 case P35u:
1859 if (gspca_dev->width == 320) 1860 if (gspca_dev->pixfmt.width == 320)
1860 reg_w_buf(gspca_dev, nw801_start_qvga); 1861 reg_w_buf(gspca_dev, nw801_start_qvga);
1861 else 1862 else
1862 reg_w_buf(gspca_dev, nw801_start_vga); 1863 reg_w_buf(gspca_dev, nw801_start_vga);
1863 reg_w_buf(gspca_dev, nw801_start_2); 1864 reg_w_buf(gspca_dev, nw801_start_2);
1864 break; 1865 break;
1865 case Kr651us: 1866 case Kr651us:
1866 if (gspca_dev->width == 320) 1867 if (gspca_dev->pixfmt.width == 320)
1867 reg_w_buf(gspca_dev, kr651_start_qvga); 1868 reg_w_buf(gspca_dev, kr651_start_qvga);
1868 else 1869 else
1869 reg_w_buf(gspca_dev, kr651_start_vga); 1870 reg_w_buf(gspca_dev, kr651_start_vga);
1870 reg_w_buf(gspca_dev, kr651_start_2); 1871 reg_w_buf(gspca_dev, kr651_start_2);
1871 break; 1872 break;
1872 case Proscope: 1873 case Proscope:
1873 if (gspca_dev->width == 320) 1874 if (gspca_dev->pixfmt.width == 320)
1874 reg_w_buf(gspca_dev, proscope_start_qvga); 1875 reg_w_buf(gspca_dev, proscope_start_qvga);
1875 else 1876 else
1876 reg_w_buf(gspca_dev, proscope_start_vga); 1877 reg_w_buf(gspca_dev, proscope_start_vga);
diff --git a/drivers/media/usb/gspca/ov519.c b/drivers/media/usb/gspca/ov519.c
index 8937d79fd176..c95f32a0c02b 100644
--- a/drivers/media/usb/gspca/ov519.c
+++ b/drivers/media/usb/gspca/ov519.c
@@ -3468,7 +3468,7 @@ static int sd_isoc_init(struct gspca_dev *gspca_dev)
3468 3468
3469 switch (sd->bridge) { 3469 switch (sd->bridge) {
3470 case BRIDGE_OVFX2: 3470 case BRIDGE_OVFX2:
3471 if (gspca_dev->width != 800) 3471 if (gspca_dev->pixfmt.width != 800)
3472 gspca_dev->cam.bulk_size = OVFX2_BULK_SIZE; 3472 gspca_dev->cam.bulk_size = OVFX2_BULK_SIZE;
3473 else 3473 else
3474 gspca_dev->cam.bulk_size = 7 * 4096; 3474 gspca_dev->cam.bulk_size = 7 * 4096;
@@ -3507,8 +3507,8 @@ static void ov511_mode_init_regs(struct sd *sd)
3507 /* Here I'm assuming that snapshot size == image size. 3507 /* Here I'm assuming that snapshot size == image size.
3508 * I hope that's always true. --claudio 3508 * I hope that's always true. --claudio
3509 */ 3509 */
3510 hsegs = (sd->gspca_dev.width >> 3) - 1; 3510 hsegs = (sd->gspca_dev.pixfmt.width >> 3) - 1;
3511 vsegs = (sd->gspca_dev.height >> 3) - 1; 3511 vsegs = (sd->gspca_dev.pixfmt.height >> 3) - 1;
3512 3512
3513 reg_w(sd, R511_CAM_PXCNT, hsegs); 3513 reg_w(sd, R511_CAM_PXCNT, hsegs);
3514 reg_w(sd, R511_CAM_LNCNT, vsegs); 3514 reg_w(sd, R511_CAM_LNCNT, vsegs);
@@ -3541,7 +3541,7 @@ static void ov511_mode_init_regs(struct sd *sd)
3541 case SEN_OV7640: 3541 case SEN_OV7640:
3542 case SEN_OV7648: 3542 case SEN_OV7648:
3543 case SEN_OV76BE: 3543 case SEN_OV76BE:
3544 if (sd->gspca_dev.width == 320) 3544 if (sd->gspca_dev.pixfmt.width == 320)
3545 interlaced = 1; 3545 interlaced = 1;
3546 /* Fall through */ 3546 /* Fall through */
3547 case SEN_OV6630: 3547 case SEN_OV6630:
@@ -3551,7 +3551,7 @@ static void ov511_mode_init_regs(struct sd *sd)
3551 case 30: 3551 case 30:
3552 case 25: 3552 case 25:
3553 /* Not enough bandwidth to do 640x480 @ 30 fps */ 3553 /* Not enough bandwidth to do 640x480 @ 30 fps */
3554 if (sd->gspca_dev.width != 640) { 3554 if (sd->gspca_dev.pixfmt.width != 640) {
3555 sd->clockdiv = 0; 3555 sd->clockdiv = 0;
3556 break; 3556 break;
3557 } 3557 }
@@ -3584,7 +3584,8 @@ static void ov511_mode_init_regs(struct sd *sd)
3584 3584
3585 /* Check if we have enough bandwidth to disable compression */ 3585 /* Check if we have enough bandwidth to disable compression */
3586 fps = (interlaced ? 60 : 30) / (sd->clockdiv + 1) + 1; 3586 fps = (interlaced ? 60 : 30) / (sd->clockdiv + 1) + 1;
3587 needed = fps * sd->gspca_dev.width * sd->gspca_dev.height * 3 / 2; 3587 needed = fps * sd->gspca_dev.pixfmt.width *
3588 sd->gspca_dev.pixfmt.height * 3 / 2;
3588 /* 1000 isoc packets/sec */ 3589 /* 1000 isoc packets/sec */
3589 if (needed > 1000 * packet_size) { 3590 if (needed > 1000 * packet_size) {
3590 /* Enable Y and UV quantization and compression */ 3591 /* Enable Y and UV quantization and compression */
@@ -3646,8 +3647,8 @@ static void ov518_mode_init_regs(struct sd *sd)
3646 reg_w(sd, 0x38, 0x80); 3647 reg_w(sd, 0x38, 0x80);
3647 } 3648 }
3648 3649
3649 hsegs = sd->gspca_dev.width / 16; 3650 hsegs = sd->gspca_dev.pixfmt.width / 16;
3650 vsegs = sd->gspca_dev.height / 4; 3651 vsegs = sd->gspca_dev.pixfmt.height / 4;
3651 3652
3652 reg_w(sd, 0x29, hsegs); 3653 reg_w(sd, 0x29, hsegs);
3653 reg_w(sd, 0x2a, vsegs); 3654 reg_w(sd, 0x2a, vsegs);
@@ -3686,7 +3687,8 @@ static void ov518_mode_init_regs(struct sd *sd)
3686 * happened to be with revision < 2 cams using an 3687 * happened to be with revision < 2 cams using an
3687 * OV7620 and revision 2 cams using an OV7620AE. 3688 * OV7620 and revision 2 cams using an OV7620AE.
3688 */ 3689 */
3689 if (sd->revision > 0 && sd->gspca_dev.width == 640) { 3690 if (sd->revision > 0 &&
3691 sd->gspca_dev.pixfmt.width == 640) {
3690 reg_w(sd, 0x20, 0x60); 3692 reg_w(sd, 0x20, 0x60);
3691 reg_w(sd, 0x21, 0x1f); 3693 reg_w(sd, 0x21, 0x1f);
3692 } else { 3694 } else {
@@ -3812,8 +3814,8 @@ static void ov519_mode_init_regs(struct sd *sd)
3812 break; 3814 break;
3813 } 3815 }
3814 3816
3815 reg_w(sd, OV519_R10_H_SIZE, sd->gspca_dev.width >> 4); 3817 reg_w(sd, OV519_R10_H_SIZE, sd->gspca_dev.pixfmt.width >> 4);
3816 reg_w(sd, OV519_R11_V_SIZE, sd->gspca_dev.height >> 3); 3818 reg_w(sd, OV519_R11_V_SIZE, sd->gspca_dev.pixfmt.height >> 3);
3817 if (sd->sensor == SEN_OV7670 && 3819 if (sd->sensor == SEN_OV7670 &&
3818 sd->gspca_dev.cam.cam_mode[sd->gspca_dev.curr_mode].priv) 3820 sd->gspca_dev.cam.cam_mode[sd->gspca_dev.curr_mode].priv)
3819 reg_w(sd, OV519_R12_X_OFFSETL, 0x04); 3821 reg_w(sd, OV519_R12_X_OFFSETL, 0x04);
@@ -3947,14 +3949,16 @@ static void mode_init_ov_sensor_regs(struct sd *sd)
3947 } 3949 }
3948 case SEN_OV3610: 3950 case SEN_OV3610:
3949 if (qvga) { 3951 if (qvga) {
3950 xstart = (1040 - gspca_dev->width) / 2 + (0x1f << 4); 3952 xstart = (1040 - gspca_dev->pixfmt.width) / 2 +
3951 ystart = (776 - gspca_dev->height) / 2; 3953 (0x1f << 4);
3954 ystart = (776 - gspca_dev->pixfmt.height) / 2;
3952 } else { 3955 } else {
3953 xstart = (2076 - gspca_dev->width) / 2 + (0x10 << 4); 3956 xstart = (2076 - gspca_dev->pixfmt.width) / 2 +
3954 ystart = (1544 - gspca_dev->height) / 2; 3957 (0x10 << 4);
3958 ystart = (1544 - gspca_dev->pixfmt.height) / 2;
3955 } 3959 }
3956 xend = xstart + gspca_dev->width; 3960 xend = xstart + gspca_dev->pixfmt.width;
3957 yend = ystart + gspca_dev->height; 3961 yend = ystart + gspca_dev->pixfmt.height;
3958 /* Writing to the COMH register resets the other windowing regs 3962 /* Writing to the COMH register resets the other windowing regs
3959 to their default values, so we must do this first. */ 3963 to their default values, so we must do this first. */
3960 i2c_w_mask(sd, 0x12, qvga ? 0x40 : 0x00, 0xf0); 3964 i2c_w_mask(sd, 0x12, qvga ? 0x40 : 0x00, 0xf0);
@@ -4229,8 +4233,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
4229 struct sd *sd = (struct sd *) gspca_dev; 4233 struct sd *sd = (struct sd *) gspca_dev;
4230 4234
4231 /* Default for most bridges, allow bridge_mode_init_regs to override */ 4235 /* Default for most bridges, allow bridge_mode_init_regs to override */
4232 sd->sensor_width = sd->gspca_dev.width; 4236 sd->sensor_width = sd->gspca_dev.pixfmt.width;
4233 sd->sensor_height = sd->gspca_dev.height; 4237 sd->sensor_height = sd->gspca_dev.pixfmt.height;
4234 4238
4235 switch (sd->bridge) { 4239 switch (sd->bridge) {
4236 case BRIDGE_OV511: 4240 case BRIDGE_OV511:
@@ -4345,12 +4349,13 @@ static void ov511_pkt_scan(struct gspca_dev *gspca_dev,
4345 ov51x_handle_button(gspca_dev, (in[8] >> 2) & 1); 4349 ov51x_handle_button(gspca_dev, (in[8] >> 2) & 1);
4346 if (in[8] & 0x80) { 4350 if (in[8] & 0x80) {
4347 /* Frame end */ 4351 /* Frame end */
4348 if ((in[9] + 1) * 8 != gspca_dev->width || 4352 if ((in[9] + 1) * 8 != gspca_dev->pixfmt.width ||
4349 (in[10] + 1) * 8 != gspca_dev->height) { 4353 (in[10] + 1) * 8 != gspca_dev->pixfmt.height) {
4350 PERR("Invalid frame size, got: %dx%d," 4354 PERR("Invalid frame size, got: %dx%d,"
4351 " requested: %dx%d\n", 4355 " requested: %dx%d\n",
4352 (in[9] + 1) * 8, (in[10] + 1) * 8, 4356 (in[9] + 1) * 8, (in[10] + 1) * 8,
4353 gspca_dev->width, gspca_dev->height); 4357 gspca_dev->pixfmt.width,
4358 gspca_dev->pixfmt.height);
4354 gspca_dev->last_packet_type = DISCARD_PACKET; 4359 gspca_dev->last_packet_type = DISCARD_PACKET;
4355 return; 4360 return;
4356 } 4361 }
@@ -4470,7 +4475,8 @@ static void ovfx2_pkt_scan(struct gspca_dev *gspca_dev,
4470 if (sd->first_frame) { 4475 if (sd->first_frame) {
4471 sd->first_frame--; 4476 sd->first_frame--;
4472 if (gspca_dev->image_len < 4477 if (gspca_dev->image_len <
4473 sd->gspca_dev.width * sd->gspca_dev.height) 4478 sd->gspca_dev.pixfmt.width *
4479 sd->gspca_dev.pixfmt.height)
4474 gspca_dev->last_packet_type = DISCARD_PACKET; 4480 gspca_dev->last_packet_type = DISCARD_PACKET;
4475 } 4481 }
4476 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); 4482 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
diff --git a/drivers/media/usb/gspca/ov534.c b/drivers/media/usb/gspca/ov534.c
index 03a33c46ca2c..90f0d637cd9d 100644
--- a/drivers/media/usb/gspca/ov534.c
+++ b/drivers/media/usb/gspca/ov534.c
@@ -1440,9 +1440,10 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
1440 /* If this packet is marked as EOF, end the frame */ 1440 /* If this packet is marked as EOF, end the frame */
1441 } else if (data[1] & UVC_STREAM_EOF) { 1441 } else if (data[1] & UVC_STREAM_EOF) {
1442 sd->last_pts = 0; 1442 sd->last_pts = 0;
1443 if (gspca_dev->pixfmt == V4L2_PIX_FMT_YUYV 1443 if (gspca_dev->pixfmt.pixelformat == V4L2_PIX_FMT_YUYV
1444 && gspca_dev->image_len + len - 12 != 1444 && gspca_dev->image_len + len - 12 !=
1445 gspca_dev->width * gspca_dev->height * 2) { 1445 gspca_dev->pixfmt.width *
1446 gspca_dev->pixfmt.height * 2) {
1446 PDEBUG(D_PACK, "wrong sized frame"); 1447 PDEBUG(D_PACK, "wrong sized frame");
1447 goto discard; 1448 goto discard;
1448 } 1449 }
diff --git a/drivers/media/usb/gspca/pac207.c b/drivers/media/usb/gspca/pac207.c
index 83519be94e58..cd79c180f67b 100644
--- a/drivers/media/usb/gspca/pac207.c
+++ b/drivers/media/usb/gspca/pac207.c
@@ -299,7 +299,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
299 pac207_write_regs(gspca_dev, 0x0042, pac207_sensor_init[3], 8); 299 pac207_write_regs(gspca_dev, 0x0042, pac207_sensor_init[3], 8);
300 300
301 /* Compression Balance */ 301 /* Compression Balance */
302 if (gspca_dev->width == 176) 302 if (gspca_dev->pixfmt.width == 176)
303 pac207_write_reg(gspca_dev, 0x4a, 0xff); 303 pac207_write_reg(gspca_dev, 0x4a, 0xff);
304 else 304 else
305 pac207_write_reg(gspca_dev, 0x4a, 0x30); 305 pac207_write_reg(gspca_dev, 0x4a, 0x30);
@@ -317,7 +317,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
317 mode = 0x00; 317 mode = 0x00;
318 else 318 else
319 mode = 0x02; 319 mode = 0x02;
320 if (gspca_dev->width == 176) { /* 176x144 */ 320 if (gspca_dev->pixfmt.width == 176) { /* 176x144 */
321 mode |= 0x01; 321 mode |= 0x01;
322 PDEBUG(D_STREAM, "pac207_start mode 176x144"); 322 PDEBUG(D_STREAM, "pac207_start mode 176x144");
323 } else { /* 352x288 */ 323 } else { /* 352x288 */
diff --git a/drivers/media/usb/gspca/pac7311.c b/drivers/media/usb/gspca/pac7311.c
index 1a5bdc853a80..25f86b1e74a8 100644
--- a/drivers/media/usb/gspca/pac7311.c
+++ b/drivers/media/usb/gspca/pac7311.c
@@ -326,7 +326,7 @@ static void setexposure(struct gspca_dev *gspca_dev, s32 val)
326 * 640x480 mode and page 4 reg 2 <= 3 then it must be 9 326 * 640x480 mode and page 4 reg 2 <= 3 then it must be 9
327 */ 327 */
328 reg_w(gspca_dev, 0xff, 0x01); 328 reg_w(gspca_dev, 0xff, 0x01);
329 if (gspca_dev->width != 640 && val <= 3) 329 if (gspca_dev->pixfmt.width != 640 && val <= 3)
330 reg_w(gspca_dev, 0x08, 0x09); 330 reg_w(gspca_dev, 0x08, 0x09);
331 else 331 else
332 reg_w(gspca_dev, 0x08, 0x08); 332 reg_w(gspca_dev, 0x08, 0x08);
@@ -337,7 +337,7 @@ static void setexposure(struct gspca_dev *gspca_dev, s32 val)
337 * camera to use higher compression or we may run out of 337 * camera to use higher compression or we may run out of
338 * bandwidth. 338 * bandwidth.
339 */ 339 */
340 if (gspca_dev->width == 640 && val == 2) 340 if (gspca_dev->pixfmt.width == 640 && val == 2)
341 reg_w(gspca_dev, 0x80, 0x01); 341 reg_w(gspca_dev, 0x80, 0x01);
342 else 342 else
343 reg_w(gspca_dev, 0x80, 0x1c); 343 reg_w(gspca_dev, 0x80, 0x1c);
@@ -615,7 +615,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
615 615
616 /* Start the new frame with the jpeg header */ 616 /* Start the new frame with the jpeg header */
617 pac_start_frame(gspca_dev, 617 pac_start_frame(gspca_dev,
618 gspca_dev->height, gspca_dev->width); 618 gspca_dev->pixfmt.height, gspca_dev->pixfmt.width);
619 } 619 }
620 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); 620 gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
621} 621}
diff --git a/drivers/media/usb/gspca/se401.c b/drivers/media/usb/gspca/se401.c
index 5f729b8aa2bd..5102cea50471 100644
--- a/drivers/media/usb/gspca/se401.c
+++ b/drivers/media/usb/gspca/se401.c
@@ -354,9 +354,9 @@ static int sd_start(struct gspca_dev *gspca_dev)
354 354
355 /* set size + mode */ 355 /* set size + mode */
356 se401_write_req(gspca_dev, SE401_REQ_SET_WIDTH, 356 se401_write_req(gspca_dev, SE401_REQ_SET_WIDTH,
357 gspca_dev->width * mult, 0); 357 gspca_dev->pixfmt.width * mult, 0);
358 se401_write_req(gspca_dev, SE401_REQ_SET_HEIGHT, 358 se401_write_req(gspca_dev, SE401_REQ_SET_HEIGHT,
359 gspca_dev->height * mult, 0); 359 gspca_dev->pixfmt.height * mult, 0);
360 /* 360 /*
361 * HDG: disabled this as it does not seem to do anything 361 * HDG: disabled this as it does not seem to do anything
362 * se401_write_req(gspca_dev, SE401_REQ_SET_OUTPUT_MODE, 362 * se401_write_req(gspca_dev, SE401_REQ_SET_OUTPUT_MODE,
@@ -480,7 +480,7 @@ static void sd_complete_frame(struct gspca_dev *gspca_dev, u8 *data, int len)
480static void sd_pkt_scan_janggu(struct gspca_dev *gspca_dev, u8 *data, int len) 480static void sd_pkt_scan_janggu(struct gspca_dev *gspca_dev, u8 *data, int len)
481{ 481{
482 struct sd *sd = (struct sd *)gspca_dev; 482 struct sd *sd = (struct sd *)gspca_dev;
483 int imagesize = gspca_dev->width * gspca_dev->height; 483 int imagesize = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height;
484 int i, plen, bits, pixels, info, count; 484 int i, plen, bits, pixels, info, count;
485 485
486 if (sd->restart_stream) 486 if (sd->restart_stream)
diff --git a/drivers/media/usb/gspca/sn9c20x.c b/drivers/media/usb/gspca/sn9c20x.c
index f4453d52801b..2a38621cf718 100644
--- a/drivers/media/usb/gspca/sn9c20x.c
+++ b/drivers/media/usb/gspca/sn9c20x.c
@@ -1955,7 +1955,7 @@ static int sd_isoc_init(struct gspca_dev *gspca_dev)
1955 return 0; 1955 return 0;
1956 } 1956 }
1957 1957
1958 switch (gspca_dev->width) { 1958 switch (gspca_dev->pixfmt.width) {
1959 case 160: /* 160x120 */ 1959 case 160: /* 160x120 */
1960 gspca_dev->alt = 2; 1960 gspca_dev->alt = 2;
1961 break; 1961 break;
@@ -1985,8 +1985,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
1985{ 1985{
1986 struct sd *sd = (struct sd *) gspca_dev; 1986 struct sd *sd = (struct sd *) gspca_dev;
1987 int mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; 1987 int mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv;
1988 int width = gspca_dev->width; 1988 int width = gspca_dev->pixfmt.width;
1989 int height = gspca_dev->height; 1989 int height = gspca_dev->pixfmt.height;
1990 u8 fmt, scale = 0; 1990 u8 fmt, scale = 0;
1991 1991
1992 jpeg_define(sd->jpeg_hdr, height, width, 1992 jpeg_define(sd->jpeg_hdr, height, width,
diff --git a/drivers/media/usb/gspca/sonixb.c b/drivers/media/usb/gspca/sonixb.c
index d7ff3b9687c5..921802cbdfe0 100644
--- a/drivers/media/usb/gspca/sonixb.c
+++ b/drivers/media/usb/gspca/sonixb.c
@@ -753,7 +753,7 @@ static void setexposure(struct gspca_dev *gspca_dev)
753 /* In 640x480, if the reg11 has less than 4, the image is 753 /* In 640x480, if the reg11 has less than 4, the image is
754 unstable (the bridge goes into a higher compression mode 754 unstable (the bridge goes into a higher compression mode
755 which we have not reverse engineered yet). */ 755 which we have not reverse engineered yet). */
756 if (gspca_dev->width == 640 && reg11 < 4) 756 if (gspca_dev->pixfmt.width == 640 && reg11 < 4)
757 reg11 = 4; 757 reg11 = 4;
758 758
759 /* frame exposure time in ms = 1000 * reg11 / 30 -> 759 /* frame exposure time in ms = 1000 * reg11 / 30 ->
diff --git a/drivers/media/usb/gspca/sonixj.c b/drivers/media/usb/gspca/sonixj.c
index 3b5ccb1c4cdf..c69b45d7cfbf 100644
--- a/drivers/media/usb/gspca/sonixj.c
+++ b/drivers/media/usb/gspca/sonixj.c
@@ -2204,7 +2204,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
2204 { 0x14, 0xe7, 0x1e, 0xdd }; 2204 { 0x14, 0xe7, 0x1e, 0xdd };
2205 2205
2206 /* create the JPEG header */ 2206 /* create the JPEG header */
2207 jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 2207 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
2208 gspca_dev->pixfmt.width,
2208 0x21); /* JPEG 422 */ 2209 0x21); /* JPEG 422 */
2209 2210
2210 /* initialize the bridge */ 2211 /* initialize the bridge */
diff --git a/drivers/media/usb/gspca/spca1528.c b/drivers/media/usb/gspca/spca1528.c
index 688592b289ea..f38fd8949609 100644
--- a/drivers/media/usb/gspca/spca1528.c
+++ b/drivers/media/usb/gspca/spca1528.c
@@ -255,7 +255,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
255 struct sd *sd = (struct sd *) gspca_dev; 255 struct sd *sd = (struct sd *) gspca_dev;
256 256
257 /* initialize the JPEG header */ 257 /* initialize the JPEG header */
258 jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 258 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
259 gspca_dev->pixfmt.width,
259 0x22); /* JPEG 411 */ 260 0x22); /* JPEG 411 */
260 261
261 /* the JPEG quality shall be 85% */ 262 /* the JPEG quality shall be 85% */
diff --git a/drivers/media/usb/gspca/spca500.c b/drivers/media/usb/gspca/spca500.c
index 9f8bf51fd64b..f011a309dd65 100644
--- a/drivers/media/usb/gspca/spca500.c
+++ b/drivers/media/usb/gspca/spca500.c
@@ -608,7 +608,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
608 __u8 xmult, ymult; 608 __u8 xmult, ymult;
609 609
610 /* create the JPEG header */ 610 /* create the JPEG header */
611 jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 611 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
612 gspca_dev->pixfmt.width,
612 0x22); /* JPEG 411 */ 613 0x22); /* JPEG 411 */
613 jpeg_set_qual(sd->jpeg_hdr, QUALITY); 614 jpeg_set_qual(sd->jpeg_hdr, QUALITY);
614 615
diff --git a/drivers/media/usb/gspca/sq905c.c b/drivers/media/usb/gspca/sq905c.c
index acb19fb9a3df..aa21edc9502d 100644
--- a/drivers/media/usb/gspca/sq905c.c
+++ b/drivers/media/usb/gspca/sq905c.c
@@ -272,7 +272,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
272 272
273 dev->cap_mode = gspca_dev->cam.cam_mode; 273 dev->cap_mode = gspca_dev->cam.cam_mode;
274 /* "Open the shutter" and set size, to start capture */ 274 /* "Open the shutter" and set size, to start capture */
275 switch (gspca_dev->width) { 275 switch (gspca_dev->pixfmt.width) {
276 case 640: 276 case 640:
277 PDEBUG(D_STREAM, "Start streaming at high resolution"); 277 PDEBUG(D_STREAM, "Start streaming at high resolution");
278 dev->cap_mode++; 278 dev->cap_mode++;
diff --git a/drivers/media/usb/gspca/sq930x.c b/drivers/media/usb/gspca/sq930x.c
index b10d0821111c..e274cf19a3ea 100644
--- a/drivers/media/usb/gspca/sq930x.c
+++ b/drivers/media/usb/gspca/sq930x.c
@@ -906,7 +906,8 @@ static int sd_isoc_init(struct gspca_dev *gspca_dev)
906 906
907 gspca_dev->cam.bulk_nurbs = 1; /* there must be one URB only */ 907 gspca_dev->cam.bulk_nurbs = 1; /* there must be one URB only */
908 sd->do_ctrl = 0; 908 sd->do_ctrl = 0;
909 gspca_dev->cam.bulk_size = gspca_dev->width * gspca_dev->height + 8; 909 gspca_dev->cam.bulk_size = gspca_dev->pixfmt.width *
910 gspca_dev->pixfmt.height + 8;
910 return 0; 911 return 0;
911} 912}
912 913
diff --git a/drivers/media/usb/gspca/stk014.c b/drivers/media/usb/gspca/stk014.c
index 8c0982607f25..b0c70fea760b 100644
--- a/drivers/media/usb/gspca/stk014.c
+++ b/drivers/media/usb/gspca/stk014.c
@@ -250,7 +250,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
250 int ret, value; 250 int ret, value;
251 251
252 /* create the JPEG header */ 252 /* create the JPEG header */
253 jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 253 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
254 gspca_dev->pixfmt.width,
254 0x22); /* JPEG 411 */ 255 0x22); /* JPEG 411 */
255 jpeg_set_qual(sd->jpeg_hdr, QUALITY); 256 jpeg_set_qual(sd->jpeg_hdr, QUALITY);
256 257
@@ -261,7 +262,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
261 set_par(gspca_dev, 0x00000000); 262 set_par(gspca_dev, 0x00000000);
262 set_par(gspca_dev, 0x8002e001); 263 set_par(gspca_dev, 0x8002e001);
263 set_par(gspca_dev, 0x14000000); 264 set_par(gspca_dev, 0x14000000);
264 if (gspca_dev->width > 320) 265 if (gspca_dev->pixfmt.width > 320)
265 value = 0x8002e001; /* 640x480 */ 266 value = 0x8002e001; /* 640x480 */
266 else 267 else
267 value = 0x4001f000; /* 320x240 */ 268 value = 0x4001f000; /* 320x240 */
diff --git a/drivers/media/usb/gspca/stk1135.c b/drivers/media/usb/gspca/stk1135.c
index 585868835ace..5a6ed4916ed8 100644
--- a/drivers/media/usb/gspca/stk1135.c
+++ b/drivers/media/usb/gspca/stk1135.c
@@ -347,8 +347,8 @@ static void stk1135_configure_mt9m112(struct gspca_dev *gspca_dev)
347 sensor_write(gspca_dev, cfg[i].reg, cfg[i].val); 347 sensor_write(gspca_dev, cfg[i].reg, cfg[i].val);
348 348
349 /* set output size */ 349 /* set output size */
350 width = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].width; 350 width = gspca_dev->pixfmt.width;
351 height = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].height; 351 height = gspca_dev->pixfmt.height;
352 if (width <= 640) { /* use context A (half readout speed by default) */ 352 if (width <= 640) { /* use context A (half readout speed by default) */
353 sensor_write(gspca_dev, 0x1a7, width); 353 sensor_write(gspca_dev, 0x1a7, width);
354 sensor_write(gspca_dev, 0x1aa, height); 354 sensor_write(gspca_dev, 0x1aa, height);
@@ -484,8 +484,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
484 reg_w(gspca_dev, STK1135_REG_CISPO + 3, 0x00); 484 reg_w(gspca_dev, STK1135_REG_CISPO + 3, 0x00);
485 485
486 /* set capture end position */ 486 /* set capture end position */
487 width = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].width; 487 width = gspca_dev->pixfmt.width;
488 height = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].height; 488 height = gspca_dev->pixfmt.height;
489 reg_w(gspca_dev, STK1135_REG_CIEPO + 0, width & 0xff); 489 reg_w(gspca_dev, STK1135_REG_CIEPO + 0, width & 0xff);
490 reg_w(gspca_dev, STK1135_REG_CIEPO + 1, width >> 8); 490 reg_w(gspca_dev, STK1135_REG_CIEPO + 1, width >> 8);
491 reg_w(gspca_dev, STK1135_REG_CIEPO + 2, height & 0xff); 491 reg_w(gspca_dev, STK1135_REG_CIEPO + 2, height & 0xff);
diff --git a/drivers/media/usb/gspca/stv06xx/stv06xx.c b/drivers/media/usb/gspca/stv06xx/stv06xx.c
index 55ee7a61c67f..49d209bbf9ee 100644
--- a/drivers/media/usb/gspca/stv06xx/stv06xx.c
+++ b/drivers/media/usb/gspca/stv06xx/stv06xx.c
@@ -452,7 +452,7 @@ frame_data:
452 NULL, 0); 452 NULL, 0);
453 453
454 if (sd->bridge == BRIDGE_ST6422) 454 if (sd->bridge == BRIDGE_ST6422)
455 sd->to_skip = gspca_dev->width * 4; 455 sd->to_skip = gspca_dev->pixfmt.width * 4;
456 456
457 if (chunk_len) 457 if (chunk_len)
458 PERR("Chunk length is " 458 PERR("Chunk length is "
diff --git a/drivers/media/usb/gspca/stv06xx/stv06xx_pb0100.c b/drivers/media/usb/gspca/stv06xx/stv06xx_pb0100.c
index 8206b7743300..8d785edcccf2 100644
--- a/drivers/media/usb/gspca/stv06xx/stv06xx_pb0100.c
+++ b/drivers/media/usb/gspca/stv06xx/stv06xx_pb0100.c
@@ -421,7 +421,7 @@ static int pb0100_set_autogain_target(struct gspca_dev *gspca_dev, __s32 val)
421 421
422 /* Number of pixels counted by the sensor when subsampling the pixels. 422 /* Number of pixels counted by the sensor when subsampling the pixels.
423 * Slightly larger than the real value to avoid oscillation */ 423 * Slightly larger than the real value to avoid oscillation */
424 totalpixels = gspca_dev->width * gspca_dev->height; 424 totalpixels = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height;
425 totalpixels = totalpixels/(8*8) + totalpixels/(64*64); 425 totalpixels = totalpixels/(8*8) + totalpixels/(64*64);
426 426
427 brightpixels = (totalpixels * val) >> 8; 427 brightpixels = (totalpixels * val) >> 8;
diff --git a/drivers/media/usb/gspca/sunplus.c b/drivers/media/usb/gspca/sunplus.c
index af8767a9bd4c..a517d185febe 100644
--- a/drivers/media/usb/gspca/sunplus.c
+++ b/drivers/media/usb/gspca/sunplus.c
@@ -715,7 +715,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
715 int enable; 715 int enable;
716 716
717 /* create the JPEG header */ 717 /* create the JPEG header */
718 jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 718 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
719 gspca_dev->pixfmt.width,
719 0x22); /* JPEG 411 */ 720 0x22); /* JPEG 411 */
720 jpeg_set_qual(sd->jpeg_hdr, QUALITY); 721 jpeg_set_qual(sd->jpeg_hdr, QUALITY);
721 722
diff --git a/drivers/media/usb/gspca/topro.c b/drivers/media/usb/gspca/topro.c
index 4cb511ccc5f6..640c2fe760b3 100644
--- a/drivers/media/usb/gspca/topro.c
+++ b/drivers/media/usb/gspca/topro.c
@@ -3856,7 +3856,7 @@ static void setsharpness(struct gspca_dev *gspca_dev, s32 val)
3856 3856
3857 if (sd->bridge == BRIDGE_TP6800) { 3857 if (sd->bridge == BRIDGE_TP6800) {
3858 val |= 0x08; /* grid compensation enable */ 3858 val |= 0x08; /* grid compensation enable */
3859 if (gspca_dev->width == 640) 3859 if (gspca_dev->pixfmt.width == 640)
3860 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ 3860 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
3861 else 3861 else
3862 val |= 0x04; /* scaling down enable */ 3862 val |= 0x04; /* scaling down enable */
@@ -3880,7 +3880,7 @@ static void set_resolution(struct gspca_dev *gspca_dev)
3880 struct sd *sd = (struct sd *) gspca_dev; 3880 struct sd *sd = (struct sd *) gspca_dev;
3881 3881
3882 reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00); 3882 reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
3883 if (gspca_dev->width == 320) { 3883 if (gspca_dev->pixfmt.width == 320) {
3884 reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x06); 3884 reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x06);
3885 msleep(100); 3885 msleep(100);
3886 i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01); 3886 i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
@@ -3924,7 +3924,7 @@ static int get_fr_idx(struct gspca_dev *gspca_dev)
3924 3924
3925 /* 640x480 * 30 fps does not work */ 3925 /* 640x480 * 30 fps does not work */
3926 if (i == 6 /* if 30 fps */ 3926 if (i == 6 /* if 30 fps */
3927 && gspca_dev->width == 640) 3927 && gspca_dev->pixfmt.width == 640)
3928 i = 0x05; /* 15 fps */ 3928 i = 0x05; /* 15 fps */
3929 } else { 3929 } else {
3930 for (i = 0; i < ARRAY_SIZE(rates_6810) - 1; i++) { 3930 for (i = 0; i < ARRAY_SIZE(rates_6810) - 1; i++) {
@@ -3935,7 +3935,7 @@ static int get_fr_idx(struct gspca_dev *gspca_dev)
3935 3935
3936 /* 640x480 * 30 fps does not work */ 3936 /* 640x480 * 30 fps does not work */
3937 if (i == 7 /* if 30 fps */ 3937 if (i == 7 /* if 30 fps */
3938 && gspca_dev->width == 640) 3938 && gspca_dev->pixfmt.width == 640)
3939 i = 6; /* 15 fps */ 3939 i = 6; /* 15 fps */
3940 i |= 0x80; /* clock * 1 */ 3940 i |= 0x80; /* clock * 1 */
3941 } 3941 }
@@ -4554,7 +4554,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
4554{ 4554{
4555 struct sd *sd = (struct sd *) gspca_dev; 4555 struct sd *sd = (struct sd *) gspca_dev;
4556 4556
4557 jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width); 4557 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
4558 gspca_dev->pixfmt.width);
4558 set_dqt(gspca_dev, sd->quality); 4559 set_dqt(gspca_dev, sd->quality);
4559 if (sd->bridge == BRIDGE_TP6800) { 4560 if (sd->bridge == BRIDGE_TP6800) {
4560 if (sd->sensor == SENSOR_CX0342) 4561 if (sd->sensor == SENSOR_CX0342)
@@ -4737,7 +4738,7 @@ static void sd_dq_callback(struct gspca_dev *gspca_dev)
4737 (gspca_dev->usb_buf[26] << 8) + gspca_dev->usb_buf[25] + 4738 (gspca_dev->usb_buf[26] << 8) + gspca_dev->usb_buf[25] +
4738 (gspca_dev->usb_buf[29] << 8) + gspca_dev->usb_buf[28]) 4739 (gspca_dev->usb_buf[29] << 8) + gspca_dev->usb_buf[28])
4739 / 8; 4740 / 8;
4740 if (gspca_dev->width == 640) 4741 if (gspca_dev->pixfmt.width == 640)
4741 luma /= 4; 4742 luma /= 4;
4742 reg_w(gspca_dev, 0x7d, 0x00); 4743 reg_w(gspca_dev, 0x7d, 0x00);
4743 4744
diff --git a/drivers/media/usb/gspca/tv8532.c b/drivers/media/usb/gspca/tv8532.c
index 8591324a53e1..d497ba38af0d 100644
--- a/drivers/media/usb/gspca/tv8532.c
+++ b/drivers/media/usb/gspca/tv8532.c
@@ -268,7 +268,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
268 packet_type0 = packet_type1 = INTER_PACKET; 268 packet_type0 = packet_type1 = INTER_PACKET;
269 if (gspca_dev->empty_packet) { 269 if (gspca_dev->empty_packet) {
270 gspca_dev->empty_packet = 0; 270 gspca_dev->empty_packet = 0;
271 sd->packet = gspca_dev->height / 2; 271 sd->packet = gspca_dev->pixfmt.height / 2;
272 packet_type0 = FIRST_PACKET; 272 packet_type0 = FIRST_PACKET;
273 } else if (sd->packet == 0) 273 } else if (sd->packet == 0)
274 return; /* 2 more lines in 352x288 ! */ 274 return; /* 2 more lines in 352x288 ! */
@@ -284,9 +284,10 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
284 * - 4 bytes 284 * - 4 bytes
285 */ 285 */
286 gspca_frame_add(gspca_dev, packet_type0, 286 gspca_frame_add(gspca_dev, packet_type0,
287 data + 2, gspca_dev->width); 287 data + 2, gspca_dev->pixfmt.width);
288 gspca_frame_add(gspca_dev, packet_type1, 288 gspca_frame_add(gspca_dev, packet_type1,
289 data + gspca_dev->width + 5, gspca_dev->width); 289 data + gspca_dev->pixfmt.width + 5,
290 gspca_dev->pixfmt.width);
290} 291}
291 292
292static int sd_s_ctrl(struct v4l2_ctrl *ctrl) 293static int sd_s_ctrl(struct v4l2_ctrl *ctrl)
diff --git a/drivers/media/usb/gspca/vicam.c b/drivers/media/usb/gspca/vicam.c
index a2275cfe0b81..103f6c4236b0 100644
--- a/drivers/media/usb/gspca/vicam.c
+++ b/drivers/media/usb/gspca/vicam.c
@@ -121,13 +121,13 @@ static int vicam_read_frame(struct gspca_dev *gspca_dev, u8 *data, int size)
121 121
122 memset(req_data, 0, 16); 122 memset(req_data, 0, 16);
123 req_data[0] = gain; 123 req_data[0] = gain;
124 if (gspca_dev->width == 256) 124 if (gspca_dev->pixfmt.width == 256)
125 req_data[1] |= 0x01; /* low nibble x-scale */ 125 req_data[1] |= 0x01; /* low nibble x-scale */
126 if (gspca_dev->height <= 122) { 126 if (gspca_dev->pixfmt.height <= 122) {
127 req_data[1] |= 0x10; /* high nibble y-scale */ 127 req_data[1] |= 0x10; /* high nibble y-scale */
128 unscaled_height = gspca_dev->height * 2; 128 unscaled_height = gspca_dev->pixfmt.height * 2;
129 } else 129 } else
130 unscaled_height = gspca_dev->height; 130 unscaled_height = gspca_dev->pixfmt.height;
131 req_data[2] = 0x90; /* unknown, does not seem to do anything */ 131 req_data[2] = 0x90; /* unknown, does not seem to do anything */
132 if (unscaled_height <= 200) 132 if (unscaled_height <= 200)
133 req_data[3] = 0x06; /* vend? */ 133 req_data[3] = 0x06; /* vend? */
diff --git a/drivers/media/usb/gspca/w996Xcf.c b/drivers/media/usb/gspca/w996Xcf.c
index 2165da0c7ce1..fb9fe2ef3a6f 100644
--- a/drivers/media/usb/gspca/w996Xcf.c
+++ b/drivers/media/usb/gspca/w996Xcf.c
@@ -430,11 +430,11 @@ static void w9968cf_set_crop_window(struct sd *sd)
430 #define SC(x) ((x) << 10) 430 #define SC(x) ((x) << 10)
431 431
432 /* Scaling factors */ 432 /* Scaling factors */
433 fw = SC(sd->gspca_dev.width) / max_width; 433 fw = SC(sd->gspca_dev.pixfmt.width) / max_width;
434 fh = SC(sd->gspca_dev.height) / max_height; 434 fh = SC(sd->gspca_dev.pixfmt.height) / max_height;
435 435
436 cw = (fw >= fh) ? max_width : SC(sd->gspca_dev.width) / fh; 436 cw = (fw >= fh) ? max_width : SC(sd->gspca_dev.pixfmt.width) / fh;
437 ch = (fw >= fh) ? SC(sd->gspca_dev.height) / fw : max_height; 437 ch = (fw >= fh) ? SC(sd->gspca_dev.pixfmt.height) / fw : max_height;
438 438
439 sd->sensor_width = max_width; 439 sd->sensor_width = max_width;
440 sd->sensor_height = max_height; 440 sd->sensor_height = max_height;
@@ -454,34 +454,34 @@ static void w9968cf_mode_init_regs(struct sd *sd)
454 454
455 w9968cf_set_crop_window(sd); 455 w9968cf_set_crop_window(sd);
456 456
457 reg_w(sd, 0x14, sd->gspca_dev.width); 457 reg_w(sd, 0x14, sd->gspca_dev.pixfmt.width);
458 reg_w(sd, 0x15, sd->gspca_dev.height); 458 reg_w(sd, 0x15, sd->gspca_dev.pixfmt.height);
459 459
460 /* JPEG width & height */ 460 /* JPEG width & height */
461 reg_w(sd, 0x30, sd->gspca_dev.width); 461 reg_w(sd, 0x30, sd->gspca_dev.pixfmt.width);
462 reg_w(sd, 0x31, sd->gspca_dev.height); 462 reg_w(sd, 0x31, sd->gspca_dev.pixfmt.height);
463 463
464 /* Y & UV frame buffer strides (in WORD) */ 464 /* Y & UV frame buffer strides (in WORD) */
465 if (w9968cf_vga_mode[sd->gspca_dev.curr_mode].pixelformat == 465 if (w9968cf_vga_mode[sd->gspca_dev.curr_mode].pixelformat ==
466 V4L2_PIX_FMT_JPEG) { 466 V4L2_PIX_FMT_JPEG) {
467 reg_w(sd, 0x2c, sd->gspca_dev.width / 2); 467 reg_w(sd, 0x2c, sd->gspca_dev.pixfmt.width / 2);
468 reg_w(sd, 0x2d, sd->gspca_dev.width / 4); 468 reg_w(sd, 0x2d, sd->gspca_dev.pixfmt.width / 4);
469 } else 469 } else
470 reg_w(sd, 0x2c, sd->gspca_dev.width); 470 reg_w(sd, 0x2c, sd->gspca_dev.pixfmt.width);
471 471
472 reg_w(sd, 0x00, 0xbf17); /* reset everything */ 472 reg_w(sd, 0x00, 0xbf17); /* reset everything */
473 reg_w(sd, 0x00, 0xbf10); /* normal operation */ 473 reg_w(sd, 0x00, 0xbf10); /* normal operation */
474 474
475 /* Transfer size in WORDS (for UYVY format only) */ 475 /* Transfer size in WORDS (for UYVY format only) */
476 val = sd->gspca_dev.width * sd->gspca_dev.height; 476 val = sd->gspca_dev.pixfmt.width * sd->gspca_dev.pixfmt.height;
477 reg_w(sd, 0x3d, val & 0xffff); /* low bits */ 477 reg_w(sd, 0x3d, val & 0xffff); /* low bits */
478 reg_w(sd, 0x3e, val >> 16); /* high bits */ 478 reg_w(sd, 0x3e, val >> 16); /* high bits */
479 479
480 if (w9968cf_vga_mode[sd->gspca_dev.curr_mode].pixelformat == 480 if (w9968cf_vga_mode[sd->gspca_dev.curr_mode].pixelformat ==
481 V4L2_PIX_FMT_JPEG) { 481 V4L2_PIX_FMT_JPEG) {
482 /* We may get called multiple times (usb isoc bw negotiat.) */ 482 /* We may get called multiple times (usb isoc bw negotiat.) */
483 jpeg_define(sd->jpeg_hdr, sd->gspca_dev.height, 483 jpeg_define(sd->jpeg_hdr, sd->gspca_dev.pixfmt.height,
484 sd->gspca_dev.width, 0x22); /* JPEG 420 */ 484 sd->gspca_dev.pixfmt.width, 0x22); /* JPEG 420 */
485 jpeg_set_qual(sd->jpeg_hdr, v4l2_ctrl_g_ctrl(sd->jpegqual)); 485 jpeg_set_qual(sd->jpeg_hdr, v4l2_ctrl_g_ctrl(sd->jpegqual));
486 w9968cf_upload_quantizationtables(sd); 486 w9968cf_upload_quantizationtables(sd);
487 v4l2_ctrl_grab(sd->jpegqual, true); 487 v4l2_ctrl_grab(sd->jpegqual, true);
diff --git a/drivers/media/usb/gspca/xirlink_cit.c b/drivers/media/usb/gspca/xirlink_cit.c
index 7eaf64eb867c..101df674d3ba 100644
--- a/drivers/media/usb/gspca/xirlink_cit.c
+++ b/drivers/media/usb/gspca/xirlink_cit.c
@@ -1471,14 +1471,14 @@ static int cit_get_clock_div(struct gspca_dev *gspca_dev)
1471 1471
1472 while (clock_div > 3 && 1472 while (clock_div > 3 &&
1473 1000 * packet_size > 1473 1000 * packet_size >
1474 gspca_dev->width * gspca_dev->height * 1474 gspca_dev->pixfmt.width * gspca_dev->pixfmt.height *
1475 fps[clock_div - 1] * 3 / 2) 1475 fps[clock_div - 1] * 3 / 2)
1476 clock_div--; 1476 clock_div--;
1477 1477
1478 PDEBUG(D_PROBE, 1478 PDEBUG(D_PROBE,
1479 "PacketSize: %d, res: %dx%d -> using clockdiv: %d (%d fps)", 1479 "PacketSize: %d, res: %dx%d -> using clockdiv: %d (%d fps)",
1480 packet_size, gspca_dev->width, gspca_dev->height, clock_div, 1480 packet_size, gspca_dev->pixfmt.width, gspca_dev->pixfmt.height,
1481 fps[clock_div]); 1481 clock_div, fps[clock_div]);
1482 1482
1483 return clock_div; 1483 return clock_div;
1484} 1484}
@@ -1502,7 +1502,7 @@ static int cit_start_model0(struct gspca_dev *gspca_dev)
1502 cit_write_reg(gspca_dev, 0x0002, 0x0426); 1502 cit_write_reg(gspca_dev, 0x0002, 0x0426);
1503 cit_write_reg(gspca_dev, 0x0014, 0x0427); 1503 cit_write_reg(gspca_dev, 0x0014, 0x0427);
1504 1504
1505 switch (gspca_dev->width) { 1505 switch (gspca_dev->pixfmt.width) {
1506 case 160: /* 160x120 */ 1506 case 160: /* 160x120 */
1507 cit_write_reg(gspca_dev, 0x0004, 0x010b); 1507 cit_write_reg(gspca_dev, 0x0004, 0x010b);
1508 cit_write_reg(gspca_dev, 0x0001, 0x010a); 1508 cit_write_reg(gspca_dev, 0x0001, 0x010a);
@@ -1643,7 +1643,7 @@ static int cit_start_model1(struct gspca_dev *gspca_dev)
1643 cit_write_reg(gspca_dev, 0x00, 0x0101); 1643 cit_write_reg(gspca_dev, 0x00, 0x0101);
1644 cit_write_reg(gspca_dev, 0x00, 0x010a); 1644 cit_write_reg(gspca_dev, 0x00, 0x010a);
1645 1645
1646 switch (gspca_dev->width) { 1646 switch (gspca_dev->pixfmt.width) {
1647 case 128: /* 128x96 */ 1647 case 128: /* 128x96 */
1648 cit_write_reg(gspca_dev, 0x80, 0x0103); 1648 cit_write_reg(gspca_dev, 0x80, 0x0103);
1649 cit_write_reg(gspca_dev, 0x60, 0x0105); 1649 cit_write_reg(gspca_dev, 0x60, 0x0105);
@@ -1700,7 +1700,7 @@ static int cit_start_model1(struct gspca_dev *gspca_dev)
1700 } 1700 }
1701 1701
1702 /* Assorted init */ 1702 /* Assorted init */
1703 switch (gspca_dev->width) { 1703 switch (gspca_dev->pixfmt.width) {
1704 case 128: /* 128x96 */ 1704 case 128: /* 128x96 */
1705 cit_Packet_Format1(gspca_dev, 0x2b, 0x1e); 1705 cit_Packet_Format1(gspca_dev, 0x2b, 0x1e);
1706 cit_write_reg(gspca_dev, 0xc9, 0x0119); /* Same everywhere */ 1706 cit_write_reg(gspca_dev, 0xc9, 0x0119); /* Same everywhere */
@@ -1753,7 +1753,7 @@ static int cit_start_model2(struct gspca_dev *gspca_dev)
1753 cit_write_reg(gspca_dev, 0x0000, 0x0108); 1753 cit_write_reg(gspca_dev, 0x0000, 0x0108);
1754 cit_write_reg(gspca_dev, 0x0001, 0x0133); 1754 cit_write_reg(gspca_dev, 0x0001, 0x0133);
1755 cit_write_reg(gspca_dev, 0x0001, 0x0102); 1755 cit_write_reg(gspca_dev, 0x0001, 0x0102);
1756 switch (gspca_dev->width) { 1756 switch (gspca_dev->pixfmt.width) {
1757 case 176: /* 176x144 */ 1757 case 176: /* 176x144 */
1758 cit_write_reg(gspca_dev, 0x002c, 0x0103); /* All except 320x240 */ 1758 cit_write_reg(gspca_dev, 0x002c, 0x0103); /* All except 320x240 */
1759 cit_write_reg(gspca_dev, 0x0000, 0x0104); /* Same */ 1759 cit_write_reg(gspca_dev, 0x0000, 0x0104); /* Same */
@@ -1792,7 +1792,7 @@ static int cit_start_model2(struct gspca_dev *gspca_dev)
1792 1792
1793 cit_write_reg(gspca_dev, 0x0000, 0x0100); /* LED on */ 1793 cit_write_reg(gspca_dev, 0x0000, 0x0100); /* LED on */
1794 1794
1795 switch (gspca_dev->width) { 1795 switch (gspca_dev->pixfmt.width) {
1796 case 176: /* 176x144 */ 1796 case 176: /* 176x144 */
1797 cit_write_reg(gspca_dev, 0x0050, 0x0111); 1797 cit_write_reg(gspca_dev, 0x0050, 0x0111);
1798 cit_write_reg(gspca_dev, 0x00d0, 0x0111); 1798 cit_write_reg(gspca_dev, 0x00d0, 0x0111);
@@ -1840,7 +1840,7 @@ static int cit_start_model2(struct gspca_dev *gspca_dev)
1840 * Magic control of CMOS sensor. Only lower values like 1840 * Magic control of CMOS sensor. Only lower values like
1841 * 0-3 work, and picture shifts left or right. Don't change. 1841 * 0-3 work, and picture shifts left or right. Don't change.
1842 */ 1842 */
1843 switch (gspca_dev->width) { 1843 switch (gspca_dev->pixfmt.width) {
1844 case 176: /* 176x144 */ 1844 case 176: /* 176x144 */
1845 cit_model2_Packet1(gspca_dev, 0x0014, 0x0002); 1845 cit_model2_Packet1(gspca_dev, 0x0014, 0x0002);
1846 cit_model2_Packet1(gspca_dev, 0x0016, 0x0002); /* Horizontal shift */ 1846 cit_model2_Packet1(gspca_dev, 0x0016, 0x0002); /* Horizontal shift */
@@ -1899,7 +1899,7 @@ static int cit_start_model2(struct gspca_dev *gspca_dev)
1899 * does not allow arbitrary values and apparently is a bit mask, to 1899 * does not allow arbitrary values and apparently is a bit mask, to
1900 * be activated only at appropriate time. Don't change it randomly! 1900 * be activated only at appropriate time. Don't change it randomly!
1901 */ 1901 */
1902 switch (gspca_dev->width) { 1902 switch (gspca_dev->pixfmt.width) {
1903 case 176: /* 176x144 */ 1903 case 176: /* 176x144 */
1904 cit_model2_Packet1(gspca_dev, 0x0026, 0x00c2); 1904 cit_model2_Packet1(gspca_dev, 0x0026, 0x00c2);
1905 break; 1905 break;
@@ -2023,7 +2023,7 @@ static int cit_start_model3(struct gspca_dev *gspca_dev)
2023 cit_model3_Packet1(gspca_dev, 0x009e, 0x0096); 2023 cit_model3_Packet1(gspca_dev, 0x009e, 0x0096);
2024 cit_model3_Packet1(gspca_dev, 0x009f, 0x000a); 2024 cit_model3_Packet1(gspca_dev, 0x009f, 0x000a);
2025 2025
2026 switch (gspca_dev->width) { 2026 switch (gspca_dev->pixfmt.width) {
2027 case 160: 2027 case 160:
2028 cit_write_reg(gspca_dev, 0x0000, 0x0101); /* Same on 160x120, 320x240 */ 2028 cit_write_reg(gspca_dev, 0x0000, 0x0101); /* Same on 160x120, 320x240 */
2029 cit_write_reg(gspca_dev, 0x00a0, 0x0103); /* Same on 160x120, 320x240 */ 2029 cit_write_reg(gspca_dev, 0x00a0, 0x0103); /* Same on 160x120, 320x240 */
@@ -2134,7 +2134,7 @@ static int cit_start_model3(struct gspca_dev *gspca_dev)
2134 like with the IBM netcam pro). */ 2134 like with the IBM netcam pro). */
2135 cit_write_reg(gspca_dev, clock_div, 0x0111); /* Clock Divider */ 2135 cit_write_reg(gspca_dev, clock_div, 0x0111); /* Clock Divider */
2136 2136
2137 switch (gspca_dev->width) { 2137 switch (gspca_dev->pixfmt.width) {
2138 case 160: 2138 case 160:
2139 cit_model3_Packet1(gspca_dev, 0x001f, 0x0000); /* Same */ 2139 cit_model3_Packet1(gspca_dev, 0x001f, 0x0000); /* Same */
2140 cit_model3_Packet1(gspca_dev, 0x0039, 0x001f); /* Same */ 2140 cit_model3_Packet1(gspca_dev, 0x0039, 0x001f); /* Same */
@@ -2211,7 +2211,7 @@ static int cit_start_model4(struct gspca_dev *gspca_dev)
2211 cit_write_reg(gspca_dev, 0xfffa, 0x0124); 2211 cit_write_reg(gspca_dev, 0xfffa, 0x0124);
2212 cit_model4_Packet1(gspca_dev, 0x0034, 0x0000); 2212 cit_model4_Packet1(gspca_dev, 0x0034, 0x0000);
2213 2213
2214 switch (gspca_dev->width) { 2214 switch (gspca_dev->pixfmt.width) {
2215 case 128: /* 128x96 */ 2215 case 128: /* 128x96 */
2216 cit_write_reg(gspca_dev, 0x0070, 0x0119); 2216 cit_write_reg(gspca_dev, 0x0070, 0x0119);
2217 cit_write_reg(gspca_dev, 0x00d0, 0x0111); 2217 cit_write_reg(gspca_dev, 0x00d0, 0x0111);
@@ -2531,7 +2531,7 @@ static int cit_start_ibm_netcam_pro(struct gspca_dev *gspca_dev)
2531 cit_write_reg(gspca_dev, 0x00fc, 0x012b); /* Same */ 2531 cit_write_reg(gspca_dev, 0x00fc, 0x012b); /* Same */
2532 cit_write_reg(gspca_dev, 0x0022, 0x012a); /* Same */ 2532 cit_write_reg(gspca_dev, 0x0022, 0x012a); /* Same */
2533 2533
2534 switch (gspca_dev->width) { 2534 switch (gspca_dev->pixfmt.width) {
2535 case 160: /* 160x120 */ 2535 case 160: /* 160x120 */
2536 cit_write_reg(gspca_dev, 0x0024, 0x010b); 2536 cit_write_reg(gspca_dev, 0x0024, 0x010b);
2537 cit_write_reg(gspca_dev, 0x0089, 0x0119); 2537 cit_write_reg(gspca_dev, 0x0089, 0x0119);
@@ -2635,7 +2635,7 @@ static int sd_isoc_init(struct gspca_dev *gspca_dev)
2635 struct usb_host_interface *alt; 2635 struct usb_host_interface *alt;
2636 int max_packet_size; 2636 int max_packet_size;
2637 2637
2638 switch (gspca_dev->width) { 2638 switch (gspca_dev->pixfmt.width) {
2639 case 160: 2639 case 160:
2640 max_packet_size = 450; 2640 max_packet_size = 450;
2641 break; 2641 break;
@@ -2659,7 +2659,7 @@ static int sd_isoc_nego(struct gspca_dev *gspca_dev)
2659 int ret, packet_size, min_packet_size; 2659 int ret, packet_size, min_packet_size;
2660 struct usb_host_interface *alt; 2660 struct usb_host_interface *alt;
2661 2661
2662 switch (gspca_dev->width) { 2662 switch (gspca_dev->pixfmt.width) {
2663 case 160: 2663 case 160:
2664 min_packet_size = 200; 2664 min_packet_size = 200;
2665 break; 2665 break;
@@ -2780,7 +2780,7 @@ static u8 *cit_find_sof(struct gspca_dev *gspca_dev, u8 *data, int len)
2780 case CIT_MODEL1: 2780 case CIT_MODEL1:
2781 case CIT_MODEL3: 2781 case CIT_MODEL3:
2782 case CIT_IBM_NETCAM_PRO: 2782 case CIT_IBM_NETCAM_PRO:
2783 switch (gspca_dev->width) { 2783 switch (gspca_dev->pixfmt.width) {
2784 case 160: /* 160x120 */ 2784 case 160: /* 160x120 */
2785 byte3 = 0x02; 2785 byte3 = 0x02;
2786 byte4 = 0x0a; 2786 byte4 = 0x0a;
diff --git a/drivers/media/usb/gspca/zc3xx.c b/drivers/media/usb/gspca/zc3xx.c
index cbfc2f921427..7b95d8e88a20 100644
--- a/drivers/media/usb/gspca/zc3xx.c
+++ b/drivers/media/usb/gspca/zc3xx.c
@@ -6700,7 +6700,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
6700 }; 6700 };
6701 6701
6702 /* create the JPEG header */ 6702 /* create the JPEG header */
6703 jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 6703 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
6704 gspca_dev->pixfmt.width,
6704 0x21); /* JPEG 422 */ 6705 0x21); /* JPEG 422 */
6705 6706
6706 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; 6707 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv;