[media] tm6000: fix s-video input
authorDmitri Belimov <d.belimov@gmail.com>
Fri, 18 Mar 2011 00:08:55 +0000 (21:08 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 22 Mar 2011 20:20:14 +0000 (17:20 -0300)
Add compatibility for composite and s-video inputs. Some TV cards hasn't
it.

Fix S-Video input, the s-video cable has only video signals no
audio. Call the function of audio configure kill chroma in signal. only
b/w video.

Known bugs:
  - after s-video the audio for radio didn't work, TV crashed hardly
  - after composite TV crashed hardly too.

P.S. After this patch I'll want to rework the procedure of configure
     video. Now it has a lot of junk and dubles.

With my best regards, Dmitry.

Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/staging/tm6000/tm6000-cards.c
drivers/staging/tm6000/tm6000-stds.c
drivers/staging/tm6000/tm6000-video.c
drivers/staging/tm6000/tm6000.h

index 88144a1..146c7e8 100644 (file)
@@ -235,11 +235,13 @@ struct tm6000_board tm6000_boards[] = {
                .avideo       = TM6000_AIP_SIF1,
                .aradio       = TM6000_AIP_LINE1,
                .caps = {
-                       .has_tuner    = 1,
-                       .has_dvb      = 1,
-                       .has_zl10353  = 1,
-                       .has_eeprom   = 1,
-                       .has_remote   = 1,
+                       .has_tuner      = 1,
+                       .has_dvb        = 1,
+                       .has_zl10353    = 1,
+                       .has_eeprom     = 1,
+                       .has_remote     = 1,
+                       .has_input_comp = 1,
+                       .has_input_svid = 1,
                },
                .gpio = {
                        .tuner_reset    = TM6010_GPIO_0,
@@ -255,11 +257,13 @@ struct tm6000_board tm6000_boards[] = {
                .avideo       = TM6000_AIP_SIF1,
                .aradio       = TM6000_AIP_LINE1,
                .caps = {
-                       .has_tuner    = 1,
-                       .has_dvb      = 0,
-                       .has_zl10353  = 0,
-                       .has_eeprom   = 1,
-                       .has_remote   = 1,
+                       .has_tuner      = 1,
+                       .has_dvb        = 0,
+                       .has_zl10353    = 0,
+                       .has_eeprom     = 1,
+                       .has_remote     = 1,
+                       .has_input_comp = 1,
+                       .has_input_svid = 1,
                },
                .gpio = {
                        .tuner_reset    = TM6010_GPIO_0,
@@ -327,10 +331,13 @@ struct tm6000_board tm6000_boards[] = {
                .avideo       = TM6000_AIP_SIF1,
                .aradio       = TM6000_AIP_LINE1,
                .caps = {
-                       .has_tuner    = 1,
-                       .has_dvb      = 1,
-                       .has_zl10353  = 1,
-                       .has_eeprom   = 1,
+                       .has_tuner      = 1,
+                       .has_dvb        = 1,
+                       .has_zl10353    = 1,
+                       .has_eeprom     = 1,
+                       .has_remote     = 0,
+                       .has_input_comp = 0,
+                       .has_input_svid = 0,
                },
                .gpio = {
                        .tuner_reset    = TM6010_GPIO_0,
@@ -346,10 +353,13 @@ struct tm6000_board tm6000_boards[] = {
                .avideo       = TM6000_AIP_SIF1,
                .aradio       = TM6000_AIP_LINE1,
                .caps = {
-                       .has_tuner    = 1,
-                       .has_dvb      = 0,
-                       .has_zl10353  = 0,
-                       .has_eeprom   = 1,
+                       .has_tuner      = 1,
+                       .has_dvb        = 0,
+                       .has_zl10353    = 0,
+                       .has_eeprom     = 1,
+                       .has_remote     = 0,
+                       .has_input_comp = 0,
+                       .has_input_svid = 0,
                },
                .gpio = {
                        .tuner_reset    = TM6010_GPIO_0,
index a4c07e5..da3e51b 100644 (file)
@@ -1161,8 +1161,6 @@ int tm6000_set_standard(struct tm6000_core *dev, v4l2_std_id * norm)
                                rc = tm6000_load_std(dev, svideo_stds[i].common,
                                                     sizeof(svideo_stds[i].
                                                            common));
-                               tm6000_set_audio_std(dev, svideo_stds[i].audio_default_std);
-
                                goto ret;
                        }
                }
index b550340..c80a316 100644 (file)
@@ -1080,18 +1080,27 @@ static int vidioc_s_std (struct file *file, void *priv, v4l2_std_id *norm)
 static int vidioc_enum_input(struct file *file, void *priv,
                                struct v4l2_input *inp)
 {
+       struct tm6000_fh   *fh = priv;
+       struct tm6000_core *dev = fh->dev;
+
        switch (inp->index) {
        case TM6000_INPUT_TV:
                inp->type = V4L2_INPUT_TYPE_TUNER;
                strcpy(inp->name, "Television");
                break;
        case TM6000_INPUT_COMPOSITE:
-               inp->type = V4L2_INPUT_TYPE_CAMERA;
-               strcpy(inp->name, "Composite");
+               if (dev->caps.has_input_comp) {
+                       inp->type = V4L2_INPUT_TYPE_CAMERA;
+                       strcpy(inp->name, "Composite");
+               } else
+                       return -EINVAL;
                break;
        case TM6000_INPUT_SVIDEO:
-               inp->type = V4L2_INPUT_TYPE_CAMERA;
-               strcpy(inp->name, "S-Video");
+               if (dev->caps.has_input_svid) {
+                       inp->type = V4L2_INPUT_TYPE_CAMERA;
+                       strcpy(inp->name, "S-Video");
+               } else
+                       return -EINVAL;
                break;
        default:
                return -EINVAL;
index ccd120f..99ae50e 100644 (file)
@@ -129,6 +129,8 @@ struct tm6000_capabilities {
        unsigned int    has_zl10353:1;
        unsigned int    has_eeprom:1;
        unsigned int    has_remote:1;
+       unsigned int    has_input_comp:1;
+       unsigned int    has_input_svid:1;
 };
 
 struct tm6000_dvb {