summaryrefslogtreecommitdiffstats
path: root/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0171-lvds-ONSEMI-fix-matrix-position-during-crop.patch
blob: 4142f489048f7508b6f473c0c980e4634a7465a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
From 7d4a772671d98789186d9c1eb7b44cb22c1d9981 Mon Sep 17 00:00:00 2001
From: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
Date: Fri, 17 May 2019 23:18:30 +0300
Subject: [PATCH 120/122] lvds: ONSEMI: fix matrix position during crop

This preserves the centered window poition on imager
matrix during crop

Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
---
 drivers/media/i2c/soc_camera/ar0140.c | 8 ++++----
 drivers/media/i2c/soc_camera/ar0143.c | 8 ++++----
 drivers/media/i2c/soc_camera/ar0147.c | 8 ++++----
 drivers/media/i2c/soc_camera/ar0231.c | 8 ++++----
 drivers/media/i2c/soc_camera/ar0233.c | 8 ++++----
 5 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/drivers/media/i2c/soc_camera/ar0140.c b/drivers/media/i2c/soc_camera/ar0140.c
index 807b6f8..c52ca4e 100644
--- a/drivers/media/i2c/soc_camera/ar0140.c
+++ b/drivers/media/i2c/soc_camera/ar0140.c
@@ -106,13 +106,13 @@ static int ar0140_set_window(struct v4l2_subdev *sd)
 	dev_dbg(&client->dev, "L=%d T=%d %dx%d\n", priv->rect.left, priv->rect.top, priv->rect.width, priv->rect.height);
 
 	/* horiz crop start */
-	reg16_write16(client, 0x3004, priv->rect.left);
+	reg16_write16(client, 0x3004, priv->rect.left + AR0140_X_START);
 	/* horiz crop end */
-	reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1);
+	reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1 + AR0140_X_START);
 	/* vert crop start */
-	reg16_write16(client, 0x3002, priv->rect.top);
+	reg16_write16(client, 0x3002, priv->rect.top + AR0140_Y_START);
 	/* vert crop end */
-	reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height + 1);
+	reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height - 1 + AR0140_Y_START);
 
 	return 0;
 };
diff --git a/drivers/media/i2c/soc_camera/ar0143.c b/drivers/media/i2c/soc_camera/ar0143.c
index 01494fe..b61c7eb 100644
--- a/drivers/media/i2c/soc_camera/ar0143.c
+++ b/drivers/media/i2c/soc_camera/ar0143.c
@@ -140,13 +140,13 @@ static int ar0143_set_window(struct v4l2_subdev *sd)
 	dev_dbg(&client->dev, "L=%d T=%d %dx%d\n", priv->rect.left, priv->rect.top, priv->rect.width, priv->rect.height);
 
 	/* horiz crop start */
-	reg16_write16(client, 0x3004, priv->rect.left);
+	reg16_write16(client, 0x3004, priv->rect.left + AR0143_X_START);
 	/* horiz crop end */
-	reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1);
+	reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1 + AR0143_X_START);
 	/* vert crop start */
-	reg16_write16(client, 0x3002, priv->rect.top);
+	reg16_write16(client, 0x3002, priv->rect.top + AR0143_Y_START);
 	/* vert crop end */
-	reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height + 1);
+	reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height + 1 + AR0143_Y_START);
 
 	return 0;
 };
diff --git a/drivers/media/i2c/soc_camera/ar0147.c b/drivers/media/i2c/soc_camera/ar0147.c
index cc7face..cc4e761 100644
--- a/drivers/media/i2c/soc_camera/ar0147.c
+++ b/drivers/media/i2c/soc_camera/ar0147.c
@@ -155,13 +155,13 @@ static int ar0147_set_window(struct v4l2_subdev *sd)
 	dev_dbg(&client->dev, "L=%d T=%d %dx%d\n", priv->rect.left, priv->rect.top, priv->rect.width, priv->rect.height);
 
 	/* horiz crop start */
-	reg16_write16(client, 0x3004, priv->rect.left);
+	reg16_write16(client, 0x3004, priv->rect.left + AR0147_X_START);
 	/* horiz crop end */
-	reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1);
+	reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1 + AR0147_X_START);
 	/* vert crop start */
-	reg16_write16(client, 0x3002, priv->rect.top);
+	reg16_write16(client, 0x3002, priv->rect.top + AR0147_Y_START);
 	/* vert crop end */
-	reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height - 1);
+	reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height - 1 + AR0147_Y_START);
 
 	return 0;
 };
diff --git a/drivers/media/i2c/soc_camera/ar0231.c b/drivers/media/i2c/soc_camera/ar0231.c
index 05037c7..b239f56 100644
--- a/drivers/media/i2c/soc_camera/ar0231.c
+++ b/drivers/media/i2c/soc_camera/ar0231.c
@@ -96,13 +96,13 @@ static int ar0231_set_window(struct v4l2_subdev *sd)
 	dev_err(&client->dev, "L=%d T=%d %dx%d\n", priv->rect.left, priv->rect.top, priv->rect.width, priv->rect.height);
 
 	/* horiz crop start */
-	reg16_write16(client, 0x3004, priv->rect.left);
+	reg16_write16(client, 0x3004, priv->rect.left + AR0231_X_START);
 	/* horiz crop end */
-	reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1);
+	reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1 + AR0231_X_START);
 	/* vert crop start */
-	reg16_write16(client, 0x3002, priv->rect.top);
+	reg16_write16(client, 0x3002, priv->rect.top + AR0231_Y_START);
 	/* vert crop end */
-	reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height + 1);
+	reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height - 1 + AR0231_Y_START);
 
 	return 0;
 };
diff --git a/drivers/media/i2c/soc_camera/ar0233.c b/drivers/media/i2c/soc_camera/ar0233.c
index 862c820..543b8a6 100644
--- a/drivers/media/i2c/soc_camera/ar0233.c
+++ b/drivers/media/i2c/soc_camera/ar0233.c
@@ -102,13 +102,13 @@ static int ar0233_set_window(struct v4l2_subdev *sd)
 	dev_dbg(&client->dev, "L=%d T=%d %dx%d\n", priv->rect.left, priv->rect.top, priv->rect.width, priv->rect.height);
 
 	/* horiz crop start */
-	reg16_write16(client, 0x3004, priv->rect.left);
+	reg16_write16(client, 0x3004, priv->rect.left + AR0233_X_START);
 	/* horiz crop end */
-	reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1);
+	reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1 + AR0233_X_START);
 	/* vert crop start */
-	reg16_write16(client, 0x3002, priv->rect.top);
+	reg16_write16(client, 0x3002, priv->rect.top + AR0233_Y_START);
 	/* vert crop end */
-	reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height + 1);
+	reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height - 1 + AR0233_Y_START);
 
 	return 0;
 };
-- 
2.7.4