V4L/DVB (3514): SAA7113 doesn't have auto std chroma detection mode
authorMauro Carvalho Chehab <mchehab@infradead.org>
Tue, 14 Mar 2006 19:33:33 +0000 (16:33 -0300)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 21 Mar 2006 16:53:41 +0000 (08:53 -0800)
This patch makes chroma standard selection based at possible values,
according with datasheet.

Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/saa7115.c

index 7050d81c024217ac6a6d4802573ce5e27855527c..498d9aaec1e5ce688da697a97484b47eb4d11a33 100644 (file)
@@ -713,6 +713,35 @@ static void saa7115_set_v4lstd(struct i2c_client *client, v4l2_std_id std)
                saa7115_writeregs(client, saa7115_cfg_50hz_video);
        }
 
+       /* Register 0E - Bits D6-D4 on NO-AUTO mode
+               (SAA7113 doesn't have auto mode)
+           50 Hz / 625 lines           60 Hz / 525 lines
+       000 PAL BGDHI (4.43Mhz)         NTSC M (3.58MHz)
+       001 NTSC 4.43 (50 Hz)           PAL 4.43 (60 Hz)
+       010 Combination-PAL N (3.58MHz) NTSC 4.43 (60 Hz)
+       011 NTSC N (3.58MHz)            PAL M (3.58MHz)
+       100 reserved                    NTSC-Japan (3.58MHz)
+       */
+       if (state->ident == V4L2_IDENT_SAA7113) {
+               u8 reg =  saa7115_read(client, 0x0e) & 0x8f;
+
+               if (std & V4L2_STD_PAL) {
+                       if (std == V4L2_STD_PAL_M) {
+                               reg|=0x30;
+                       } else if (std == V4L2_STD_PAL_N) {
+                               reg|=0x20;
+                       } else if (std == V4L2_STD_PAL_60) {
+                               reg|=0x10;
+                       }
+               } else if (std & V4L2_STD_NTSC) {
+                       if (std == V4L2_STD_NTSC_M_JP) {
+                               reg|=0x40;
+                       }
+               }
+               saa7115_write(client, 0x0e, reg);
+       }
+
+
        state->std = std;
 
        /* restart task B if needed */