openwrt/target/linux/bcm27xx/patches-6.6/950-0917-media-ov64a40-Report-the-full-crop-rectangle.patch

99 lines
2.6 KiB
Diff
Raw Normal View History

From c3ef8e5cc3dc27a6f3d27794fa2fd0eeef0d162e Mon Sep 17 00:00:00 2001
From: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Date: Thu, 29 Feb 2024 09:19:57 +0100
Subject: [PATCH 0917/1085] media: ov64a40: Report the full crop rectangle
The analogue crop rectangle defined in the sensor supported modes
reports the index of the last pixel in the horizontal/vertical
directions, instead of reporting the actual rectangle's width and
height.
Fix this by reporting the correct width and height and subtracting 1
pixel when applying the rectangle sizes to the sensor's registers.
Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
---
drivers/media/i2c/ov64a40.c | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
--- a/drivers/media/i2c/ov64a40.c
+++ b/drivers/media/i2c/ov64a40.c
@@ -2604,8 +2604,8 @@ static struct ov64a40_mode {
.analogue_crop = {
.left = 0,
.top = 0,
- .width = 9279,
- .height = 6975,
+ .width = 9280,
+ .height = 6976,
},
.digital_crop = {
.left = 17,
@@ -2645,8 +2645,8 @@ static struct ov64a40_mode {
.analogue_crop = {
.left = 624,
.top = 472,
- .width = 8047,
- .height = 6031,
+ .width = 8048,
+ .height = 6032,
},
.digital_crop = {
.left = 17,
@@ -2686,8 +2686,8 @@ static struct ov64a40_mode {
.analogue_crop = {
.left = 0,
.top = 0,
- .width = 9279,
- .height = 6975,
+ .width = 9280,
+ .height = 6976,
},
.digital_crop = {
.left = 9,
@@ -2727,8 +2727,8 @@ static struct ov64a40_mode {
.analogue_crop = {
.left = 784,
.top = 1312,
- .width = 7711,
- .height = 4351,
+ .width = 7712,
+ .height = 4352,
},
.digital_crop = {
.left = 9,
@@ -2768,8 +2768,8 @@ static struct ov64a40_mode {
.analogue_crop = {
.left = 0,
.top = 0,
- .width = 9279,
- .height = 6975,
+ .width = 9280,
+ .height = 6976,
},
.digital_crop = {
.left = 5,
@@ -2809,8 +2809,8 @@ static struct ov64a40_mode {
.analogue_crop = {
.left = 784,
.top = 1312,
- .width = 7711,
- .height = 4351,
+ .width = 7712,
+ .height = 4352,
},
.digital_crop = {
.left = 7,
@@ -2886,9 +2886,9 @@ static int ov64a40_program_geometry(stru
cci_write(ov64a40->cci, OV64A40_REG_TIMING_CTRL2,
anacrop->top, &ret);
cci_write(ov64a40->cci, OV64A40_REG_TIMING_CTRL4,
- anacrop->width + anacrop->left, &ret);
+ anacrop->width + anacrop->left - 1, &ret);
cci_write(ov64a40->cci, OV64A40_REG_TIMING_CTRL6,
- anacrop->height + anacrop->top, &ret);
+ anacrop->height + anacrop->top - 1, &ret);
/* ISP windowing. */
cci_write(ov64a40->cci, OV64A40_REG_TIMING_CTRL10,