  drivers/media/platform/soc_camera/soc_mediabus.c |   16 +
  include/media/drv-intf/soc_mediabus.h            |    3 +
  include/media/soc_camera.h                       |    1 +
- 21 files changed, 5821 insertions(+), 117 deletions(-)
+ 21 files changed, 5803 insertions(+), 117 deletions(-)
  create mode 100644 drivers/media/i2c/soc_camera/max9286_max9271.c
  create mode 100644 drivers/media/i2c/soc_camera/max9286_max9271.h
  create mode 100644 drivers/media/i2c/soc_camera/ov10635.c

+
+static void ov495_otp_id_read(struct i2c_client *client)
+{
+#if 0
+	struct ov495_priv *priv = to_ov495(client);
+	int i;
+
+	/* read camera id from ov495 OTP memory */
+	reg16_write(client, 0xFFFD, 0x80);
+	reg16_write(client, 0xFFFE, 0x28);
+	usleep_range(100, 150); /* wait 100 us */
+	reg16_write(client, 0xE084, 0x40); /* manual mode, bank#0 */
+	reg16_write(client, 0xE081, 1); /* start OTP read */
+
+	usleep_range(25000, 26000); /* wait 25 ms */
+
+	for (i = 0; i < 6; i++)
+		reg16_read(client, 0xe000 + i + 4, &priv->id[i]);
+#else
+#if 0
+	/* read camera id from ov2775 OTP memory */
+	reg16_write(client, 0xFFFD, 0x80);
+	usleep_range(100, 150); /* wait 100 us */
+	reg16_write(client, 0xFFFE, 0x19);
+	usleep_range(100, 150); /* wait 100 us */
+	reg16_write(client, 0x5000, 0x00); /* write 0x349C -> 1 */
+	reg16_write(client, 0x5001, 0x34);
+	reg16_write(client, 0x5002, 0x9C);
+	reg16_write(client, 0x5003, 1);
+	reg16_write(client, 0xFFFE, 0x80);
+	usleep_range(100, 150); /* wait 100 us */
+	reg16_write(client, 0x00C0, 0xc1);
+
+	usleep_range(25000, 25500); /* wait 25 ms */
+
+	for (i = 0; i < 6; i++) {
+		reg16_write(client, 0xFFFE, 0x19);
+		usleep_range(100, 150); /* wait 100 us */
+		reg16_write(client, 0x5000, 0x01); /* read (0x349E + i) */
+		reg16_write(client, 0x5001, 0x34);
+		reg16_write(client, 0x5002, 0x9e + i + 6); /* first 6 bytes are equal on all ov2775 */
+		reg16_write(client, 0xFFFE, 0x80);
+		usleep_range(100, 150); /* wait 100 us */
+		reg16_write(client, 0x00C0, 0xc1);
+		reg16_write(client, 0xFFFE, 0x19);
+		usleep_range(1000, 1500); /* wait 1 ms */
+		reg16_read(client, 0x5000, &priv->id[i]);
+	}
+#endif
+#endif
+}
+

+	usleep_range(100, 150); /* wait 100 us */
+	reg16_read(client, OV495_PID, &pid);
+	reg16_read(client, OV495_VER, &ver);
+
+	if (OV495_VERSION(pid, ver) != OV495_VERSION_REG) {
+		dev_err(&client->dev, "Product ID error %x:%x\n", pid, ver);
