mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-26 14:14:01 +08:00
V4L/DVB (12617): gspca_pac207: enable higher framerates / lower exposure settings
Now that we've figured out the higher compression settings (supported in libv4l-0.6.0 and later, so after this patch the driver should be used with libv4l-0.6.0 or higher only!), we can enable higher framerates. Which means lower exposure times, which is important for the use of the pac207 in full daylight. This patch also tweakes the brightness default and the per color gain balances to use the values which are adviced by Pixart in the pac207 application note. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
c529e556f6
commit
0e4a90993d
@ -35,25 +35,17 @@ MODULE_LICENSE("GPL");
|
|||||||
|
|
||||||
#define PAC207_BRIGHTNESS_MIN 0
|
#define PAC207_BRIGHTNESS_MIN 0
|
||||||
#define PAC207_BRIGHTNESS_MAX 255
|
#define PAC207_BRIGHTNESS_MAX 255
|
||||||
#define PAC207_BRIGHTNESS_DEFAULT 4 /* power on default: 4 */
|
#define PAC207_BRIGHTNESS_DEFAULT 46
|
||||||
|
|
||||||
/* An exposure value of 4 also works (3 does not) but then we need to lower
|
#define PAC207_EXPOSURE_MIN 3
|
||||||
the compression balance setting when in 352x288 mode, otherwise the usb
|
|
||||||
bandwidth is not enough and packets get dropped resulting in corrupt
|
|
||||||
frames. The problem with this is that when the compression balance gets
|
|
||||||
lowered below 0x80, the pac207 starts using a different compression
|
|
||||||
algorithm for some lines, these lines get prefixed with a 0x2dd2 prefix
|
|
||||||
and currently we do not know how to decompress these lines, so for now
|
|
||||||
we use a minimum exposure value of 5 */
|
|
||||||
#define PAC207_EXPOSURE_MIN 5
|
|
||||||
#define PAC207_EXPOSURE_MAX 26
|
#define PAC207_EXPOSURE_MAX 26
|
||||||
#define PAC207_EXPOSURE_DEFAULT 5 /* power on default: 3 ?? */
|
#define PAC207_EXPOSURE_DEFAULT 5 /* power on default: 3 */
|
||||||
#define PAC207_EXPOSURE_KNEE 11 /* 4 = 30 fps, 11 = 8, 15 = 6 */
|
#define PAC207_EXPOSURE_KNEE 8 /* 4 = 30 fps, 11 = 8, 15 = 6 */
|
||||||
|
|
||||||
#define PAC207_GAIN_MIN 0
|
#define PAC207_GAIN_MIN 0
|
||||||
#define PAC207_GAIN_MAX 31
|
#define PAC207_GAIN_MAX 31
|
||||||
#define PAC207_GAIN_DEFAULT 9 /* power on default: 9 */
|
#define PAC207_GAIN_DEFAULT 9 /* power on default: 9 */
|
||||||
#define PAC207_GAIN_KNEE 20
|
#define PAC207_GAIN_KNEE 31
|
||||||
|
|
||||||
#define PAC207_AUTOGAIN_DEADZONE 30
|
#define PAC207_AUTOGAIN_DEADZONE 30
|
||||||
|
|
||||||
@ -166,8 +158,8 @@ static const struct v4l2_pix_format sif_mode[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const __u8 pac207_sensor_init[][8] = {
|
static const __u8 pac207_sensor_init[][8] = {
|
||||||
{0x10, 0x12, 0x0d, 0x12, 0x0c, 0x01, 0x29, 0xf0},
|
{0x10, 0x12, 0x0d, 0x12, 0x0c, 0x01, 0x29, 0x84},
|
||||||
{0x00, 0x64, 0x64, 0x64, 0x04, 0x10, 0xf0, 0x30},
|
{0x49, 0x64, 0x64, 0x64, 0x04, 0x10, 0xf0, 0x30},
|
||||||
{0x00, 0x00, 0x00, 0x70, 0xa0, 0xf8, 0x00, 0x00},
|
{0x00, 0x00, 0x00, 0x70, 0xa0, 0xf8, 0x00, 0x00},
|
||||||
{0x32, 0x00, 0x96, 0x00, 0xA2, 0x02, 0xaf, 0x00},
|
{0x32, 0x00, 0x96, 0x00, 0xA2, 0x02, 0xaf, 0x00},
|
||||||
};
|
};
|
||||||
@ -290,7 +282,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
|
|||||||
if (gspca_dev->width == 176)
|
if (gspca_dev->width == 176)
|
||||||
pac207_write_reg(gspca_dev, 0x4a, 0xff);
|
pac207_write_reg(gspca_dev, 0x4a, 0xff);
|
||||||
else
|
else
|
||||||
pac207_write_reg(gspca_dev, 0x4a, 0x88);
|
pac207_write_reg(gspca_dev, 0x4a, 0x30);
|
||||||
pac207_write_reg(gspca_dev, 0x4b, 0x00); /* Sram test value */
|
pac207_write_reg(gspca_dev, 0x4b, 0x00); /* Sram test value */
|
||||||
pac207_write_reg(gspca_dev, 0x08, sd->brightness);
|
pac207_write_reg(gspca_dev, 0x08, sd->brightness);
|
||||||
|
|
||||||
@ -339,7 +331,7 @@ static void pac207_do_auto_gain(struct gspca_dev *gspca_dev)
|
|||||||
if (sd->autogain_ignore_frames > 0)
|
if (sd->autogain_ignore_frames > 0)
|
||||||
sd->autogain_ignore_frames--;
|
sd->autogain_ignore_frames--;
|
||||||
else if (gspca_auto_gain_n_exposure(gspca_dev, avg_lum,
|
else if (gspca_auto_gain_n_exposure(gspca_dev, avg_lum,
|
||||||
100 + sd->brightness / 2, PAC207_AUTOGAIN_DEADZONE,
|
100, PAC207_AUTOGAIN_DEADZONE,
|
||||||
PAC207_GAIN_KNEE, PAC207_EXPOSURE_KNEE))
|
PAC207_GAIN_KNEE, PAC207_EXPOSURE_KNEE))
|
||||||
sd->autogain_ignore_frames = PAC_AUTOGAIN_IGNORE_FRAMES;
|
sd->autogain_ignore_frames = PAC_AUTOGAIN_IGNORE_FRAMES;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user