 +		usleep_range(2000, 2500);			/* wait 2ms after any change of reverse channel settings */
 +
 +		client->addr = 0x40;				/* MAX9271-CAMx I2C */
-+		i2c_smbus_read_byte(client);			/* ping to wake-up */
 +		reg8_write(client, 0x04, 0x43);			/* wake-up, enable reverse_control/conf_link */
-+		reg8_write(client, 0x08, 0x1);			/* reverse channel receiver high threshold enable */
 +		usleep_range(2000, 2500);			/* wait 2ms after any change of reverse channel settings */
 +
 +		client->addr = 0x40;				/* MAX9271-CAMx I2C */

 obj-$(CONFIG_SOC_CAMERA_OV6650)		+= ov6650.o
diff --git a/drivers/media/i2c/soc_camera/max9286_max9271.c b/drivers/media/i2c/soc_camera/max9286_max9271.c
new file mode 100644
index 0000000..c0c659f
--- /dev/null
+++ b/drivers/media/i2c/soc_camera/max9286_max9271.c
@@ -0,0 +1,533 @@
+/*
+ * MAXIM max9286-max9271 GMSL driver
+ *

+		usleep_range(2000, 2500);			/* wait 2ms after any change of reverse channel settings */
+
+		client->addr = 0x40;				/* MAX9271-CAMx I2C */
+		reg8_write(client, 0x08, 0x1);			/* reverse channel receiver high threshold enable */
+		usleep_range(2000, 2500);			/* wait 2ms after any change of reverse channel settings */
+
