summaryrefslogtreecommitdiff
path: root/drivers/staging
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2023-06-04 17:14:03 +0100
committerMauro Carvalho Chehab <mchehab@kernel.org>2023-06-09 15:43:06 +0100
commit7d45a432251a30ed0252655177e708229b163291 (patch)
treea46f4c47539fa24c67988fdf343552abd0a2bfd9 /drivers/staging
parentef0feca22e866a8544847232fe32d5fdc11f0fbd (diff)
media: atomisp: ov2680: Stop using half pixelclock for binned modes
Stop using half pixelclock for binned modes this fixes: 1. The exposure being twice as high for binned mods (due to the half clk) 2. The framerate being 15 fps instead of 30 fps The original code with fixed per mode register lists did use half pixel clk, but this should be combined with using half for the VTS value too. Using half VTS fixes the framerate issue, but this has the undesired side-effect of change the exposure ctrl range (half the range, double the amount of exposure per step). Link: https://lore.kernel.org/r/20230604161406.69369-3-hdegoede@redhat.com Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/media/atomisp/i2c/atomisp-ov2680.c8
-rw-r--r--drivers/staging/media/atomisp/i2c/ov2680.h1
2 files changed, 2 insertions, 7 deletions
diff --git a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c
index 18b604a8b932..10b27a45b885 100644
--- a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c
+++ b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c
@@ -244,27 +244,21 @@ static void ov2680_calc_mode(struct ov2680_dev *sensor)
static int ov2680_set_mode(struct ov2680_dev *sensor)
{
struct i2c_client *client = sensor->client;
- u8 pll_div, unknown, inc, fmt1, fmt2;
+ u8 unknown, inc, fmt1, fmt2;
int ret;
if (sensor->mode.binning) {
- pll_div = 1;
unknown = 0x23;
inc = 0x31;
fmt1 = 0xc2;
fmt2 = 0x01;
} else {
- pll_div = 0;
unknown = 0x21;
inc = 0x11;
fmt1 = 0xc0;
fmt2 = 0x00;
}
- ret = ov_write_reg8(client, 0x3086, pll_div);
- if (ret)
- return ret;
-
ret = ov_write_reg8(client, 0x370a, unknown);
if (ret)
return ret;
diff --git a/drivers/staging/media/atomisp/i2c/ov2680.h b/drivers/staging/media/atomisp/i2c/ov2680.h
index fd9c7485f8c1..b6c0ef591c69 100644
--- a/drivers/staging/media/atomisp/i2c/ov2680.h
+++ b/drivers/staging/media/atomisp/i2c/ov2680.h
@@ -181,6 +181,7 @@ static struct ov2680_reg const ov2680_global_setting[] = {
{0x3082, 0x45},
{0x3084, 0x09},
{0x3085, 0x04},
+ {0x3086, 0x00},
{0x3503, 0x03},
{0x350b, 0x36},
{0x3600, 0xb4},