 +static int ov490_set_regs(struct i2c_client *client,
 +			  const struct ov490_reg *regs, int nr_regs)
 +{
-+	int i, ret;
++	int i;
 +
 +	for (i = 0; i < nr_regs; i++) {
-+		ret = maxim_reg16_write(client, regs[i].reg, regs[i].val);
-+#if 0 /* Do not stop on write fail .... */
-+		if (ret)
-+			return ret;
-+#endif
++		if (maxim_reg16_write(client, regs[i].reg, regs[i].val)) {
++			usleep_range(100, 150); /* wait 100 us */
++			maxim_reg16_write(client, regs[i].reg, regs[i].val);
++		}
 +	}
 +
 +	return 0;

+static int ov10635_set_regs(struct i2c_client *client,
+			    const struct ov10635_reg *regs, int nr_regs)
+{
+	int i, ret;
+
+	for (i = 0; i < nr_regs; i++) {
+		ret = maxim_reg16_write(client, regs[i].reg, regs[i].val);
+#if 0 /* Do not stop on write fail .... */
+		if (ret)
+			return ret;
+#endif
+	}
+
+	return 0;

+		/* Check if already initialized (after reboot/reset ?) */
+		client->addr = priv->max9271_addr_map[idx];		/* MAX9271-CAMx I2C */
+		maxim_reg8_read(client, 0x1e, &val);			/* read max9271 ID */
+		if (val == MAX9271_ID) {
+			ret = -EADDRINUSE;
+			break;
+		}
+	}
+
+	if (!timeout)
+		ret = -ETIMEDOUT;
+
+	dev_info(&client->dev, "link%d MAX9271 %sat 0x%x %s\n", idx,
+			       ret == -EADDRINUSE ? "already " : "", priv->max9271_addr_map[idx],
+			       ret == -ETIMEDOUT ? "not found: timeout GMSL link establish" : "");
+
+	return ret;
+}
+
+static void max9286_max9271_initial_setup(struct i2c_client *client)
