[media] stk1160: Add support for S-Video input

In order to fully replace easycap driver with stk1160,
it's also necessary to add S-Video support.
A similar patch backported for v3.2 kernel has been
tested by three different users.

Signed-off-by: Ezequiel Garcia <elezegarcia@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Ezequiel Garcia 2012-10-09 18:01:03 -03:00 коммит произвёл Mauro Carvalho Chehab
Родитель d6d022e738
Коммит 56a960bf3f
3 изменённых файлов: 19 добавлений и 6 удалений

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

@ -100,12 +100,21 @@ int stk1160_write_reg(struct stk1160 *dev, u16 reg, u16 value)
void stk1160_select_input(struct stk1160 *dev)
{
int route;
static const u8 gctrl[] = {
0x98, 0x90, 0x88, 0x80
0x98, 0x90, 0x88, 0x80, 0x98
};
if (dev->ctl_input < ARRAY_SIZE(gctrl))
if (dev->ctl_input == STK1160_SVIDEO_INPUT)
route = SAA7115_SVIDEO3;
else
route = SAA7115_COMPOSITE0;
if (dev->ctl_input < ARRAY_SIZE(gctrl)) {
v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_routing,
route, 0, 0);
stk1160_write_reg(dev, STK1160_GCTRL, gctrl[dev->ctl_input]);
}
}
/* TODO: We should break this into pieces */
@ -351,8 +360,6 @@ static int stk1160_probe(struct usb_interface *interface,
/* i2c reset saa711x */
v4l2_device_call_all(&dev->v4l2_dev, 0, core, reset, 0);
v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_routing,
0, 0, 0);
v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_stream, 0);
/* reset stk1160 to default values */

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

@ -419,7 +419,12 @@ static int vidioc_enum_input(struct file *file, void *priv,
if (i->index > STK1160_MAX_INPUT)
return -EINVAL;
/* S-Video special handling */
if (i->index == STK1160_SVIDEO_INPUT)
sprintf(i->name, "S-Video");
else
sprintf(i->name, "Composite%d", i->index);
i->type = V4L2_INPUT_TYPE_CAMERA;
i->std = dev->vdev.tvnorms;
return 0;

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

@ -46,7 +46,8 @@
#define STK1160_MIN_PKT_SIZE 3072
#define STK1160_MAX_INPUT 3
#define STK1160_MAX_INPUT 4
#define STK1160_SVIDEO_INPUT 4
#define STK1160_I2C_TIMEOUT 100