 +	int				height;
 +	int				fps_denominator;
 +	int				init_complete;
++	u8				id[5];
 +};
 +
 +static inline struct ov10635_priv *to_ov10635(const struct i2c_client *client)

\ No newline at end of file
diff --git a/drivers/media/i2c/soc_camera/max9286_max9271_ov10635.c b/drivers/media/i2c/soc_camera/max9286_max9271_ov10635.c
new file mode 100644
index 0000000..7ca3f3f
--- /dev/null
+++ b/drivers/media/i2c/soc_camera/max9286_max9271_ov10635.c
@@ -0,0 +1,606 @@
+/*
+ * MAXIM max9286-max9271 with OmniVision ov10635 sensor camera driver
+ *

+	return 0;
+}
+
+static int ov490_s_crop(struct v4l2_subdev *sd, const struct v4l2_crop *a)
+{
+	struct v4l2_crop a_writable = *a;
+	struct v4l2_rect *rect = &a_writable.c;
+	struct i2c_client *client = v4l2_get_subdevdata(sd);
+	struct ov490_priv *priv = to_ov490(client);
+
+	rect->left = 0;
+	rect->top = 0;
+	rect->width = priv->width;
+	rect->height = priv->height;
+
+	return 0;
+}
+
+static int ov490_g_crop(struct v4l2_subdev *sd, struct v4l2_crop *a)
+{
+	struct i2c_client *client = v4l2_get_subdevdata(sd);
+	struct ov490_priv *priv = to_ov490(client);
+
+	a->c.left = 0;
+	a->c.top = 0;
+	a->c.width = priv->width;
+	a->c.height = priv->height;
+	a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+
+	return 0;
+}
+
+static int ov490_cropcap(struct v4l2_subdev *sd, struct v4l2_cropcap *a)
+{
+	struct i2c_client *client = v4l2_get_subdevdata(sd);
+	struct ov490_priv *priv = to_ov490(client);
+
+	a->bounds.left = 0;
+	a->bounds.top = 0;
+	a->bounds.width = priv->width;
+	a->bounds.height = priv->height;
+	a->defrect = a->bounds;
+	a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+
+	return 0;
+}
+
+static int ov490_g_mbus_config(struct v4l2_subdev *sd,
+			       struct v4l2_mbus_config *cfg)
+{
