aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2013-05-29 09:18:59 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-06-17 08:43:44 -0400
commitec276a5a26200b342c11739b805b637961f660a7 (patch)
tree3d0293ce48b6a4be7152500510692e353829c6b2
parentaf1f7284da471e68508457da92deab2517d48ff4 (diff)
[media] saa7191: fix querystd
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>
-rw-r--r--drivers/media/i2c/saa7191.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/media/i2c/saa7191.c b/drivers/media/i2c/saa7191.c
index 08dcaecbeb98..606a4baf944d 100644
--- a/drivers/media/i2c/saa7191.c
+++ b/drivers/media/i2c/saa7191.c
@@ -271,7 +271,7 @@ static int saa7191_querystd(struct v4l2_subdev *sd, v4l2_std_id *norm)
271 271
272 dprintk("SAA7191 extended signal auto-detection...\n"); 272 dprintk("SAA7191 extended signal auto-detection...\n");
273 273
274 *norm = V4L2_STD_NTSC | V4L2_STD_PAL | V4L2_STD_SECAM; 274 *norm &= V4L2_STD_NTSC | V4L2_STD_PAL | V4L2_STD_SECAM;
275 stdc &= ~SAA7191_STDC_SECS; 275 stdc &= ~SAA7191_STDC_SECS;
276 ctl3 &= ~(SAA7191_CTL3_FSEL); 276 ctl3 &= ~(SAA7191_CTL3_FSEL);
277 277
@@ -302,7 +302,7 @@ static int saa7191_querystd(struct v4l2_subdev *sd, v4l2_std_id *norm)
302 if (status & SAA7191_STATUS_FIDT) { 302 if (status & SAA7191_STATUS_FIDT) {
303 /* 60Hz signal -> NTSC */ 303 /* 60Hz signal -> NTSC */
304 dprintk("60Hz signal: NTSC\n"); 304 dprintk("60Hz signal: NTSC\n");
305 *norm = V4L2_STD_NTSC; 305 *norm &= V4L2_STD_NTSC;
306 return 0; 306 return 0;
307 } 307 }
308 308
@@ -324,12 +324,13 @@ static int saa7191_querystd(struct v4l2_subdev *sd, v4l2_std_id *norm)
324 if (status & SAA7191_STATUS_FIDT) { 324 if (status & SAA7191_STATUS_FIDT) {
325 dprintk("No 50Hz signal\n"); 325 dprintk("No 50Hz signal\n");
326 saa7191_s_std(sd, old_norm); 326 saa7191_s_std(sd, old_norm);
327 return -EAGAIN; 327 *norm = V4L2_STD_UNKNOWN;
328 return 0;
328 } 329 }
329 330
330 if (status & SAA7191_STATUS_CODE) { 331 if (status & SAA7191_STATUS_CODE) {
331 dprintk("PAL\n"); 332 dprintk("PAL\n");
332 *norm = V4L2_STD_PAL; 333 *norm &= V4L2_STD_PAL;
333 return saa7191_s_std(sd, old_norm); 334 return saa7191_s_std(sd, old_norm);
334 } 335 }
335 336
@@ -349,18 +350,19 @@ static int saa7191_querystd(struct v4l2_subdev *sd, v4l2_std_id *norm)
349 /* not 50Hz ? */ 350 /* not 50Hz ? */
350 if (status & SAA7191_STATUS_FIDT) { 351 if (status & SAA7191_STATUS_FIDT) {
351 dprintk("No 50Hz signal\n"); 352 dprintk("No 50Hz signal\n");
352 err = -EAGAIN; 353 *norm = V4L2_STD_UNKNOWN;
353 goto out; 354 goto out;
354 } 355 }
355 356
356 if (status & SAA7191_STATUS_CODE) { 357 if (status & SAA7191_STATUS_CODE) {
357 /* Color detected -> SECAM */ 358 /* Color detected -> SECAM */
358 dprintk("SECAM\n"); 359 dprintk("SECAM\n");
359 *norm = V4L2_STD_SECAM; 360 *norm &= V4L2_STD_SECAM;
360 return saa7191_s_std(sd, old_norm); 361 return saa7191_s_std(sd, old_norm);
361 } 362 }
362 363
363 dprintk("No color detected with SECAM - Going back to PAL.\n"); 364 dprintk("No color detected with SECAM - Going back to PAL.\n");
365 *norm = V4L2_STD_UNKNOWN;
364 366
365out: 367out:
366 return saa7191_s_std(sd, old_norm); 368 return saa7191_s_std(sd, old_norm);