V4L/DVB: cx25840: Fix composite detection
authorKusanagi Kouichi <slash@ac.auone-net.jp>
Fri, 22 Jan 2010 07:54:46 +0000 (04:54 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 26 Feb 2010 18:10:50 +0000 (15:10 -0300)
If CX25840_VIN1_CH1 and the like is used, input is not detected as composite.
Their value is 0x800000XX and CX25840_COMPONENT_ON is 0x80000200. So

   739 else if ((vid_input & CX25840_COMPONENT_ON) == 0)

this condition never be true.

Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp>
Reviewed-by: Andy Walls <awalls@radix.net>
Acked-by: Andy Walls <awalls@radix.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/cx25840/cx25840-core.c

index 796f12d59daa4bfba90b862bb80ad34bdcbd88d7..f2461cd3de5ada3cb212c0f5b1d2ed9b36361b31 100644 (file)
@@ -734,10 +734,8 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
                v4l_dbg(1, cx25840_debug, client, "vid_input 0x%x\n",
                        vid_input);
                reg = vid_input & 0xff;
-               if ((vid_input & CX25840_SVIDEO_ON) == CX25840_SVIDEO_ON)
-                       is_composite = 0;
-               else if ((vid_input & CX25840_COMPONENT_ON) == 0)
-                       is_composite = 1;
+               is_composite = !is_component &&
+                       ((vid_input & CX25840_SVIDEO_ON) != CX25840_SVIDEO_ON);
 
                v4l_dbg(1, cx25840_debug, client, "mux cfg 0x%x comp=%d\n",
                        reg, is_composite);