Web lists-archives.com

[PATCH 4/4] soc-camera: tw9910: Add V4L2_FIELD_INTERLACED_TB/BT support




Signed-off-by: Kuninori Morimoto <morimoto.kuninori@xxxxxxxxxxx>
---
 drivers/media/video/tw9910.c |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/media/video/tw9910.c b/drivers/media/video/tw9910.c
index 8e3d9e0..d15f816 100644
--- a/drivers/media/video/tw9910.c
+++ b/drivers/media/video/tw9910.c
@@ -830,10 +830,16 @@ static int tw9910_try_fmt(struct v4l2_subdev *sd, struct v4l2_format *f)
 	struct soc_camera_device *icd = client->dev.platform_data;
 	struct v4l2_pix_format *pix = &f->fmt.pix;
 	const struct tw9910_scale_ctrl *scale;
+	enum v4l2_field field;
 
-	if (V4L2_FIELD_ANY == pix->field) {
-		pix->field = V4L2_FIELD_INTERLACED;
-	} else if (V4L2_FIELD_INTERLACED != pix->field) {
+	field = i2c_smbus_read_byte_data(client, STATUS1) & 0x10 ?
+		V4L2_FIELD_INTERLACED_TB : V4L2_FIELD_INTERLACED_BT;
+
+	if ((V4L2_FIELD_ANY           == pix->field) ||
+	    (V4L2_FIELD_INTERLACED_TB == pix->field) ||
+	    (V4L2_FIELD_INTERLACED_BT == pix->field)) {
+		pix->field = field;
+	} else if (field != pix->field) {
 		dev_err(&client->dev, "Field type invalid.\n");
 		return -EINVAL;
 	}
-- 
1.6.0.4

--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@xxxxxxxxxx?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list