commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=b049dd797cc9debaf7f2bc02543cba4cfd771463
branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk

Signed-off-by: Scott Jiang <[email protected]>
---
 drivers/media/video/blackfin/bfin_capture.c |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/blackfin/bfin_capture.c b/drivers/media/video/blackfin/bfin_capture.c
index 7d16a4a..bf84fa6 100644
--- a/drivers/media/video/blackfin/bfin_capture.c
+++ b/drivers/media/video/blackfin/bfin_capture.c
@@ -590,8 +590,11 @@ static int bcap_g_std(struct file *file, void *priv, v4l2_std_id *std)
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
 
-	*std = bcap_dev->std;
-	return 0;
+	if (bcap_dev->std) {
+		*std = bcap_dev->std;
+		return 0;
+	} else
+		return -EINVAL;
 }
 
 static int bcap_s_std(struct file *file, void *priv, v4l2_std_id *std)
@@ -618,12 +621,18 @@ static int bcap_enum_input(struct file *file, void *priv,
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
 	struct bfin_capture_config *config = bcap_dev->cfg;
+	int ret;
+	u32 status;
 
 	if (input->index >= config->num_inputs)
 		return -EINVAL;
 
 	memcpy(input, &config->inputs[input->index],
 		sizeof(*input));
+	/* get input status */
+	ret = v4l2_subdev_call(bcap_dev->sd, video, g_input_status, &status);
+	if (!ret)
+		input->status = status;
 	return 0;
 }
 
@@ -1038,6 +1047,8 @@ static int __devinit bcap_probe(struct platform_device *pdev)
 		/* update tvnorms from the sub devices */
 		for (i = 0; i < config->num_inputs; i++)
 			vfd->tvnorms |= config->inputs[i].std;
+		/* set default std */
+		bcap_dev->std = vfd->tvnorms;
 	} else {
 		v4l2_err(&bcap_dev->v4l2_dev,
 				"Unable to register sub device\n");
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to