diff options
Diffstat (limited to 'drivers/media/usb/gspca')
34 files changed, 188 insertions, 537 deletions
diff --git a/drivers/media/usb/gspca/conex.c b/drivers/media/usb/gspca/conex.c index 2e15c80..38714df 100644 --- a/drivers/media/usb/gspca/conex.c +++ b/drivers/media/usb/gspca/conex.c @@ -783,8 +783,7 @@ static int sd_start(struct gspca_dev *gspca_dev) struct sd *sd = (struct sd *) gspca_dev; /* create the JPEG header */ - jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, - gspca_dev->pixfmt.width, + jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 0x22); /* JPEG 411 */ jpeg_set_qual(sd->jpeg_hdr, QUALITY); diff --git a/drivers/media/usb/gspca/cpia1.c b/drivers/media/usb/gspca/cpia1.c index f23df4a..064b530 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) sd->params.format.videoSize = VIDEOSIZE_CIF; sd->params.roi.colEnd = sd->params.roi.colStart + - (gspca_dev->pixfmt.width >> 3); + (gspca_dev->width >> 3); sd->params.roi.rowEnd = sd->params.roi.rowStart + - (gspca_dev->pixfmt.height >> 2); + (gspca_dev->height >> 2); /* And now set the camera to a known state */ 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 f3a7ace..048507b 100644 --- a/drivers/media/usb/gspca/gspca.c +++ b/drivers/media/usb/gspca/gspca.c @@ -504,7 +504,8 @@ static int frame_alloc(struct gspca_dev *gspca_dev, struct file *file, unsigned int frsz; int i; - frsz = gspca_dev->pixfmt.sizeimage; + i = gspca_dev->curr_mode; + frsz = gspca_dev->cam.cam_mode[i].sizeimage; PDEBUG(D_STREAM, "frame alloc frsz: %d", frsz); frsz = PAGE_ALIGN(frsz); if (count >= GSPCA_MAX_FRAMES) @@ -626,14 +627,16 @@ static struct usb_host_endpoint *alt_xfer(struct usb_host_interface *alt, static u32 which_bandwidth(struct gspca_dev *gspca_dev) { u32 bandwidth; + int i; /* get the (max) image size */ - bandwidth = gspca_dev->pixfmt.sizeimage; + i = gspca_dev->curr_mode; + bandwidth = gspca_dev->cam.cam_mode[i].sizeimage; /* if the image is compressed, estimate its mean size */ if (!gspca_dev->cam.needs_full_bandwidth && - bandwidth < gspca_dev->pixfmt.width * - gspca_dev->pixfmt.height) + bandwidth < gspca_dev->cam.cam_mode[i].width * + gspca_dev->cam.cam_mode[i].height) bandwidth = bandwidth * 3 / 8; /* 0.375 */ /* estimate the frame rate */ @@ -647,7 +650,7 @@ static u32 which_bandwidth(struct gspca_dev *gspca_dev) /* don't hope more than 15 fps with USB 1.1 and * image resolution >= 640x480 */ - if (gspca_dev->pixfmt.width >= 640 + if (gspca_dev->width >= 640 && gspca_dev->dev->speed == USB_SPEED_FULL) bandwidth *= 15; /* 15 fps */ else @@ -979,7 +982,9 @@ static void gspca_set_default_mode(struct gspca_dev *gspca_dev) i = gspca_dev->cam.nmodes - 1; /* take the highest mode */ gspca_dev->curr_mode = i; - gspca_dev->pixfmt = gspca_dev->cam.cam_mode[i]; + gspca_dev->width = gspca_dev->cam.cam_mode[i].width; + gspca_dev->height = gspca_dev->cam.cam_mode[i].height; + gspca_dev->pixfmt = gspca_dev->cam.cam_mode[i].pixelformat; /* does nothing if ctrl_handler == NULL */ v4l2_ctrl_handler_setup(gspca_dev->vdev.ctrl_handler); @@ -1100,8 +1105,10 @@ static int vidioc_g_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *fmt) { struct gspca_dev *gspca_dev = video_drvdata(file); + int mode; - fmt->fmt.pix = gspca_dev->pixfmt; + mode = gspca_dev->curr_mode; + fmt->fmt.pix = gspca_dev->cam.cam_mode[mode]; /* some drivers use priv internally, zero it before giving it to userspace */ fmt->fmt.pix.priv = 0; @@ -1133,12 +1140,6 @@ static int try_fmt_vid_cap(struct gspca_dev *gspca_dev, mode = mode2; } fmt->fmt.pix = gspca_dev->cam.cam_mode[mode]; - if (gspca_dev->sd_desc->try_fmt) { - /* pass original resolution to subdriver try_fmt */ - fmt->fmt.pix.width = w; - fmt->fmt.pix.height = h; - gspca_dev->sd_desc->try_fmt(gspca_dev, fmt); - } /* some drivers use priv internally, zero it before giving it to userspace */ fmt->fmt.pix.priv = 0; @@ -1177,16 +1178,19 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv, goto out; } + if (ret == gspca_dev->curr_mode) { + ret = 0; + goto out; /* same mode */ + } + if (gspca_dev->streaming) { ret = -EBUSY; goto out; } + gspca_dev->width = fmt->fmt.pix.width; + gspca_dev->height = fmt->fmt.pix.height; + gspca_dev->pixfmt = fmt->fmt.pix.pixelformat; gspca_dev->curr_mode = ret; - if (gspca_dev->sd_desc->try_fmt) - /* subdriver try_fmt can modify format parameters */ - gspca_dev->pixfmt = fmt->fmt.pix; - else - gspca_dev->pixfmt = gspca_dev->cam.cam_mode[ret]; ret = 0; out: @@ -1201,9 +1205,6 @@ static int vidioc_enum_framesizes(struct file *file, void *priv, int i; __u32 index = 0; - if (gspca_dev->sd_desc->enum_framesizes) - return gspca_dev->sd_desc->enum_framesizes(gspca_dev, fsize); - for (i = 0; i < gspca_dev->cam.nmodes; i++) { if (fsize->pixel_format != gspca_dev->cam.cam_mode[i].pixelformat) @@ -1470,9 +1471,8 @@ static int vidioc_streamon(struct file *file, void *priv, if (ret < 0) goto out; } - PDEBUG_MODE(gspca_dev, D_STREAM, "stream on OK", - gspca_dev->pixfmt.pixelformat, - gspca_dev->pixfmt.width, gspca_dev->pixfmt.height); + PDEBUG_MODE(gspca_dev, D_STREAM, "stream on OK", gspca_dev->pixfmt, + gspca_dev->width, gspca_dev->height); ret = 0; out: mutex_unlock(&gspca_dev->queue_lock); diff --git a/drivers/media/usb/gspca/gspca.h b/drivers/media/usb/gspca/gspca.h index 300642d..ac0b11f 100644 --- a/drivers/media/usb/gspca/gspca.h +++ b/drivers/media/usb/gspca/gspca.h @@ -88,10 +88,6 @@ typedef void (*cam_pkt_op) (struct gspca_dev *gspca_dev, typedef int (*cam_int_pkt_op) (struct gspca_dev *gspca_dev, u8 *data, int len); -typedef void (*cam_format_op) (struct gspca_dev *gspca_dev, - struct v4l2_format *fmt); -typedef int (*cam_frmsize_op) (struct gspca_dev *gspca_dev, - struct v4l2_frmsizeenum *fsize); /* subdriver description */ struct sd_desc { @@ -113,8 +109,6 @@ struct sd_desc { cam_set_jpg_op set_jcomp; cam_streamparm_op get_streamparm; cam_streamparm_op set_streamparm; - cam_format_op try_fmt; - cam_frmsize_op enum_framesizes; #ifdef CONFIG_VIDEO_ADV_DEBUG cam_set_reg_op set_register; cam_get_reg_op get_register; @@ -189,7 +183,9 @@ struct gspca_dev { __u8 streaming; /* protected by both mutexes (*) */ __u8 curr_mode; /* current camera mode */ - struct v4l2_pix_format pixfmt; /* current mode parameters */ + __u32 pixfmt; /* current mode parameters */ + __u16 width; + __u16 height; __u32 sequence; /* frame sequence number */ wait_queue_head_t wq; /* wait queue */ diff --git a/drivers/media/usb/gspca/jeilinj.c b/drivers/media/usb/gspca/jeilinj.c index 19736e2..8da3dde 100644 --- a/drivers/media/usb/gspca/jeilinj.c +++ b/drivers/media/usb/gspca/jeilinj.c @@ -378,12 +378,11 @@ static int sd_start(struct gspca_dev *gspca_dev) struct sd *dev = (struct sd *) gspca_dev; /* create the JPEG header */ - jpeg_define(dev->jpeg_hdr, gspca_dev->pixfmt.height, - gspca_dev->pixfmt.width, + jpeg_define(dev->jpeg_hdr, gspca_dev->height, gspca_dev->width, 0x21); /* JPEG 422 */ jpeg_set_qual(dev->jpeg_hdr, dev->quality); PDEBUG(D_STREAM, "Start streaming at %dx%d", - gspca_dev->pixfmt.height, gspca_dev->pixfmt.width); + gspca_dev->height, gspca_dev->width); jlj_start(gspca_dev); return gspca_dev->usb_err; } diff --git a/drivers/media/usb/gspca/jl2005bcd.c b/drivers/media/usb/gspca/jl2005bcd.c index 5b481fa..fdaeeb1 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) struct sd *sd = (struct sd *) gspca_dev; sd->cap_mode = gspca_dev->cam.cam_mode; - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 640: PDEBUG(D_STREAM, "Start streaming at vga resolution"); 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 27fcef1..cfa4663 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) return err; data[0] = MT9M111_RMB_OVER_SIZED; - if (gspca_dev->pixfmt.width == 640) { + if (gspca_dev->width == 640) { data[1] = MT9M111_RMB_ROW_SKIP_2X | MT9M111_RMB_COLUMN_SKIP_2X | (hflip << 1) | vflip; diff --git a/drivers/media/usb/gspca/mars.c b/drivers/media/usb/gspca/mars.c index 779a878..ff2c5ab 100644 --- a/drivers/media/usb/gspca/mars.c +++ b/drivers/media/usb/gspca/mars.c @@ -254,8 +254,7 @@ static int sd_start(struct gspca_dev *gspca_dev) int i; /* create the JPEG header */ - jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, - gspca_dev->pixfmt.width, + jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 0x21); /* JPEG 422 */ jpeg_set_qual(sd->jpeg_hdr, QUALITY); @@ -271,8 +270,8 @@ static int sd_start(struct gspca_dev *gspca_dev) data[0] = 0x00; /* address */ data[1] = 0x0c | 0x01; /* reg 0 */ data[2] = 0x01; /* reg 1 */ - data[3] = gspca_dev->pixfmt.width / 8; /* h_size , reg 2 */ - data[4] = gspca_dev->pixfmt.height / 8; /* v_size , reg 3 */ + data[3] = gspca_dev->width / 8; /* h_size , reg 2 */ + data[4] = gspca_dev->height / 8; /* v_size , reg 3 */ data[5] = 0x30; /* reg 4, MI, PAS5101 : * 0x30 for 24mhz , 0x28 for 12mhz */ 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 f006e29..68bb2f3 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) if (sd->sensor_type) data[5] = 0xbb; - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 160: data[9] |= 0x04; /* reg 8, 2:1 scale down from 320 */ /* fall thru */ @@ -618,7 +618,7 @@ static int start_vga_cam(struct gspca_dev *gspca_dev) data[10] = 0x18; } - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 160: data[9] |= 0x0c; /* reg 8, 4:1 scale down */ /* fall thru */ @@ -847,7 +847,7 @@ static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 min_clockdiv) u8 clockdiv = (60 * expo + 7999) / 8000; /* Limit framerate to not exceed usb bandwidth */ - if (clockdiv < min_clockdiv && gspca_dev->pixfmt.width >= 320) + if (clockdiv < min_clockdiv && gspca_dev->width >= 320) clockdiv = min_clockdiv; else if (clockdiv < 2) clockdiv = 2; diff --git a/drivers/media/usb/gspca/nw80x.c b/drivers/media/usb/gspca/nw80x.c index 599f755..44c9964 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) reg_r(gspca_dev, 0x1004, 1); if (gspca_dev->usb_buf[0] & 0x04) { /* if AE_FULL_FRM */ - sd->ae_res = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height; + sd->ae_res = gspca_dev->width * gspca_dev->height; } else { /* get the AE window size */ reg_r(gspca_dev, 0x1011, 8); w = (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0] @@ -1717,8 +1717,7 @@ static void setautogain(struct gspca_dev *gspca_dev, s32 val) - (gspca_dev->usb_buf[7] << 8) - gspca_dev->usb_buf[6]; sd->ae_res = h * w; if (sd->ae_res == 0) - sd->ae_res = gspca_dev->pixfmt.width * - gspca_dev->pixfmt.height; + sd->ae_res = gspca_dev->width * gspca_dev->height; } } @@ -1857,21 +1856,21 @@ static int sd_start(struct gspca_dev *gspca_dev) reg_w_buf(gspca_dev, cmd); switch (sd->webcam) { case P35u: - if (gspca_dev->pixfmt.width == 320) + if (gspca_dev->width == 320) reg_w_buf(gspca_dev, nw801_start_qvga); else reg_w_buf(gspca_dev, nw801_start_vga); reg_w_buf(gspca_dev, nw801_start_2); break; case Kr651us: - if (gspca_dev->pixfmt.width == 320) + if (gspca_dev->width == 320) reg_w_buf(gspca_dev, kr651_start_qvga); else reg_w_buf(gspca_dev, kr651_start_vga); reg_w_buf(gspca_dev, kr651_start_2); break; case Proscope: - if (gspca_dev->pixfmt.width == 320) + if (gspca_dev->width == 320) reg_w_buf(gspca_dev, proscope_start_qvga); else 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 c95f32a..8937d79 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) switch (sd->bridge) { case BRIDGE_OVFX2: - if (gspca_dev->pixfmt.width != 800) + if (gspca_dev->width != 800) gspca_dev->cam.bulk_size = OVFX2_BULK_SIZE; else gspca_dev->cam.bulk_size = 7 * 4096; @@ -3507,8 +3507,8 @@ static void ov511_mode_init_regs(struct sd *sd) /* Here I'm assuming that snapshot size == image size. * I hope that's always true. --claudio */ - hsegs = (sd->gspca_dev.pixfmt.width >> 3) - 1; - vsegs = (sd->gspca_dev.pixfmt.height >> 3) - 1; + hsegs = (sd->gspca_dev.width >> 3) - 1; + vsegs = (sd->gspca_dev.height >> 3) - 1; reg_w(sd, R511_CAM_PXCNT, hsegs); reg_w(sd, R511_CAM_LNCNT, vsegs); @@ -3541,7 +3541,7 @@ static void ov511_mode_init_regs(struct sd *sd) case SEN_OV7640: case SEN_OV7648: case SEN_OV76BE: - if (sd->gspca_dev.pixfmt.width == 320) + if (sd->gspca_dev.width == 320) interlaced = 1; /* Fall through */ case SEN_OV6630: @@ -3551,7 +3551,7 @@ static void ov511_mode_init_regs(struct sd *sd) case 30: case 25: /* Not enough bandwidth to do 640x480 @ 30 fps */ - if (sd->gspca_dev.pixfmt.width != 640) { + if (sd->gspca_dev.width != 640) { sd->clockdiv = 0; break; } @@ -3584,8 +3584,7 @@ static void ov511_mode_init_regs(struct sd *sd) /* Check if we have enough bandwidth to disable compression */ fps = (interlaced ? 60 : 30) / (sd->clockdiv + 1) + 1; - needed = fps * sd->gspca_dev.pixfmt.width * - sd->gspca_dev.pixfmt.height * 3 / 2; + needed = fps * sd->gspca_dev.width * sd->gspca_dev.height * 3 / 2; /* 1000 isoc packets/sec */ if (needed > 1000 * packet_size) { /* Enable Y and UV quantization and compression */ @@ -3647,8 +3646,8 @@ static void ov518_mode_init_regs(struct sd *sd) reg_w(sd, 0x38, 0x80); } - hsegs = sd->gspca_dev.pixfmt.width / 16; - vsegs = sd->gspca_dev.pixfmt.height / 4; + hsegs = sd->gspca_dev.width / 16; + vsegs = sd->gspca_dev.height / 4; reg_w(sd, 0x29, hsegs); reg_w(sd, 0x2a, vsegs); @@ -3687,8 +3686,7 @@ static void ov518_mode_init_regs(struct sd *sd) * happened to be with revision < 2 cams using an * OV7620 and revision 2 cams using an OV7620AE. */ - if (sd->revision > 0 && - sd->gspca_dev.pixfmt.width == 640) { + if (sd->revision > 0 && sd->gspca_dev.width == 640) { reg_w(sd, 0x20, 0x60); reg_w(sd, 0x21, 0x1f); } else { @@ -3814,8 +3812,8 @@ static void ov519_mode_init_regs(struct sd *sd) break; } - reg_w(sd, OV519_R10_H_SIZE, sd->gspca_dev.pixfmt.width >> 4); - reg_w(sd, OV519_R11_V_SIZE, sd->gspca_dev.pixfmt.height >> 3); + reg_w(sd, OV519_R10_H_SIZE, sd->gspca_dev.width >> 4); + reg_w(sd, OV519_R11_V_SIZE, sd->gspca_dev.height >> 3); if (sd->sensor == SEN_OV7670 && sd->gspca_dev.cam.cam_mode[sd->gspca_dev.curr_mode].priv) reg_w(sd, OV519_R12_X_OFFSETL, 0x04); @@ -3949,16 +3947,14 @@ static void mode_init_ov_sensor_regs(struct sd *sd) } case SEN_OV3610: if (qvga) { - xstart = (1040 - gspca_dev->pixfmt.width) / 2 + - (0x1f << 4); - ystart = (776 - gspca_dev->pixfmt.height) / 2; + xstart = (1040 - gspca_dev->width) / 2 + (0x1f << 4); + ystart = (776 - gspca_dev->height) / 2; } else { - xstart = (2076 - gspca_dev->pixfmt.width) / 2 + - (0x10 << 4); - ystart = (1544 - gspca_dev->pixfmt.height) / 2; + xstart = (2076 - gspca_dev->width) / 2 + (0x10 << 4); + ystart = (1544 - gspca_dev->height) / 2; } - xend = xstart + gspca_dev->pixfmt.width; - yend = ystart + gspca_dev->pixfmt.height; + xend = xstart + gspca_dev->width; + yend = ystart + gspca_dev->height; /* Writing to the COMH register resets the other windowing regs to their default values, so we must do this first. */ i2c_w_mask(sd, 0x12, qvga ? 0x40 : 0x00, 0xf0); @@ -4233,8 +4229,8 @@ static int sd_start(struct gspca_dev *gspca_dev) struct sd *sd = (struct sd *) gspca_dev; /* Default for most bridges, allow bridge_mode_init_regs to override */ - sd->sensor_width = sd->gspca_dev.pixfmt.width; - sd->sensor_height = sd->gspca_dev.pixfmt.height; + sd->sensor_width = sd->gspca_dev.width; + sd->sensor_height = sd->gspca_dev.height; switch (sd->bridge) { case BRIDGE_OV511: @@ -4349,13 +4345,12 @@ static void ov511_pkt_scan(struct gspca_dev *gspca_dev, ov51x_handle_button(gspca_dev, (in[8] >> 2) & 1); if (in[8] & 0x80) { /* Frame end */ - if ((in[9] + 1) * 8 != gspca_dev->pixfmt.width || - (in[10] + 1) * 8 != gspca_dev->pixfmt.height) { + if ((in[9] + 1) * 8 != gspca_dev->width || + (in[10] + 1) * 8 != gspca_dev->height) { PERR("Invalid frame size, got: %dx%d," " requested: %dx%d\n", (in[9] + 1) * 8, (in[10] + 1) * 8, - gspca_dev->pixfmt.width, - gspca_dev->pixfmt.height); + gspca_dev->width, gspca_dev->height); gspca_dev->last_packet_type = DISCARD_PACKET; return; } @@ -4475,8 +4470,7 @@ static void ovfx2_pkt_scan(struct gspca_dev *gspca_dev, if (sd->first_frame) { sd->first_frame--; if (gspca_dev->image_len < - sd->gspca_dev.pixfmt.width * - sd->gspca_dev.pixfmt.height) + sd->gspca_dev.width * sd->gspca_dev.height) gspca_dev->last_packet_type = DISCARD_PACKET; } 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 90f0d63..03a33c4 100644 --- a/drivers/media/usb/gspca/ov534.c +++ b/drivers/media/usb/gspca/ov534.c @@ -1440,10 +1440,9 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, /* If this packet is marked as EOF, end the frame */ } else if (data[1] & UVC_STREAM_EOF) { sd->last_pts = 0; - if (gspca_dev->pixfmt.pixelformat == V4L2_PIX_FMT_YUYV + if (gspca_dev->pixfmt == V4L2_PIX_FMT_YUYV && gspca_dev->image_len + len - 12 != - gspca_dev->pixfmt.width * - gspca_dev->pixfmt.height * 2) { + gspca_dev->width * gspca_dev->height * 2) { PDEBUG(D_PACK, "wrong sized frame"); goto discard; } diff --git a/drivers/media/usb/gspca/ov534_9.c b/drivers/media/usb/gspca/ov534_9.c index 47085cf..c4cd028 100644 --- a/drivers/media/usb/gspca/ov534_9.c +++ b/drivers/media/usb/gspca/ov534_9.c @@ -59,7 +59,6 @@ enum sensors { SENSOR_OV965x, /* ov9657 */ SENSOR_OV971x, /* ov9712 */ SENSOR_OV562x, /* ov5621 */ - SENSOR_OV361x, /* ov3610 */ NSENSORS }; @@ -107,274 +106,6 @@ static const struct v4l2_pix_format ov562x_mode[] = { } }; -enum ov361x { - ov361x_2048 = 0, - ov361x_1600, - ov361x_1024, - ov361x_640, - ov361x_320, - ov361x_160, - ov361x_last -}; - -static const struct v4l2_pix_format ov361x_mode[] = { - {0x800, 0x600, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, - .bytesperline = 0x800, - .sizeimage = 0x800 * 0x600, - .colorspace = V4L2_COLORSPACE_SRGB}, - {1600, 1200, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, - .bytesperline = 1600, - .sizeimage = 1600 * 1200, - .colorspace = V4L2_COLORSPACE_SRGB}, - {1024, 768, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, - .bytesperline = 768, - .sizeimage = 1024 * 768, - .colorspace = V4L2_COLORSPACE_SRGB}, - {640, 480, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, - .bytesperline = 640, - .sizeimage = 640 * 480, - .colorspace = V4L2_COLORSPACE_SRGB}, - {320, 240, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, - .bytesperline = 320, - .sizeimage = 320 * 240, - .colorspace = V4L2_COLORSPACE_SRGB}, - {160, 120, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, - .bytesperline = 160, - .sizeimage = 160 * 120, - .colorspace = V4L2_COLORSPACE_SRGB} -}; - -static const u8 ov361x_start_2048[][2] = { - {0x12, 0x80}, - {0x13, 0xcf}, - {0x14, 0x40}, - {0x15, 0x00}, - {0x01, 0x80}, - {0x02, 0x80}, - {0x04, 0x70}, - {0x0d, 0x40}, - {0x0f, 0x47}, - {0x11, 0x81}, - {0x32, 0x36}, - {0x33, 0x0c}, - {0x34, 0x00}, - {0x35, 0x90}, - {0x12, 0x00}, - {0x17, 0x10}, - {0x18, 0x90}, - {0x19, 0x00}, - {0x1a, 0xc0}, -}; -static const u8 ov361x_bridge_start_2048[][2] = { - {0xf1, 0x60}, - {0x88, 0x00}, - {0x89, 0x08}, - {0x8a, 0x00}, - {0x8b, 0x06}, - {0x8c, 0x01}, - {0x8d, 0x10}, - {0x1c, 0x00}, - {0x1d, 0x48}, - {0x1d, 0x00}, - {0x1d, 0xff}, - {0x1c, 0x0a}, - {0x1d, 0x2e}, - {0x1d, 0x1e}, -}; - -static const u8 ov361x_start_1600[][2] = { - {0x12, 0x80}, - {0x13, 0xcf}, - {0x14, 0x40}, - {0x15, 0x00}, - {0x01, 0x80}, - {0x02, 0x80}, - {0x04, 0x70}, - {0x0d, 0x40}, - {0x0f, 0x47}, - {0x11, 0x81}, - {0x32, 0x36}, - {0x33, 0x0C}, - {0x34, 0x00}, - {0x35, 0x90}, - {0x12, 0x00}, - {0x17, 0x10}, - {0x18, 0x90}, - {0x19, 0x00}, - {0x1a, 0xc0}, -}; -static const u8 ov361x_bridge_start_1600[][2] = { - {0xf1, 0x60}, /* Hsize[7:0] */ - {0x88, 0x00}, /* Hsize[15:8] Write Only, can't read */ - {0x89, 0x08}, /* Vsize[7:0] */ - {0x8a, 0x00}, /* Vsize[15:8] Write Only, can't read */ - {0x8b, 0x06}, /* for Iso */ - {0x8c, 0x01}, /* RAW input */ - {0x8d, 0x10}, - {0x1c, 0x00}, /* RAW output, Iso transfer */ - {0x1d, 0x48}, - {0x1d, 0x00}, - {0x1d, 0xff}, - {0x1c, 0x0a}, /* turn off JPEG, Iso mode */ - {0x1d, 0x2e}, /* for Iso */ - {0x1d, 0x1e}, -}; - -static const u8 ov361x_start_1024[][2] = { - {0x12, 0x80}, - {0x13, 0xcf}, - {0x14, 0x40}, - {0x15, 0x00}, - {0x01, 0x80}, - {0x02, 0x80}, - {0x04, 0x70}, - {0x0d, 0x40}, - {0x0f, 0x47}, - {0x11, 0x81}, - {0x32, 0x36}, - {0x33, 0x0C}, - {0x34, 0x00}, - {0x35, 0x90}, - {0x12, 0x40}, - {0x17, 0x1f}, - {0x18, 0x5f}, - {0x19, 0x00}, - {0x1a, 0x68}, -}; -static const u8 ov361x_bridge_start_1024[][2] = { - {0xf1, 0x60}, /* Hsize[7:0] */ - {0x88, 0x00}, /* Hsize[15:8] Write Only, can't read */ - {0x89, 0x04}, /* Vsize[7:0] */ - {0x8a, 0x00}, /* Vsize[15:8] Write Only, can't read */ - {0x8b, 0x03}, /* for Iso */ - {0x8c, 0x01}, /* RAW input */ - {0x8d, 0x10}, - {0x1c, 0x00}, /* RAW output, Iso transfer */ - {0x1d, 0x48}, - {0x1d, 0x00}, - {0x1d, 0xff}, - {0x1c, 0x0a}, /* turn off JPEG, Iso mode */ - {0x1d, 0x2e}, /* for Iso */ - {0x1d, 0x1e}, -}; - -static const u8 ov361x_start_640[][2] = { - {0x12, 0x80}, - {0x13, 0xcf}, - {0x14, 0x40}, - {0x15, 0x00}, - {0x01, 0x80}, - {0x02, 0x80}, - {0x04, 0x70}, - {0x0d, 0x40}, - {0x0f, 0x47}, - {0x11, 0x81}, - {0x32, 0x36}, - {0x33, 0x0C}, - {0x34, 0x00}, - {0x35, 0x90}, - {0x12, 0x40}, - {0x17, 0x1f}, - {0x18, 0x5f}, - {0x19, 0x00}, - {0x1a, 0x68}, -}; - -static const u8 ov361x_bridge_start_640[][2] = { - {0xf1, 0x60}, /* Hsize[7:0]*/ - {0x88, 0x00}, /* Hsize[15:8] Write Only, can't read */ - {0x89, 0x04}, /* Vsize[7:0] */ - {0x8a, 0x00}, /* Vsize[15:8] Write Only, can't read */ - {0x8b, 0x03}, /* for Iso */ - {0x8c, 0x01}, /* RAW input */ - {0x8d, 0x10}, - {0x1c, 0x00}, /* RAW output, Iso transfer */ - {0x1d, 0x48}, - {0x1d, 0x00}, - {0x1d, 0xff}, - {0x1c, 0x0a}, /* turn off JPEG, Iso mode */ - {0x1d, 0x2e}, /* for Iso */ - {0x1d, 0x1e}, -}; - -static const u8 ov361x_start_320[][2] = { - {0x12, 0x80}, - {0x13, 0xcf}, - {0x14, 0x40}, - {0x15, 0x00}, - {0x01, 0x80}, - {0x02, 0x80}, - {0x04, 0x70}, - {0x0d, 0x40}, - {0x0f, 0x47}, - {0x11, 0x81}, - {0x32, 0x36}, - {0x33, 0x0C}, - {0x34, 0x00}, - {0x35, 0x90}, - {0x12, 0x40}, - {0x17, 0x1f}, - {0x18, 0x5f}, - {0x19, 0x00}, - {0x1a, 0x68}, -}; - -static const u8 ov361x_bridge_start_320[][2] = { - {0xf1, 0x60}, /* Hsize[7:0] */ - {0x88, 0x00}, /* Hsize[15:8] Write Only, can't read */ - {0x89, 0x04}, /* Vsize[7:0] */ - {0x8a, 0x00}, /* Vsize[15:8] Write Only, can't read */ - {0x8b, 0x03}, /* for Iso */ - {0x8c, 0x01}, /* RAW input */ - {0x8d, 0x10}, - {0x1c, 0x00}, /* RAW output, Iso transfer; */ - {0x1d, 0x48}, - {0x1d, 0x00}, - {0x1d, 0xff}, - {0x1c, 0x0a}, /* turn off JPEG, Iso mode */ - {0x1d, 0x2e}, /* for Iso */ - {0x1d, 0x1e}, -}; - -static const u8 ov361x_start_160[][2] = { - {0x12, 0x80}, - {0x13, 0xcf}, - {0x14, 0x40}, - {0x15, 0x00}, - {0x01, 0x80}, - {0x02, 0x80}, - {0x04, 0x70}, - {0x0d, 0x40}, - {0x0f, 0x47}, - {0x11, 0x81}, - {0x32, 0x36}, - {0x33, 0x0C}, - {0x34, 0x00}, - {0x35, 0x90}, - {0x12, 0x40}, - {0x17, 0x1f}, - {0x18, 0x5f}, - {0x19, 0x00}, - {0x1a, 0x68}, -}; - -static const u8 ov361x_bridge_start_160[][2] = { - {0xf1, 0x60}, /* Hsize[7:0] */ - {0x88, 0x00}, /* Hsize[15:8] Write Only, can't read */ - {0x89, 0x04}, /* Vsize[7:0] */ - {0x8a, 0x00}, /* Vsize[15:8] Write Only, can't read */ - {0x8b, 0x03}, /* for Iso */ - {0x8c, 0x01}, /* RAW input */ - {0x8d, 0x10}, - {0x1c, 0x00}, /* RAW output, Iso transfer */ - {0x1d, 0x48}, - {0x1d, 0x00}, - {0x1d, 0xff}, - {0x1c, 0x0a}, /* turn off JPEG, Iso mode */ - {0x1d, 0x2e}, /* for Iso */ - {0x1d, 0x1e}, -}; - static const u8 bridge_init[][2] = { {0x88, 0xf8}, {0x89, 0xff}, @@ -1167,7 +898,7 @@ static int sccb_check_status(struct gspca_dev *gspca_dev) int i; for (i = 0; i < 5; i++) { - msleep(20); + msleep(10); data = reg_r(gspca_dev, OV534_REG_STATUS); switch (data) { @@ -1490,13 +1221,6 @@ static int sd_init(struct gspca_dev *gspca_dev) sccb_w_array(gspca_dev, ov562x_init_2, ARRAY_SIZE(ov562x_init_2)); reg_w(gspca_dev, 0xe0, 0x00); - } else if ((sensor_id & 0xfff0) == 0x3610) { - sd->sensor = SENSOR_OV361x; - gspca_dev->cam.cam_mode = ov361x_mode; - gspca_dev->cam.nmodes = ARRAY_SIZE(ov361x_mode); - reg_w(gspca_dev, 0xe7, 0x3a); - reg_w(gspca_dev, 0xf1, 0x60); - sccb_write(gspca_dev, 0x12, 0x80); } else { pr_err("Unknown sensor %04x", sensor_id); return -EINVAL; @@ -1505,53 +1229,6 @@ static int sd_init(struct gspca_dev *gspca_dev) return gspca_dev->usb_err; } -static int sd_start_ov361x(struct gspca_dev *gspca_dev) -{ - sccb_write(gspca_dev, 0x12, 0x80); - msleep(20); - switch (gspca_dev->curr_mode % (ov361x_last)) { - case ov361x_2048: - reg_w_array(gspca_dev, ov361x_bridge_start_2048, - ARRAY_SIZE(ov361x_bridge_start_2048)); - sccb_w_array(gspca_dev, ov361x_start_2048, - ARRAY_SIZE(ov361x_start_2048)); - break; - case ov361x_1600: - reg_w_array(gspca_dev, ov361x_bridge_start_1600, - ARRAY_SIZE(ov361x_bridge_start_1600)); - sccb_w_array(gspca_dev, ov361x_start_1600, - ARRAY_SIZE(ov361x_start_1600)); - break; - case ov361x_1024: - reg_w_array(gspca_dev, ov361x_bridge_start_1024, - ARRAY_SIZE(ov361x_bridge_start_1024)); - sccb_w_array(gspca_dev, ov361x_start_1024, - ARRAY_SIZE(ov361x_start_1024)); - break; - case ov361x_640: - reg_w_array(gspca_dev, ov361x_bridge_start_640, - ARRAY_SIZE(ov361x_bridge_start_640)); - sccb_w_array(gspca_dev, ov361x_start_640, - ARRAY_SIZE(ov361x_start_640)); - break; - case ov361x_320: - reg_w_array(gspca_dev, ov361x_bridge_start_320, - ARRAY_SIZE(ov361x_bridge_start_320)); - sccb_w_array(gspca_dev, ov361x_start_320, - ARRAY_SIZE(ov361x_start_320)); - break; - case ov361x_160: - reg_w_array(gspca_dev, ov361x_bridge_start_160, - ARRAY_SIZE(ov361x_bridge_start_160)); - sccb_w_array(gspca_dev, ov361x_start_160, - ARRAY_SIZE(ov361x_start_160)); - break; - } - reg_w(gspca_dev, 0xe0, 0x00); /* start transfer */ - - return gspca_dev->usb_err; -} - static int sd_start(struct gspca_dev *gspca_dev) { struct sd *sd = (struct sd *) gspca_dev; @@ -1560,8 +1237,6 @@ static int sd_start(struct gspca_dev *gspca_dev) return gspca_dev->usb_err; if (sd->sensor == SENSOR_OV562x) return gspca_dev->usb_err; - if (sd->sensor == SENSOR_OV361x) - return sd_start_ov361x(gspca_dev); switch (gspca_dev->curr_mode) { case QVGA_MODE: /* 320x240 */ @@ -1615,11 +1290,6 @@ static int sd_start(struct gspca_dev *gspca_dev) static void sd_stopN(struct gspca_dev *gspca_dev) { - if (((struct sd *)gspca_dev)->sensor == SENSOR_OV361x) { - reg_w(gspca_dev, 0xe0, 0x01); /* stop transfer */ - /* reg_w(gspca_dev, 0x31, 0x09); */ - return; - } reg_w(gspca_dev, 0xe0, 0x01); set_led(gspca_dev, 0); reg_w(gspca_dev, 0xe0, 0x00); @@ -1755,8 +1425,6 @@ static int sd_init_controls(struct gspca_dev *gspca_dev) if (sd->sensor == SENSOR_OV971x) return 0; - if (sd->sensor == SENSOR_OV361x) - return 0; gspca_dev->vdev.ctrl_handler = hdl; v4l2_ctrl_handler_init(hdl, 7); if (sd->sensor == SENSOR_OV562x) { diff --git a/drivers/media/usb/gspca/pac207.c b/drivers/media/usb/gspca/pac207.c index cd79c18..83519be 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) pac207_write_regs(gspca_dev, 0x0042, pac207_sensor_init[3], 8); /* Compression Balance */ - if (gspca_dev->pixfmt.width == 176) + if (gspca_dev->width == 176) pac207_write_reg(gspca_dev, 0x4a, 0xff); else pac207_write_reg(gspca_dev, 0x4a, 0x30); @@ -317,7 +317,7 @@ static int sd_start(struct gspca_dev *gspca_dev) mode = 0x00; else mode = 0x02; - if (gspca_dev->pixfmt.width == 176) { /* 176x144 */ + if (gspca_dev->width == 176) { /* 176x144 */ mode |= 0x01; PDEBUG(D_STREAM, "pac207_start mode 176x144"); } else { /* 352x288 */ diff --git a/drivers/media/usb/gspca/pac7311.c b/drivers/media/usb/gspca/pac7311.c index 25f86b1..1a5bdc8 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) * 640x480 mode and page 4 reg 2 <= 3 then it must be 9 */ reg_w(gspca_dev, 0xff, 0x01); - if (gspca_dev->pixfmt.width != 640 && val <= 3) + if (gspca_dev->width != 640 && val <= 3) reg_w(gspca_dev, 0x08, 0x09); else reg_w(gspca_dev, 0x08, 0x08); @@ -337,7 +337,7 @@ static void setexposure(struct gspca_dev *gspca_dev, s32 val) * camera to use higher compression or we may run out of * bandwidth. */ - if (gspca_dev->pixfmt.width == 640 && val == 2) + if (gspca_dev->width == 640 && val == 2) reg_w(gspca_dev, 0x80, 0x01); else reg_w(gspca_dev, 0x80, 0x1c); @@ -615,7 +615,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, /* Start the new frame with the jpeg header */ pac_start_frame(gspca_dev, - gspca_dev->pixfmt.height, gspca_dev->pixfmt.width); + gspca_dev->height, gspca_dev->width); } gspca_frame_add(gspca_dev, INTER_PACKET, data, len); } diff --git a/drivers/media/usb/gspca/se401.c b/drivers/media/usb/gspca/se401.c index 5102cea..5f729b8 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) /* set size + mode */ se401_write_req(gspca_dev, SE401_REQ_SET_WIDTH, - gspca_dev->pixfmt.width * mult, 0); + gspca_dev->width * mult, 0); se401_write_req(gspca_dev, SE401_REQ_SET_HEIGHT, - gspca_dev->pixfmt.height * mult, 0); + gspca_dev->height * mult, 0); /* * HDG: disabled this as it does not seem to do anything * 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) static void sd_pkt_scan_janggu(struct gspca_dev *gspca_dev, u8 *data, int len) { struct sd *sd = (struct sd *)gspca_dev; - int imagesize = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height; + int imagesize = gspca_dev->width * gspca_dev->height; int i, plen, bits, pixels, info, count; if (sd->restart_stream) diff --git a/drivers/media/usb/gspca/sn9c20x.c b/drivers/media/usb/gspca/sn9c20x.c index 2a38621..f4453d5 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) return 0; } - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 160: /* 160x120 */ gspca_dev->alt = 2; break; @@ -1985,8 +1985,8 @@ static int sd_start(struct gspca_dev *gspca_dev) { struct sd *sd = (struct sd *) gspca_dev; int mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; - int width = gspca_dev->pixfmt.width; - int height = gspca_dev->pixfmt.height; + int width = gspca_dev->width; + int height = gspca_dev->height; u8 fmt, scale = 0; jpeg_define(sd->jpeg_hdr, height, width, diff --git a/drivers/media/usb/gspca/sonixb.c b/drivers/media/usb/gspca/sonixb.c index 7277dbd..d7ff3b9 100644 --- a/drivers/media/usb/gspca/sonixb.c +++ b/drivers/media/usb/gspca/sonixb.c @@ -513,7 +513,10 @@ static void i2c_w(struct gspca_dev *gspca_dev, const u8 *buf) if (gspca_dev->usb_buf[0] & 0x04) { if (gspca_dev->usb_buf[0] & 0x08) { dev_err(gspca_dev->v4l2_dev.dev, - "i2c error writing %8ph\n", buf); + "i2c error writing %02x %02x %02x %02x" + " %02x %02x %02x %02x\n", + buf[0], buf[1], buf[2], buf[3], + buf[4], buf[5], buf[6], buf[7]); gspca_dev->usb_err = -EIO; } return; @@ -750,7 +753,7 @@ static void setexposure(struct gspca_dev *gspca_dev) /* In 640x480, if the reg11 has less than 4, the image is unstable (the bridge goes into a higher compression mode which we have not reverse engineered yet). */ - if (gspca_dev->pixfmt.width == 640 && reg11 < 4) + if (gspca_dev->width == 640 && reg11 < 4) reg11 = 4; /* 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 c69b45d..3b5ccb1 100644 --- a/drivers/media/usb/gspca/sonixj.c +++ b/drivers/media/usb/gspca/sonixj.c @@ -2204,8 +2204,7 @@ static int sd_start(struct gspca_dev *gspca_dev) { 0x14, 0xe7, 0x1e, 0xdd }; /* create the JPEG header */ - jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, - gspca_dev->pixfmt.width, + jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 0x21); /* JPEG 422 */ /* initialize the bridge */ diff --git a/drivers/media/usb/gspca/spca1528.c b/drivers/media/usb/gspca/spca1528.c index f38fd89..688592b 100644 --- a/drivers/media/usb/gspca/spca1528.c +++ b/drivers/media/usb/gspca/spca1528.c @@ -255,8 +255,7 @@ static int sd_start(struct gspca_dev *gspca_dev) struct sd *sd = (struct sd *) gspca_dev; /* initialize the JPEG header */ - jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, - gspca_dev->pixfmt.width, + jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 0x22); /* JPEG 411 */ /* the JPEG quality shall be 85% */ diff --git a/drivers/media/usb/gspca/spca500.c b/drivers/media/usb/gspca/spca500.c index f011a30..9f8bf51 100644 --- a/drivers/media/usb/gspca/spca500.c +++ b/drivers/media/usb/gspca/spca500.c @@ -608,8 +608,7 @@ static int sd_start(struct gspca_dev *gspca_dev) __u8 xmult, ymult; /* create the JPEG header */ - jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, - gspca_dev->pixfmt.width, + jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 0x22); /* JPEG 411 */ jpeg_set_qual(sd->jpeg_hdr, QUALITY); diff --git a/drivers/media/usb/gspca/sq905c.c b/drivers/media/usb/gspca/sq905c.c index aa21edc..acb19fb 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) dev->cap_mode = gspca_dev->cam.cam_mode; /* "Open the shutter" and set size, to start capture */ - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 640: PDEBUG(D_STREAM, "Start streaming at high resolution"); dev->cap_mode++; diff --git a/drivers/media/usb/gspca/sq930x.c b/drivers/media/usb/gspca/sq930x.c index e274cf19..b10d082 100644 --- a/drivers/media/usb/gspca/sq930x.c +++ b/drivers/media/usb/gspca/sq930x.c @@ -906,8 +906,7 @@ static int sd_isoc_init(struct gspca_dev *gspca_dev) gspca_dev->cam.bulk_nurbs = 1; /* there must be one URB only */ sd->do_ctrl = 0; - gspca_dev->cam.bulk_size = gspca_dev->pixfmt.width * - gspca_dev->pixfmt.height + 8; + gspca_dev->cam.bulk_size = gspca_dev->width * gspca_dev->height + 8; return 0; } diff --git a/drivers/media/usb/gspca/stk014.c b/drivers/media/usb/gspca/stk014.c index b0c70fe..8c09826 100644 --- a/drivers/media/usb/gspca/stk014.c +++ b/drivers/media/usb/gspca/stk014.c @@ -250,8 +250,7 @@ static int sd_start(struct gspca_dev *gspca_dev) int ret, value; /* create the JPEG header */ - jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, - gspca_dev->pixfmt.width, + jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 0x22); /* JPEG 411 */ jpeg_set_qual(sd->jpeg_hdr, QUALITY); @@ -262,7 +261,7 @@ static int sd_start(struct gspca_dev *gspca_dev) set_par(gspca_dev, 0x00000000); set_par(gspca_dev, 0x8002e001); set_par(gspca_dev, 0x14000000); - if (gspca_dev->pixfmt.width > 320) + if (gspca_dev->width > 320) value = 0x8002e001; /* 640x480 */ else value = 0x4001f000; /* 320x240 */ diff --git a/drivers/media/usb/gspca/stk1135.c b/drivers/media/usb/gspca/stk1135.c index 1fc80af..5858688 100644 --- a/drivers/media/usb/gspca/stk1135.c +++ b/drivers/media/usb/gspca/stk1135.c @@ -48,11 +48,42 @@ struct sd { }; static const struct v4l2_pix_format stk1135_modes[] = { - /* default mode (this driver supports variable resolution) */ + {160, 120, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, + .bytesperline = 160, + .sizeimage = 160 * 120, + .colorspace = V4L2_COLORSPACE_SRGB}, + {176, 144, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, + .bytesperline = 176, + .sizeimage = 176 * 144, + .colorspace = V4L2_COLORSPACE_SRGB}, + {320, 240, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, + .bytesperline = 320, + .sizeimage = 320 * 240, + .colorspace = V4L2_COLORSPACE_SRGB}, + {352, 288, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, + .bytesperline = 352, + .sizeimage = 352 * 288, + .colorspace = V4L2_COLORSPACE_SRGB}, {640, 480, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, .bytesperline = 640, .sizeimage = 640 * 480, .colorspace = V4L2_COLORSPACE_SRGB}, + {720, 576, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, + .bytesperline = 720, + .sizeimage = 720 * 576, + .colorspace = V4L2_COLORSPACE_SRGB}, + {800, 600, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, + .bytesperline = 800, + .sizeimage = 800 * 600, + .colorspace = V4L2_COLORSPACE_SRGB}, + {1024, 768, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, + .bytesperline = 1024, + .sizeimage = 1024 * 768, + .colorspace = V4L2_COLORSPACE_SRGB}, + {1280, 1024, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, + .bytesperline = 1280, + .sizeimage = 1280 * 1024, + .colorspace = V4L2_COLORSPACE_SRGB}, }; /* -- read a register -- */ @@ -316,16 +347,16 @@ static void stk1135_configure_mt9m112(struct gspca_dev *gspca_dev) sensor_write(gspca_dev, cfg[i].reg, cfg[i].val); /* set output size */ - width = gspca_dev->pixfmt.width; - height = gspca_dev->pixfmt.height; - if (width <= 640 && height <= 512) { /* context A (half readout speed)*/ + width = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].width; + height = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].height; + if (width <= 640) { /* use context A (half readout speed by default) */ sensor_write(gspca_dev, 0x1a7, width); sensor_write(gspca_dev, 0x1aa, height); /* set read mode context A */ sensor_write(gspca_dev, 0x0c8, 0x0000); /* set resize, read mode, vblank, hblank context A */ sensor_write(gspca_dev, 0x2c8, 0x0000); - } else { /* context B (full readout speed) */ + } else { /* use context B (full readout speed by default) */ sensor_write(gspca_dev, 0x1a1, width); sensor_write(gspca_dev, 0x1a4, height); /* set read mode context B */ @@ -453,8 +484,8 @@ static int sd_start(struct gspca_dev *gspca_dev) reg_w(gspca_dev, STK1135_REG_CISPO + 3, 0x00); /* set capture end position */ - width = gspca_dev->pixfmt.width; - height = gspca_dev->pixfmt.height; + width = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].width; + height = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].height; reg_w(gspca_dev, STK1135_REG_CIEPO + 0, width & 0xff); reg_w(gspca_dev, STK1135_REG_CIEPO + 1, width >> 8); reg_w(gspca_dev, STK1135_REG_CIEPO + 2, height & 0xff); @@ -612,35 +643,6 @@ static int sd_init_controls(struct gspca_dev *gspca_dev) return 0; } -static void stk1135_try_fmt(struct gspca_dev *gspca_dev, struct v4l2_format *fmt) -{ - fmt->fmt.pix.width = clamp(fmt->fmt.pix.width, 32U, 1280U); - fmt->fmt.pix.height = clamp(fmt->fmt.pix.height, 32U, 1024U); - /* round up to even numbers */ - fmt->fmt.pix.width += (fmt->fmt.pix.width & 1); - fmt->fmt.pix.height += (fmt->fmt.pix.height & 1); - - fmt->fmt.pix.bytesperline = fmt->fmt.pix.width; - fmt->fmt.pix.sizeimage = fmt->fmt.pix.width * fmt->fmt.pix.height; -} - -static int stk1135_enum_framesizes(struct gspca_dev *gspca_dev, - struct v4l2_frmsizeenum *fsize) -{ - if (fsize->index != 0 || fsize->pixel_format != V4L2_PIX_FMT_SBGGR8) - return -EINVAL; - - fsize->type = V4L2_FRMSIZE_TYPE_STEPWISE; - fsize->stepwise.min_width = 32; - fsize->stepwise.min_height = 32; - fsize->stepwise.max_width = 1280; - fsize->stepwise.max_height = 1024; - fsize->stepwise.step_width = 2; - fsize->stepwise.step_height = 2; - - return 0; -} - /* sub-driver description */ static const struct sd_desc sd_desc = { .name = MODULE_NAME, @@ -651,8 +653,6 @@ static const struct sd_desc sd_desc = { .stopN = sd_stopN, .pkt_scan = sd_pkt_scan, .dq_callback = stk1135_dq_callback, - .try_fmt = stk1135_try_fmt, - .enum_framesizes = stk1135_enum_framesizes, }; /* -- module initialisation -- */ diff --git a/drivers/media/usb/gspca/stv06xx/stv06xx.c b/drivers/media/usb/gspca/stv06xx/stv06xx.c index 49d209b..55ee7a6 100644 --- a/drivers/media/usb/gspca/stv06xx/stv06xx.c +++ b/drivers/media/usb/gspca/stv06xx/stv06xx.c @@ -452,7 +452,7 @@ frame_data: NULL, 0); if (sd->bridge == BRIDGE_ST6422) - sd->to_skip = gspca_dev->pixfmt.width * 4; + sd->to_skip = gspca_dev->width * 4; if (chunk_len) 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 8d785ed..8206b77 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) /* Number of pixels counted by the sensor when subsampling the pixels. * Slightly larger than the real value to avoid oscillation */ - totalpixels = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height; + totalpixels = gspca_dev->width * gspca_dev->height; totalpixels = totalpixels/(8*8) + totalpixels/(64*64); brightpixels = (totalpixels * val) >> 8; diff --git a/drivers/media/usb/gspca/sunplus.c b/drivers/media/usb/gspca/sunplus.c index a517d18..af8767a 100644 --- a/drivers/media/usb/gspca/sunplus.c +++ b/drivers/media/usb/gspca/sunplus.c @@ -715,8 +715,7 @@ static int sd_start(struct gspca_dev *gspca_dev) int enable; /* create the JPEG header */ - jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, - gspca_dev->pixfmt.width, + jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 0x22); /* JPEG 411 */ jpeg_set_qual(sd->jpeg_hdr, QUALITY); diff --git a/drivers/media/usb/gspca/topro.c b/drivers/media/usb/gspca/topro.c index 640c2fe..4cb511c 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) if (sd->bridge == BRIDGE_TP6800) { val |= 0x08; /* grid compensation enable */ - if (gspca_dev->pixfmt.width == 640) + if (gspca_dev->width == 640) reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ else val |= 0x04; /* scaling down enable */ @@ -3880,7 +3880,7 @@ static void set_resolution(struct gspca_dev *gspca_dev) struct sd *sd = (struct sd *) gspca_dev; reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00); - if (gspca_dev->pixfmt.width == 320) { + if (gspca_dev->width == 320) { reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x06); msleep(100); i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01); @@ -3924,7 +3924,7 @@ static int get_fr_idx(struct gspca_dev *gspca_dev) /* 640x480 * 30 fps does not work */ if (i == 6 /* if 30 fps */ - && gspca_dev->pixfmt.width == 640) + && gspca_dev->width == 640) i = 0x05; /* 15 fps */ } else { for (i = 0; i < ARRAY_SIZE(rates_6810) - 1; i++) { @@ -3935,7 +3935,7 @@ static int get_fr_idx(struct gspca_dev *gspca_dev) /* 640x480 * 30 fps does not work */ if (i == 7 /* if 30 fps */ - && gspca_dev->pixfmt.width == 640) + && gspca_dev->width == 640) i = 6; /* 15 fps */ i |= 0x80; /* clock * 1 */ } @@ -4554,8 +4554,7 @@ static int sd_start(struct gspca_dev *gspca_dev) { struct sd *sd = (struct sd *) gspca_dev; - jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, - gspca_dev->pixfmt.width); + jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width); set_dqt(gspca_dev, sd->quality); if (sd->bridge == BRIDGE_TP6800) { if (sd->sensor == SENSOR_CX0342) @@ -4738,7 +4737,7 @@ static void sd_dq_callback(struct gspca_dev *gspca_dev) (gspca_dev->usb_buf[26] << 8) + gspca_dev->usb_buf[25] + (gspca_dev->usb_buf[29] << 8) + gspca_dev->usb_buf[28]) / 8; - if (gspca_dev->pixfmt.width == 640) + if (gspca_dev->width == 640) luma /= 4; reg_w(gspca_dev, 0x7d, 0x00); diff --git a/drivers/media/usb/gspca/tv8532.c b/drivers/media/usb/gspca/tv8532.c index d497ba3..8591324 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, packet_type0 = packet_type1 = INTER_PACKET; if (gspca_dev->empty_packet) { gspca_dev->empty_packet = 0; - sd->packet = gspca_dev->pixfmt.height / 2; + sd->packet = gspca_dev->height / 2; packet_type0 = FIRST_PACKET; } else if (sd->packet == 0) return; /* 2 more lines in 352x288 ! */ @@ -284,10 +284,9 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, * - 4 bytes */ gspca_frame_add(gspca_dev, packet_type0, - data + 2, gspca_dev->pixfmt.width); + data + 2, gspca_dev->width); gspca_frame_add(gspca_dev, packet_type1, - data + gspca_dev->pixfmt.width + 5, - gspca_dev->pixfmt.width); + data + gspca_dev->width + 5, gspca_dev->width); } static 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 103f6c4..a2275cf 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) memset(req_data, 0, 16); req_data[0] = gain; - if (gspca_dev->pixfmt.width == 256) + if (gspca_dev->width == 256) req_data[1] |= 0x01; /* low nibble x-scale */ - if (gspca_dev->pixfmt.height <= 122) { + if (gspca_dev->height <= 122) { req_data[1] |= 0x10; /* high nibble y-scale */ - unscaled_height = gspca_dev->pixfmt.height * 2; + unscaled_height = gspca_dev->height * 2; } else - unscaled_height = gspca_dev->pixfmt.height; + unscaled_height = gspca_dev->height; req_data[2] = 0x90; /* unknown, does not seem to do anything */ if (unscaled_height <= 200) req_data[3] = 0x06; /* vend? */ diff --git a/drivers/media/usb/gspca/w996Xcf.c b/drivers/media/usb/gspca/w996Xcf.c index fb9fe2e..2165da0 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) #define SC(x) ((x) << 10) /* Scaling factors */ - fw = SC(sd->gspca_dev.pixfmt.width) / max_width; - fh = SC(sd->gspca_dev.pixfmt.height) / max_height; + fw = SC(sd->gspca_dev.width) / max_width; + fh = SC(sd->gspca_dev.height) / max_height; - cw = (fw >= fh) ? max_width : SC(sd->gspca_dev.pixfmt.width) / fh; - ch = (fw >= fh) ? SC(sd->gspca_dev.pixfmt.height) / fw : max_height; + cw = (fw >= fh) ? max_width : SC(sd->gspca_dev.width) / fh; + ch = (fw >= fh) ? SC(sd->gspca_dev.height) / fw : max_height; sd->sensor_width = max_width; sd->sensor_height = max_height; @@ -454,34 +454,34 @@ static void w9968cf_mode_init_regs(struct sd *sd) w9968cf_set_crop_window(sd); - reg_w(sd, 0x14, sd->gspca_dev.pixfmt.width); - reg_w(sd, 0x15, sd->gspca_dev.pixfmt.height); + reg_w(sd, 0x14, sd->gspca_dev.width); + reg_w(sd, 0x15, sd->gspca_dev.height); /* JPEG width & height */ - reg_w(sd, 0x30, sd->gspca_dev.pixfmt.width); - reg_w(sd, 0x31, sd->gspca_dev.pixfmt.height); + reg_w(sd, 0x30, sd->gspca_dev.width); + reg_w(sd, 0x31, sd->gspca_dev.height); /* Y & UV frame buffer strides (in WORD) */ if (w9968cf_vga_mode[sd->gspca_dev.curr_mode].pixelformat == V4L2_PIX_FMT_JPEG) { - reg_w(sd, 0x2c, sd->gspca_dev.pixfmt.width / 2); - reg_w(sd, 0x2d, sd->gspca_dev.pixfmt.width / 4); + reg_w(sd, 0x2c, sd->gspca_dev.width / 2); + reg_w(sd, 0x2d, sd->gspca_dev.width / 4); } else - reg_w(sd, 0x2c, sd->gspca_dev.pixfmt.width); + reg_w(sd, 0x2c, sd->gspca_dev.width); reg_w(sd, 0x00, 0xbf17); /* reset everything */ reg_w(sd, 0x00, 0xbf10); /* normal operation */ /* Transfer size in WORDS (for UYVY format only) */ - val = sd->gspca_dev.pixfmt.width * sd->gspca_dev.pixfmt.height; + val = sd->gspca_dev.width * sd->gspca_dev.height; reg_w(sd, 0x3d, val & 0xffff); /* low bits */ reg_w(sd, 0x3e, val >> 16); /* high bits */ if (w9968cf_vga_mode[sd->gspca_dev.curr_mode].pixelformat == V4L2_PIX_FMT_JPEG) { /* We may get called multiple times (usb isoc bw negotiat.) */ - jpeg_define(sd->jpeg_hdr, sd->gspca_dev.pixfmt.height, - sd->gspca_dev.pixfmt.width, 0x22); /* JPEG 420 */ + jpeg_define(sd->jpeg_hdr, sd->gspca_dev.height, + sd->gspca_dev.width, 0x22); /* JPEG 420 */ jpeg_set_qual(sd->jpeg_hdr, v4l2_ctrl_g_ctrl(sd->jpegqual)); w9968cf_upload_quantizationtables(sd); 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 a41aa78..7eaf64e 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) while (clock_div > 3 && 1000 * packet_size > - gspca_dev->pixfmt.width * gspca_dev->pixfmt.height * + gspca_dev->width * gspca_dev->height * fps[clock_div - 1] * 3 / 2) clock_div--; PDEBUG(D_PROBE, "PacketSize: %d, res: %dx%d -> using clockdiv: %d (%d fps)", - packet_size, gspca_dev->pixfmt.width, gspca_dev->pixfmt.height, - clock_div, fps[clock_div]); + packet_size, gspca_dev->width, gspca_dev->height, clock_div, + fps[clock_div]); return clock_div; } @@ -1502,7 +1502,7 @@ static int cit_start_model0(struct gspca_dev *gspca_dev) cit_write_reg(gspca_dev, 0x0002, 0x0426); cit_write_reg(gspca_dev, 0x0014, 0x0427); - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 160: /* 160x120 */ cit_write_reg(gspca_dev, 0x0004, 0x010b); cit_write_reg(gspca_dev, 0x0001, 0x010a); @@ -1643,7 +1643,7 @@ static int cit_start_model1(struct gspca_dev *gspca_dev) cit_write_reg(gspca_dev, 0x00, 0x0101); cit_write_reg(gspca_dev, 0x00, 0x010a); - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 128: /* 128x96 */ cit_write_reg(gspca_dev, 0x80, 0x0103); cit_write_reg(gspca_dev, 0x60, 0x0105); @@ -1700,7 +1700,7 @@ static int cit_start_model1(struct gspca_dev *gspca_dev) } /* Assorted init */ - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 128: /* 128x96 */ cit_Packet_Format1(gspca_dev, 0x2b, 0x1e); cit_write_reg(gspca_dev, 0xc9, 0x0119); /* Same everywhere */ @@ -1753,7 +1753,7 @@ static int cit_start_model2(struct gspca_dev *gspca_dev) cit_write_reg(gspca_dev, 0x0000, 0x0108); cit_write_reg(gspca_dev, 0x0001, 0x0133); cit_write_reg(gspca_dev, 0x0001, 0x0102); - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 176: /* 176x144 */ cit_write_reg(gspca_dev, 0x002c, 0x0103); /* All except 320x240 */ cit_write_reg(gspca_dev, 0x0000, 0x0104); /* Same */ @@ -1792,7 +1792,7 @@ static int cit_start_model2(struct gspca_dev *gspca_dev) cit_write_reg(gspca_dev, 0x0000, 0x0100); /* LED on */ - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 176: /* 176x144 */ cit_write_reg(gspca_dev, 0x0050, 0x0111); cit_write_reg(gspca_dev, 0x00d0, 0x0111); @@ -1840,7 +1840,7 @@ static int cit_start_model2(struct gspca_dev *gspca_dev) * Magic control of CMOS sensor. Only lower values like * 0-3 work, and picture shifts left or right. Don't change. */ - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 176: /* 176x144 */ cit_model2_Packet1(gspca_dev, 0x0014, 0x0002); cit_model2_Packet1(gspca_dev, 0x0016, 0x0002); /* Horizontal shift */ @@ -1899,7 +1899,7 @@ static int cit_start_model2(struct gspca_dev *gspca_dev) * does not allow arbitrary values and apparently is a bit mask, to * be activated only at appropriate time. Don't change it randomly! */ - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 176: /* 176x144 */ cit_model2_Packet1(gspca_dev, 0x0026, 0x00c2); break; @@ -2023,7 +2023,7 @@ static int cit_start_model3(struct gspca_dev *gspca_dev) cit_model3_Packet1(gspca_dev, 0x009e, 0x0096); cit_model3_Packet1(gspca_dev, 0x009f, 0x000a); - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 160: cit_write_reg(gspca_dev, 0x0000, 0x0101); /* Same on 160x120, 320x240 */ 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) like with the IBM netcam pro). */ cit_write_reg(gspca_dev, clock_div, 0x0111); /* Clock Divider */ - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 160: cit_model3_Packet1(gspca_dev, 0x001f, 0x0000); /* Same */ cit_model3_Packet1(gspca_dev, 0x0039, 0x001f); /* Same */ @@ -2211,7 +2211,7 @@ static int cit_start_model4(struct gspca_dev *gspca_dev) cit_write_reg(gspca_dev, 0xfffa, 0x0124); cit_model4_Packet1(gspca_dev, 0x0034, 0x0000); - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 128: /* 128x96 */ cit_write_reg(gspca_dev, 0x0070, 0x0119); cit_write_reg(gspca_dev, 0x00d0, 0x0111); @@ -2531,7 +2531,7 @@ static int cit_start_ibm_netcam_pro(struct gspca_dev *gspca_dev) cit_write_reg(gspca_dev, 0x00fc, 0x012b); /* Same */ cit_write_reg(gspca_dev, 0x0022, 0x012a); /* Same */ - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 160: /* 160x120 */ cit_write_reg(gspca_dev, 0x0024, 0x010b); cit_write_reg(gspca_dev, 0x0089, 0x0119); @@ -2635,7 +2635,7 @@ static int sd_isoc_init(struct gspca_dev *gspca_dev) struct usb_host_interface *alt; int max_packet_size; - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 160: max_packet_size = 450; break; @@ -2659,7 +2659,7 @@ static int sd_isoc_nego(struct gspca_dev *gspca_dev) int ret, packet_size, min_packet_size; struct usb_host_interface *alt; - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 160: min_packet_size = 200; break; @@ -2780,7 +2780,7 @@ static u8 *cit_find_sof(struct gspca_dev *gspca_dev, u8 *data, int len) case CIT_MODEL1: case CIT_MODEL3: case CIT_IBM_NETCAM_PRO: - switch (gspca_dev->pixfmt.width) { + switch (gspca_dev->width) { case 160: /* 160x120 */ byte3 = 0x02; byte4 = 0x0a; @@ -2864,16 +2864,20 @@ static u8 *cit_find_sof(struct gspca_dev *gspca_dev, u8 *data, int len) if (data[i] == 0xff) { if (i >= 4) PDEBUG(D_FRAM, - "header found at offset: %d: %02x %02x 00 %3ph\n", + "header found at offset: %d: %02x %02x 00 %02x %02x %02x\n", i - 1, data[i - 4], data[i - 3], - &data[i]); + data[i], + data[i + 1], + data[i + 2]); else PDEBUG(D_FRAM, - "header found at offset: %d: 00 %3ph\n", + "header found at offset: %d: 00 %02x %02x %02x\n", i - 1, - &data[i]); + data[i], + data[i + 1], + data[i + 2]); return data + i + (sd->sof_len - 1); } break; diff --git a/drivers/media/usb/gspca/zc3xx.c b/drivers/media/usb/gspca/zc3xx.c index 7b95d8e..cbfc2f9 100644 --- a/drivers/media/usb/gspca/zc3xx.c +++ b/drivers/media/usb/gspca/zc3xx.c @@ -6700,8 +6700,7 @@ static int sd_start(struct gspca_dev *gspca_dev) }; /* create the JPEG header */ - jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, - gspca_dev->pixfmt.width, + jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, 0x21); /* JPEG 422 */ mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; |