[media] tm6000: fix s-video input

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>
This commit is contained in:
Dmitri Belimov 2011-03-17 21:08:55 -03:00 коммит произвёл Mauro Carvalho Chehab
Родитель 812738e111
Коммит 2aefbc1acb
4 изменённых файлов: 43 добавлений и 24 удалений

Просмотреть файл

@ -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,

Просмотреть файл

@ -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;
}
}

Просмотреть файл

@ -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;

Просмотреть файл

@ -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 {