From 7ee721020c26b69119f316181f9b90ae4553e52b Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Wed, 16 May 2012 07:14:54 -0300 Subject: [PATCH] --- yaml --- r: 320561 b: refs/heads/master c: 8b3a19b1b3ab95fbc40acb653ca7559f32318301 h: refs/heads/master i: 320559: 733171dd3e67add3bed8d72848354f1bb1818d66 v: v3 --- [refs] | 2 +- trunk/drivers/media/video/gspca/sonixb.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 61881f2fba42..e54efecaa244 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9153ac3ba4bccfdccb43e765cf1cf9bd9e65e657 +refs/heads/master: 8b3a19b1b3ab95fbc40acb653ca7559f32318301 diff --git a/trunk/drivers/media/video/gspca/sonixb.c b/trunk/drivers/media/video/gspca/sonixb.c index 1bfe5f8947b7..dfc70771c1f1 100644 --- a/trunk/drivers/media/video/gspca/sonixb.c +++ b/trunk/drivers/media/video/gspca/sonixb.c @@ -630,6 +630,13 @@ static void setgain(struct gspca_dev *gspca_dev) case SENSOR_OV7630: { __u8 i2c[] = {0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}; + /* + * The ov7630's gain is weird, at 32 the gain drops to the + * same level as at 16, so skip 32-47 (of the 0-63 scale). + */ + if (sd->sensor == SENSOR_OV7630 && gain >= 32) + gain += 16; + i2c[1] = sensor_data[sd->sensor].sensor_addr; i2c[3] = gain; i2c_w(gspca_dev, i2c); @@ -1017,8 +1024,11 @@ static int sd_init_controls(struct gspca_dev *gspca_dev) gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, V4L2_CID_GAIN, 0, 31, 1, 15); break; - case SENSOR_HV7131D: case SENSOR_OV7630: + gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, + V4L2_CID_GAIN, 0, 47, 1, 31); + break; + case SENSOR_HV7131D: gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, V4L2_CID_GAIN, 0, 63, 1, 31); break;