瀏覽代碼

[media] s5p-fimc: Add support for sensors with multiple pads

Some sensors can have more than one pad (case of S5C73M3).
In such cases FIMC assumes the last pad of the sensor is
the source pad.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Andrzej Hajda 12 年之前
父節點
當前提交
1c9f5bd7cb
共有 2 個文件被更改,包括 6 次插入3 次删除
  1. 4 2
      drivers/media/platform/s5p-fimc/fimc-capture.c
  2. 2 1
      drivers/media/platform/s5p-fimc/fimc-mdevice.c

+ 4 - 2
drivers/media/platform/s5p-fimc/fimc-capture.c

@@ -884,14 +884,16 @@ static int fimc_get_sensor_frame_desc(struct v4l2_subdev *sensor,
 {
 {
 	struct v4l2_mbus_frame_desc fd;
 	struct v4l2_mbus_frame_desc fd;
 	int i, ret;
 	int i, ret;
+	int pad;
 
 
 	for (i = 0; i < num_planes; i++)
 	for (i = 0; i < num_planes; i++)
 		fd.entry[i].length = plane_fmt[i].sizeimage;
 		fd.entry[i].length = plane_fmt[i].sizeimage;
 
 
+	pad = sensor->entity.num_pads - 1;
 	if (try)
 	if (try)
-		ret = v4l2_subdev_call(sensor, pad, set_frame_desc, 0, &fd);
+		ret = v4l2_subdev_call(sensor, pad, set_frame_desc, pad, &fd);
 	else
 	else
-		ret = v4l2_subdev_call(sensor, pad, get_frame_desc, 0, &fd);
+		ret = v4l2_subdev_call(sensor, pad, get_frame_desc, pad, &fd);
 
 
 	if (ret < 0)
 	if (ret < 0)
 		return ret;
 		return ret;

+ 2 - 1
drivers/media/platform/s5p-fimc/fimc-mdevice.c

@@ -659,7 +659,8 @@ static int fimc_md_create_links(struct fimc_md *fmd)
 				 "but s5p-csis module is not loaded!\n"))
 				 "but s5p-csis module is not loaded!\n"))
 				return -EINVAL;
 				return -EINVAL;
 
 
-			ret = media_entity_create_link(&sensor->entity, 0,
+			pad = sensor->entity.num_pads - 1;
+			ret = media_entity_create_link(&sensor->entity, pad,
 					      &csis->entity, CSIS_PAD_SINK,
 					      &csis->entity, CSIS_PAD_SINK,
 					      MEDIA_LNK_FL_IMMUTABLE |
 					      MEDIA_LNK_FL_IMMUTABLE |
 					      MEDIA_LNK_FL_ENABLED);
 					      MEDIA_LNK_FL_ENABLED);