media: imx258: Rectify mismatch of VTS value
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Fri, 23 Jul 2021 11:22:32 +0000 (13:22 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Wed, 4 Aug 2021 12:43:51 +0000 (14:43 +0200)
The frame_length_lines (0x0340) registers are hard-coded as follows:

- 4208x3118
  frame_length_lines = 0x0c50

- 2104x1560
  frame_length_lines = 0x0638

- 1048x780
  frame_length_lines = 0x034c

The driver exposes the V4L2_CID_VBLANK control in read-only mode and
sets its value to vts_def - height, where vts_def is a mode-dependent
value coming from the supported_modes array. It is set using one of
the following macros defined in the driver:

  #define IMX258_VTS_30FPS                0x0c98
  #define IMX258_VTS_30FPS_2K             0x0638
  #define IMX258_VTS_30FPS_VGA            0x034c

There's a clear mismatch in the value for the full resolution mode i.e.
IMX258_VTS_30FPS. Fix it by rectifying the macro with the value set for
the frame_length_lines register as stated above.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Bingbu Cao <bingbu.cao@intel.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/i2c/imx258.c

index 7ab9e5f..4e69509 100644 (file)
@@ -23,7 +23,7 @@
 #define IMX258_CHIP_ID                 0x0258
 
 /* V_TIMING internal */
-#define IMX258_VTS_30FPS               0x0c98
+#define IMX258_VTS_30FPS               0x0c50
 #define IMX258_VTS_30FPS_2K            0x0638
 #define IMX258_VTS_30FPS_VGA           0x034c
 #define IMX258_VTS_MAX                 0xffff