media: atomisp: ov2680: Stop using half pixelclock for binned modes
authorHans de Goede <hdegoede@redhat.com>
Sun, 4 Jun 2023 16:14:03 +0000 (17:14 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 9 Jun 2023 14:43:06 +0000 (15:43 +0100)
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>
drivers/staging/media/atomisp/i2c/atomisp-ov2680.c
drivers/staging/media/atomisp/i2c/ov2680.h

index 18b604a8b93221f98623968e53ca305663527b7c..10b27a45b88578134e0ade97535a5b54a4b555f3 100644 (file)
@@ -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;
index fd9c7485f8c19e3eb7d0464c481ec1ecff179421..b6c0ef591c6939424c1f760f5b62d55d317dfd64 100644 (file)
@@ -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},