  
  	dev_dbg(icd->parent, "R-Car VIN driver detached from camera %d\n",
  		icd->devnum);
-@@ -2659,7 +2698,9 @@ static int rcar_vin_probe(struct platform_device *pdev)
+@@ -2434,6 +2473,19 @@ static int rcar_vin_cropcap(struct soc_camera_device *icd,
+ 	return 0;
+ }
+ 
++static int rcar_vin_get_edid(struct soc_camera_device *icd,
++			     struct v4l2_edid *edid)
++{
++	struct v4l2_subdev *sd = soc_camera_to_subdev(icd);
++	int ret;
++
++	ret = v4l2_subdev_call(sd, pad, get_edid, edid);
++	if (ret < 0)
++		return ret;
++
++	return 0;
++}
++
+ static struct soc_camera_host_ops rcar_vin_host_ops = {
+ 	.owner		= THIS_MODULE,
+ 	.add		= rcar_vin_add_device,
+@@ -2450,6 +2502,7 @@ static struct soc_camera_host_ops rcar_vin_host_ops = {
+ 	.init_videobuf2	= rcar_vin_init_videobuf2,
+ 	.get_selection	= rcar_vin_get_selection,
+ 	.cropcap	= rcar_vin_cropcap,
++	.get_edid	= rcar_vin_get_edid,
+ };
+ 
+ #ifdef CONFIG_OF
+@@ -2659,7 +2712,9 @@ static int rcar_vin_probe(struct platform_device *pdev)
  	const char *str;
  	unsigned int i;
  	struct device_node *epn = NULL, *ren = NULL;

 	}
 
 	ret = v4l2_of_parse_endpoint(np, &ep);
@@ -2748,6 +2793,7 @@ static int rcar_vin_probe(struct platform_device *pdev)
 	priv->ici.drv_name = dev_name(&pdev->dev);
 	priv->ici.ops = &rcar_vin_host_ops;
 	priv->csi_sync = false;

+};
+
+static const struct v4l2_subdev_pad_ops ov10635_subdev_pad_ops = {
+	.get_edid	= ov10635_get_edid,
+	.enum_mbus_code	= ov10635_enum_mbus_code,
+	.get_fmt	= ov10635_get_fmt,
+	.set_fmt	= ov10635_set_fmt,
