diff options
author | Jean-Francois Moine <moinejf@free.fr> | 2008-07-14 12:11:42 +0200 |
---|---|---|
committer | Jean-Francois Moine <moinejf@free.fr> | 2008-07-14 12:11:42 +0200 |
commit | d9b974a4eeee7a96240f6f917e52c46f61f013f0 (patch) | |
tree | dd7024318c5c0890fac7e5fe2fc96024acb18f2f /linux/drivers/media/video/gspca/sonixb.c | |
parent | 13e49623c52dc533382cf809c9461caf3a295eda (diff) | |
download | mediapointer-dvb-s2-d9b974a4eeee7a96240f6f917e52c46f61f013f0.tar.gz mediapointer-dvb-s2-d9b974a4eeee7a96240f6f917e52c46f61f013f0.tar.bz2 |
gspca: Better gain for bridge sn9c10x - sensor ov6650.
From: Hans de Goede <j.w.r.degoede@hhs.nl>
sonixb: Better gain for ov6650.
Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Diffstat (limited to 'linux/drivers/media/video/gspca/sonixb.c')
-rw-r--r-- | linux/drivers/media/video/gspca/sonixb.c | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/linux/drivers/media/video/gspca/sonixb.c b/linux/drivers/media/video/gspca/sonixb.c index 86c42a466..a9d4f91ba 100644 --- a/linux/drivers/media/video/gspca/sonixb.c +++ b/linux/drivers/media/video/gspca/sonixb.c @@ -39,8 +39,8 @@ struct sd { sensor, so we use a per cam copy */ atomic_t avg_lum; - unsigned short gain; - unsigned short exposure; + unsigned char gain; + unsigned char exposure; unsigned char brightness; unsigned char autogain; unsigned char autogain_ignore_frames; @@ -73,7 +73,7 @@ struct sd { ignore atleast the 2 next frames for the new settings to come into effect before doing any other adjustments */ #define AUTOGAIN_IGNORE_FRAMES 3 -#define AUTOGAIN_DEADZONE 500 +#define AUTOGAIN_DEADZONE 1000 #define DESIRED_AVG_LUM 7000 /* V4L2 controls supported by the driver */ @@ -107,10 +107,10 @@ static struct ctrl sd_ctrls[] = { .type = V4L2_CTRL_TYPE_INTEGER, .name = "Gain", .minimum = 0, - .maximum = 511, + .maximum = 255, .step = 1, -#define GAIN_DEF 255 -#define GAIN_KNEE 400 +#define GAIN_DEF 127 +#define GAIN_KNEE 200 .default_value = GAIN_DEF, }, .set = sd_setgain, @@ -122,9 +122,9 @@ static struct ctrl sd_ctrls[] = { .type = V4L2_CTRL_TYPE_INTEGER, .name = "Exposure", #define EXPOSURE_DEF 0 -#define EXPOSURE_KNEE 353 /* 10 fps */ +#define EXPOSURE_KNEE 176 /* 10 fps */ .minimum = 0, - .maximum = 511, + .maximum = 255, .step = 1, .default_value = EXPOSURE_DEF, .flags = 0, @@ -589,11 +589,6 @@ err: static void setsensorgain(struct gspca_dev *gspca_dev) { struct sd *sd = (struct sd *) gspca_dev; - unsigned short gain; - - gain = (sd->gain + 1) >> 1; - if (gain > 255) - gain = 255; switch (sd->sensor) { @@ -601,14 +596,15 @@ static void setsensorgain(struct gspca_dev *gspca_dev) __u8 i2c[] = {0x30, 0x11, 0x02, 0x20, 0x70, 0x00, 0x00, 0x10}; - i2c[4] = 255 - gain; + i2c[4] = 255 - sd->gain; if (i2c_w(gspca_dev, i2c) < 0) goto err; break; } case SENSOR_OV6650: { __u8 i2c[] = {0xa0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}; - i2c[3] = gain; + + i2c[3] = sd->gain >> 3; if (i2c_w(gspca_dev, i2c) < 0) goto err; break; @@ -625,7 +621,7 @@ static void setgain(struct gspca_dev *gspca_dev) __u8 gain; __u8 rgb_value; - gain = sd->gain >> 5; + gain = sd->gain >> 4; /* red and blue gain */ rgb_value = gain << 4 | gain; @@ -642,7 +638,7 @@ static void setexposure(struct gspca_dev *gspca_dev) { struct sd *sd = (struct sd *) gspca_dev; /* translate 0 - 255 to a number of fps in a 30 - 1 scale */ - int fps = 30 - sd->exposure * 29 / 511; + int fps = 30 - sd->exposure * 29 / 255; switch (sd->sensor) { case SENSOR_TAS5110: { |