diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2013-05-29 09:18:59 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-06-17 08:43:44 -0400 |
commit | ec276a5a26200b342c11739b805b637961f660a7 (patch) | |
tree | 3d0293ce48b6a4be7152500510692e353829c6b2 | |
parent | af1f7284da471e68508457da92deab2517d48ff4 (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.c | 14 |
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 | ||
365 | out: | 367 | out: |
366 | return saa7191_s_std(sd, old_norm); | 368 | return saa7191_s_std(sd, old_norm); |