summaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-6.1/950-0999-media-rp1-csi2-Fix-missing-reg-writes.patch
blob: 2a3915b6e3780fbe0e49fbf7dd7cbd581eca3139 (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
From 62e8ab88d2c230dad122aabe2ad0e227d7ceba40 Mon Sep 17 00:00:00 2001
From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Date: Thu, 28 Sep 2023 10:42:22 +0300
Subject: [PATCH] media: rp1: csi2: Fix missing reg writes

The driver has two places where it writes a register based on a
condition, and when that condition is false, the driver presumes that
the register has the reset value. This is not a good idea, so fix those
places to always write the register.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
 drivers/media/platform/raspberrypi/rp1_cfe/csi2.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

--- a/drivers/media/platform/raspberrypi/rp1_cfe/csi2.c
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/csi2.c
@@ -253,6 +253,7 @@ void csi2_start_channel(struct csi2_devi
 		 */
 		set_field(&ctrl, 0x3ff, LC_MASK);
 		set_field(&ctrl, 0x00, CH_MODE_MASK);
+		csi2_reg_write(csi2, CSI2_CH_FRAME_SIZE(channel), 0);
 	}
 
 	set_field(&ctrl, dt, DT_MASK);
@@ -277,8 +278,8 @@ void csi2_open_rx(struct csi2_device *cs
 {
 	dphy_start(&csi2->dphy);
 
-	if (!csi2->multipacket_line)
-		csi2_reg_write(csi2, CSI2_CTRL, EOP_IS_EOL);
+	csi2_reg_write(csi2, CSI2_CTRL,
+		       csi2->multipacket_line ? 0 : EOP_IS_EOL);
 }
 
 void csi2_close_rx(struct csi2_device *csi2)