1- From f380ba5028aa71b27cdb62736f6214f947473686 Mon Sep 17 00:00:00 2001
1+ From 74a30d41e7972e0e9c2d60744cea1b43dd7c3b08 Mon Sep 17 00:00:00 2001
22From: ejgoldik <ehud.joseph.goldik@realsenseai.com>
3- Date: Tue, 17 Feb 2026 21:37:30 +0200
3+ Date: Wed, 18 Feb 2026 11:52:13 +0200
44Subject: [PATCH] Adding max96712 support for D4xx
55
66Signed-off-by: ejgoldik <ehud.joseph.goldik@realsenseai.com>
77---
8- drivers/media/i2c/max96712.c | 322 ++++++++++++++++++++++++++++++++++-
9- 1 file changed, 319 insertions(+), 3 deletions(-)
8+ drivers/media/i2c/max96712.c | 310 ++++++++++++++++++++++++++++++++++-
9+ 1 file changed, 308 insertions(+), 2 deletions(-)
1010
1111diff --git a/drivers/media/i2c/max96712.c b/drivers/media/i2c/max96712.c
12- index 8081385f0..65d6cbd6e 100644
12+ index 8081385f0..3de1643bc 100644
1313--- a/drivers/media/i2c/max96712.c
1414+++ b/drivers/media/i2c/max96712.c
15- @@ -21,17 +21,65 @@
15+ @@ -21,17 +21,55 @@
1616 #include <linux/debugfs.h>
1717 #include <media/camera_common.h>
1818 #include <linux/module.h>
19- -
2019+ #include <media/max96712.h>
2120+ #include <linux/of_gpio.h>
22- +
21+
2322+ /* register specifics */
2423+
25- + #define MAX96712_REG5_ADDR 0x5
2624+ #define MAX96712_REG6_ADDR 0x6
27- + #define MAX96712_CTRL0_ADDR 0x17
2825+ #define MAX96712_CTRL1_ADDR 0x18
2926+
30- + #define MAX96712_BACKTOP24_ADDR 0x417
3127+ #define MAX96712_BACKTOP25_ADDR 0x418
3228+
3329+ #define MAX96712_MIPI_PHY0_ADDR 0x8A0
3430+ #define MAX96712_MIPI_PHY2_ADDR 0x8A2
3531+ #define MAX96712_MIPI_PHY3_ADDR 0x8A3
36- + #define MAX96712_MIPI_PHY5_ADDR 0x8A5
3732+ #define MAX96712_VIDEO_PIPE_SEL_0_ADDR 0xF0
3833+ #define MAX96712_VIDEO_PIPE_SEL_1_ADDR 0xF1
3934+ #define MAX96712_VIDEO_PIPE_EN_ADDR 0xF4
@@ -56,12 +51,6 @@ index 8081385f0..65d6cbd6e 100644
5651+
5752+ #define MAX96712_DPLL_0_ADDR 0x1D00
5853+
59- + #define MAX96712_RLMS_A_RLMS58_ADDR 0x1458
60- + #define MAX96712_RLMS_A_RLMS59_ADDR 0x1459
61- + #define MAX96712_RLMS_B_RLMS58_ADDR 0x1558
62- + #define MAX96712_RLMS_B_RLMS59_ADDR 0x1559
63- +
64- +
6554+ /* data defines */
6655+ #define MAX96712_MAX_PIPES 4
6756
@@ -80,7 +69,7 @@ index 8081385f0..65d6cbd6e 100644
8069 u16 addr, u8 val)
8170 {
8271 struct i2c_client *i2c_client = NULL;
83- @@ -99,6 +147 ,20 @@ static int max96712_read_reg(struct max96712 *priv,
72+ @@ -99,6 +137 ,20 @@ static int max96712_read_reg(struct max96712 *priv,
8473 return err;
8574 }
8675
@@ -101,7 +90,7 @@ index 8081385f0..65d6cbd6e 100644
10190
10291 static int max96712_stats_show(struct seq_file *s, void *data)
10392 {
104- @@ -169,7 +231 ,10 @@ static int max96712_debugfs_init(const char *dir_name,
93+ @@ -169,7 +221 ,10 @@ static int max96712_debugfs_init(const char *dir_name,
10594 if (np) {
10695 err = of_property_read_string(np, "channel", &priv->channel);
10796 if (err)
@@ -112,15 +101,15 @@ index 8081385f0..65d6cbd6e 100644
112101
113102 err = snprintf(dev_name, sizeof(dev_name), "max96712_%s", priv->channel);
114103 if (err < 0)
115- @@ -216,6 +281 ,7 @@ static int max96712_probe(struct i2c_client *client,
104+ @@ -216,6 +271 ,7 @@ static int max96712_probe(struct i2c_client *client,
116105 {
117106 struct max96712 *priv;
118107 int err = 0;
119108+ struct device_node *np = NULL;
120109
121110 dev_info(&client->dev, "%s: enter\n", __func__);
122111
123- @@ -228,10 +294 ,23 @@ static int max96712_probe(struct i2c_client *client,
112+ @@ -228,10 +284 ,23 @@ static int max96712_probe(struct i2c_client *client,
124113 "regmap init failed: %ld\n", PTR_ERR(priv->regmap));
125114 return -ENODEV;
126115 }
@@ -144,7 +133,7 @@ index 8081385f0..65d6cbd6e 100644
144133
145134 /*set daymode by fault*/
146135 dev_info(&client->dev, "%s: success\n", __func__);
147- @@ -243,8 +322 ,12 @@ static int max96712_probe(struct i2c_client *client,
136+ @@ -243,8 +312 ,12 @@ static int max96712_probe(struct i2c_client *client,
148137 static int
149138 max96712_remove(struct i2c_client *client)
150139 {
@@ -157,7 +146,7 @@ index 8081385f0..65d6cbd6e 100644
157146 i2c_unregister_device(client);
158147 client = NULL;
159148 }
160- @@ -252,13 +335 ,245 @@ max96712_remove(struct i2c_client *client)
149+ @@ -252,13 +325 ,245 @@ max96712_remove(struct i2c_client *client)
161150 return 0;
162151 }
163152
@@ -404,7 +393,7 @@ index 8081385f0..65d6cbd6e 100644
404393 { },
405394 };
406395
407- @@ -268,6 +583 ,7 @@ static struct i2c_driver max96712_i2c_driver = {
396+ @@ -268,6 +573 ,7 @@ static struct i2c_driver max96712_i2c_driver = {
408397 .driver = {
409398 .name = "max96712",
410399 .owner = THIS_MODULE,
0 commit comments