 +	/* Initial setup */
 +	client->addr = priv->des_addr;				/* MAX9286-CAMx I2C */
 +	reg8_write(client, 0x15, 0x13);				/* disable CSI output, VC is set accordingly to Link number */
++	reg8_write(client, 0x69, 0x0f);				/* mask CSI forwarding from all links */
 +	switch (priv->lanes) {
 +	case 1:
 +		reg8_write(client, 0x12, 0x33);			/* enable CSI-2 Lane D0, DBL mode, YUV422 8-bit*/

+
+	if (on) {
+		if (!atomic_read(&priv->use_count))
+			reg8_write(client, 0x33, ((priv->lanes - 1) ^ 0x3) << 4 | 0x1); /* enable CSI output, set CSI lane count, non-continuous CSI mode */
+		atomic_inc(&priv->use_count);
+	} else {
+		atomic_dec(&priv->use_count);
+		if (!atomic_read(&priv->use_count))
+			reg8_write(client, 0x33, ((priv->lanes - 1) ^ 0x3) << 4); /* disable CSI output, set CSI lane count, non-continuous CSI mode */
+	}
+
+	return 0;

+};
diff --git a/drivers/media/i2c/soc_camera/ti964_ti913.c b/drivers/media/i2c/soc_camera/ti964_ti913.c
new file mode 100644
index 0000000..ab480f5
--- /dev/null
+++ b/drivers/media/i2c/soc_camera/ti964_ti913.c
@@ -0,0 +1,353 @@
