Skip to content
Merged
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
From f44c0d640f10125458ec3f65403b50cda607c49d Mon Sep 17 00:00:00 2001
From: Nikolai-L <nikolai.lyskov@realsenseai.com>
Date: Sun, 1 Feb 2026 10:30:13 +0200
Subject: [PATCH] [PATCH] Add GPIO tunneling for the external sync support
updating pipe setting functions for max9295 and max9296 drivers

---
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 4b03b1ef8..51e02edd7 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 87f9dcf7a..829657bca 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

Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
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

Loading