[media] vpx3220: fix querystd
authorHans Verkuil <hans.verkuil@cisco.com>
Wed, 29 May 2013 13:19:01 +0000 (10:19 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 17 Jun 2013 12:44:21 +0000 (09:44 -0300)
Return V4L2_STD_UNKNOWN if no signal is detected.
Otherwise AND the standard mask with the detected standards.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/i2c/vpx3220.c

index 4c57d8a67c22912af7483846b352adb3cbb8619b..ece90df6a04359255aaa98969a7180263445be5a 100644 (file)
@@ -295,7 +295,7 @@ static int vpx3220_init(struct v4l2_subdev *sd, u32 val)
 static int vpx3220_status(struct v4l2_subdev *sd, u32 *pstatus, v4l2_std_id *pstd)
 {
        int res = V4L2_IN_ST_NO_SIGNAL, status;
-       v4l2_std_id std = 0;
+       v4l2_std_id std = pstd ? *pstd : V4L2_STD_ALL;
 
        status = vpx3220_fp_read(sd, 0x0f3);
 
@@ -312,19 +312,21 @@ static int vpx3220_status(struct v4l2_subdev *sd, u32 *pstatus, v4l2_std_id *pst
                case 0x10:
                case 0x14:
                case 0x18:
-                       std = V4L2_STD_PAL;
+                       std &= V4L2_STD_PAL;
                        break;
 
                case 0x08:
-                       std = V4L2_STD_SECAM;
+                       std &= V4L2_STD_SECAM;
                        break;
 
                case 0x04:
                case 0x0c:
                case 0x1c:
-                       std = V4L2_STD_NTSC;
+                       std &= V4L2_STD_NTSC;
                        break;
                }
+       } else {
+               std = V4L2_STD_UNKNOWN;
        }
        if (pstd)
                *pstd = std;