-
Notifications
You must be signed in to change notification settings - Fork 30
Expand file tree
/
Copy path0005-Add-GPIO-tunneling-for-the-external-sync-support.patch
More file actions
86 lines (73 loc) · 2.79 KB
/
Copy path0005-Add-GPIO-tunneling-for-the-external-sync-support.patch
File metadata and controls
86 lines (73 loc) · 2.79 KB
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
From 824cf877625ee25ff84bba3b05b10c91fda0f4b1 Mon Sep 17 00:00:00 2001
From: Nikolai-L <nikolai.lyskov@realsenseai.com>
Date: Tue, 3 Feb 2026 17:46:17 +0200
Subject: [PATCH] Add GPIO tunneling for the external sync support
---
drivers/media/i2c/max9295.c | 11 +++++++++--
drivers/media/i2c/max9296.c | 11 +++++++++++
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/drivers/media/i2c/max9295.c b/drivers/media/i2c/max9295.c
index 6311d97d7..f1db5e369 100644
--- a/drivers/media/i2c/max9295.c
+++ b/drivers/media/i2c/max9295.c
@@ -34,6 +34,7 @@
#define MAX9295_CTRL0_ADDR 0x10
#define MAX9295_SRC_CTRL_ADDR 0x2BF
#define MAX9295_SRC_PWDN_ADDR 0x02BE
+#define MAX9295_2C0_ADDR 0x02C0
#define MAX9295_SRC_OUT_RCLK_ADDR 0x3F1
#define MAX9295_START_PIPE_ADDR 0x311
#define MAX9295_PIPE_EN_ADDR 0x2
@@ -94,7 +95,12 @@
#define MAX9295_RESET_ALL 0x80
#define MAX9295_RESET_SRC 0x60
+#define MAX9295_RESET_ESYNC 0x77
+
#define MAX9295_PWDN_GPIO 0x90
+#define MAX9295_PWDN_ESYNC 0x04
+
+#define MAX9295_2C0_ESYNC 0x57
#define MAX9295_MAX_PIPES 0x4
@@ -364,8 +370,9 @@ int max9295_setup_control(struct device *dev)
max9295_write_reg(dev, MAX9295_I2C4_ADDR, (g_ctx->sdev_reg << 1));
max9295_write_reg(dev, MAX9295_I2C5_ADDR, (g_ctx->sdev_def << 1));
- max9295_write_reg(dev, MAX9295_SRC_PWDN_ADDR, MAX9295_PWDN_GPIO);
- max9295_write_reg(dev, MAX9295_SRC_CTRL_ADDR, MAX9295_RESET_SRC);
+ max9295_write_reg(dev, MAX9295_SRC_PWDN_ADDR, MAX9295_PWDN_ESYNC);
+ max9295_write_reg(dev, MAX9295_SRC_CTRL_ADDR, MAX9295_RESET_ESYNC);
+ max9295_write_reg(dev, MAX9295_2C0_ADDR, MAX9295_2C0_ESYNC);
max9295_write_reg(dev, MAX9295_SRC_OUT_RCLK_ADDR, MAX9295_SRC_RCLK);
g_ctx->serdev_found = true;
diff --git a/drivers/media/i2c/max9296.c b/drivers/media/i2c/max9296.c
index 316e687a1..d48de2246 100644
--- a/drivers/media/i2c/max9296.c
+++ b/drivers/media/i2c/max9296.c
@@ -26,6 +26,10 @@
#include <media/max9296.h>
/* register specifics */
+#define MAX9296_2C5_ADDR 0x2C5
+#define MAX9296_2C6_ADDR 0x2C6
+#define MAX9296_2C7_ADDR 0x2C7
+
#define MAX9296_DST_CSI_MODE_ADDR 0x330
#define MAX9296_LANE_MAP1_ADDR 0x333
#define MAX9296_LANE_MAP2_ADDR 0x334
@@ -54,6 +58,10 @@
#define MAX9296_CTRL0_ADDR 0x10
/* data defines */
+#define MAX9296_2C5_ESYNC 0xAA
+#define MAX9296_2C6_ESYNC 0x17
+#define MAX9296_2C7_ESYNC 0x47
+
#define MAX9296_CSI_MODE_4X2 0x1
#define MAX9296_CSI_MODE_2X4 0x4
#define MAX9296_LANE_MAP1_4X2 0x44
@@ -364,6 +372,9 @@ int max9296_setup_control(struct device *dev, struct device *s_dev)
max9296_write_reg(dev,
MAX9296_PWDN_PHYS_ADDR, MAX9296_ALLPHYS_NOSTDBY);
+ max9296_write_reg(dev, MAX9296_2C5_ADDR, MAX9296_2C5_ESYNC);
+ max9296_write_reg(dev, MAX9296_2C6_ADDR, MAX9296_2C6_ESYNC);
+ max9296_write_reg(dev, MAX9296_2C7_ADDR, MAX9296_2C7_ESYNC);
priv->sdev_ref++;
--
2.43.0