|
| 1 | +From 71e364f579128502a796b19ad929d95bd42139e2 Mon Sep 17 00:00:00 2001 |
| 2 | +From: Nikolai-L <nikolai.lyskov@realsenseai.com> |
| 3 | +Date: Tue, 3 Feb 2026 17:06:10 +0200 |
| 4 | +Subject: [PATCH] Add GPIO tunneling for the external sync support |
| 5 | + |
| 6 | +--- |
| 7 | + .gitignore | 7 +++++++ |
| 8 | + drivers/media/i2c/max9295.c | 11 +++++++++-- |
| 9 | + drivers/media/i2c/max9296.c | 11 +++++++++++ |
| 10 | + 3 files changed, 27 insertions(+), 2 deletions(-) |
| 11 | + create mode 100644 .gitignore |
| 12 | + |
| 13 | +diff --git a/.gitignore b/.gitignore |
| 14 | +new file mode 100644 |
| 15 | +index 00000000..648c10ed |
| 16 | +--- /dev/null |
| 17 | ++++ b/.gitignore |
| 18 | +@@ -0,0 +1,7 @@ |
| 19 | ++/device-tree |
| 20 | ++*.cmd |
| 21 | ++*.ko |
| 22 | ++*.mod* |
| 23 | ++*.o* |
| 24 | ++*.symvers |
| 25 | ++/drivers/misc/mods |
| 26 | +diff --git a/drivers/media/i2c/max9295.c b/drivers/media/i2c/max9295.c |
| 27 | +index e7c77845..40568147 100644 |
| 28 | +--- a/drivers/media/i2c/max9295.c |
| 29 | ++++ b/drivers/media/i2c/max9295.c |
| 30 | +@@ -24,6 +24,7 @@ |
| 31 | + #define MAX9295_CTRL0_ADDR 0x10 |
| 32 | + #define MAX9295_SRC_CTRL_ADDR 0x2BF |
| 33 | + #define MAX9295_SRC_PWDN_ADDR 0x02BE |
| 34 | ++#define MAX9295_2C0_ADDR 0x02C0 |
| 35 | + #define MAX9295_SRC_OUT_RCLK_ADDR 0x3F1 |
| 36 | + #define MAX9295_START_PIPE_ADDR 0x311 |
| 37 | + #define MAX9295_PIPE_EN_ADDR 0x2 |
| 38 | +@@ -84,7 +85,12 @@ |
| 39 | + |
| 40 | + #define MAX9295_RESET_ALL 0x80 |
| 41 | + #define MAX9295_RESET_SRC 0x60 |
| 42 | ++#define MAX9295_RESET_ESYNC 0x77 |
| 43 | ++ |
| 44 | + #define MAX9295_PWDN_GPIO 0x90 |
| 45 | ++#define MAX9295_PWDN_ESYNC 0x04 |
| 46 | ++ |
| 47 | ++#define MAX9295_2C0_ESYNC 0x57 |
| 48 | + |
| 49 | + #define MAX9295_MAX_PIPES 0x4 |
| 50 | + |
| 51 | +@@ -354,8 +360,9 @@ int max9295_setup_control(struct device *dev) |
| 52 | + max9295_write_reg(dev, MAX9295_I2C4_ADDR, (g_ctx->sdev_reg << 1)); |
| 53 | + max9295_write_reg(dev, MAX9295_I2C5_ADDR, (g_ctx->sdev_def << 1)); |
| 54 | + |
| 55 | +- max9295_write_reg(dev, MAX9295_SRC_PWDN_ADDR, MAX9295_PWDN_GPIO); |
| 56 | +- max9295_write_reg(dev, MAX9295_SRC_CTRL_ADDR, MAX9295_RESET_SRC); |
| 57 | ++ max9295_write_reg(dev, MAX9295_SRC_PWDN_ADDR, MAX9295_PWDN_ESYNC); |
| 58 | ++ max9295_write_reg(dev, MAX9295_SRC_CTRL_ADDR, MAX9295_RESET_ESYNC); |
| 59 | ++ max9295_write_reg(dev, MAX9295_2C0_ADDR, MAX9295_2C0_ESYNC); |
| 60 | + max9295_write_reg(dev, MAX9295_SRC_OUT_RCLK_ADDR, MAX9295_SRC_RCLK); |
| 61 | + |
| 62 | + g_ctx->serdev_found = true; |
| 63 | +diff --git a/drivers/media/i2c/max9296.c b/drivers/media/i2c/max9296.c |
| 64 | +index 97559460..d50bea51 100644 |
| 65 | +--- a/drivers/media/i2c/max9296.c |
| 66 | ++++ b/drivers/media/i2c/max9296.c |
| 67 | +@@ -16,6 +16,10 @@ |
| 68 | + #include <media/max9296.h> |
| 69 | + |
| 70 | + /* register specifics */ |
| 71 | ++#define MAX9296_2C5_ADDR 0x2C5 |
| 72 | ++#define MAX9296_2C6_ADDR 0x2C6 |
| 73 | ++#define MAX9296_2C7_ADDR 0x2C7 |
| 74 | ++ |
| 75 | + #define MAX9296_DST_CSI_MODE_ADDR 0x330 |
| 76 | + #define MAX9296_LANE_MAP1_ADDR 0x333 |
| 77 | + #define MAX9296_LANE_MAP2_ADDR 0x334 |
| 78 | +@@ -44,6 +48,10 @@ |
| 79 | + #define MAX9296_CTRL0_ADDR 0x10 |
| 80 | + |
| 81 | + /* data defines */ |
| 82 | ++#define MAX9296_2C5_ESYNC 0xAA |
| 83 | ++#define MAX9296_2C6_ESYNC 0x17 |
| 84 | ++#define MAX9296_2C7_ESYNC 0x47 |
| 85 | ++ |
| 86 | + #define MAX9296_CSI_MODE_4X2 0x1 |
| 87 | + #define MAX9296_CSI_MODE_2X4 0x4 |
| 88 | + #define MAX9296_LANE_MAP1_4X2 0x44 |
| 89 | +@@ -354,6 +362,9 @@ int max9296_setup_control(struct device *dev, struct device *s_dev) |
| 90 | + |
| 91 | + max9296_write_reg(dev, |
| 92 | + MAX9296_PWDN_PHYS_ADDR, MAX9296_ALLPHYS_NOSTDBY); |
| 93 | ++ max9296_write_reg(dev, MAX9296_2C5_ADDR, MAX9296_2C5_ESYNC); |
| 94 | ++ max9296_write_reg(dev, MAX9296_2C6_ADDR, MAX9296_2C6_ESYNC); |
| 95 | ++ max9296_write_reg(dev, MAX9296_2C7_ADDR, MAX9296_2C7_ESYNC); |
| 96 | + |
| 97 | + priv->sdev_ref++; |
| 98 | + |
| 99 | +-- |
| 100 | +2.43.0 |
| 101 | + |
0 commit comments