- {
- struct video_picture *vpic = arg;
- if (vpic->depth != 16 || (vpic->palette != VIDEO_PALETTE_YUV422 && vpic->palette != VIDEO_PALETTE_YUYV))
- return -EINVAL;
-
- cam->brightness = vpic->brightness >> 8;
- cam->hue = (vpic->hue >> 8) - 128;
- cam->color = vpic->colour >> 9;
- cam->contrast = vpic->contrast >> 9;
+ {
+ struct video_picture *vpic = arg;
+ if (vpic->depth != 16 || (vpic->palette != VIDEO_PALETTE_YUV422 && vpic->palette != VIDEO_PALETTE_YUYV))
+ return -EINVAL;
+
+ cam->brightness = vpic->brightness >> 8;
+ cam->hue = (vpic->hue >> 8) - 128;
+ cam->color = vpic->colour >> 9;
+ cam->contrast = vpic->contrast >> 9;
+
+ w9966_pdev_claim(cam);
+
+ if (
+ w9966_write_reg_i2c(cam, 0x0a, cam->brightness) == -1 ||
+ w9966_write_reg_i2c(cam, 0x0b, cam->contrast) == -1 ||
+ w9966_write_reg_i2c(cam, 0x0c, cam->color) == -1 ||
+ w9966_write_reg_i2c(cam, 0x0d, cam->hue) == -1
+ ) {
+ w9966_pdev_release(cam);
+ return -EIO;
+ }