From 7f644b5cc3131aaedb9b63c19b0a2b428e634d83 Mon Sep 17 00:00:00 2001 From: Ezequiel Garcia Date: Tue, 9 Oct 2012 18:01:03 -0300 Subject: [PATCH] --- yaml --- r: 333854 b: refs/heads/master c: 56a960bf3fedc7dcf72ae072a64ffffe584e1f0e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/media/usb/stk1160/stk1160-core.c | 15 +++++++++++---- trunk/drivers/media/usb/stk1160/stk1160-v4l.c | 7 ++++++- trunk/drivers/media/usb/stk1160/stk1160.h | 3 ++- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 26b72f1fb42e..f0fdbe558eb7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d6d022e7382343b57184c83f5fea0532be240b98 +refs/heads/master: 56a960bf3fedc7dcf72ae072a64ffffe584e1f0e diff --git a/trunk/drivers/media/usb/stk1160/stk1160-core.c b/trunk/drivers/media/usb/stk1160/stk1160-core.c index b62740846061..34a26e0cfe77 100644 --- a/trunk/drivers/media/usb/stk1160/stk1160-core.c +++ b/trunk/drivers/media/usb/stk1160/stk1160-core.c @@ -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 */ diff --git a/trunk/drivers/media/usb/stk1160/stk1160-v4l.c b/trunk/drivers/media/usb/stk1160/stk1160-v4l.c index fe6e857969ca..6694f9e2ca57 100644 --- a/trunk/drivers/media/usb/stk1160/stk1160-v4l.c +++ b/trunk/drivers/media/usb/stk1160/stk1160-v4l.c @@ -419,7 +419,12 @@ static int vidioc_enum_input(struct file *file, void *priv, if (i->index > STK1160_MAX_INPUT) return -EINVAL; - sprintf(i->name, "Composite%d", i->index); + /* 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; diff --git a/trunk/drivers/media/usb/stk1160/stk1160.h b/trunk/drivers/media/usb/stk1160/stk1160.h index 3feba0033f98..68c8707d36ab 100644 --- a/trunk/drivers/media/usb/stk1160/stk1160.h +++ b/trunk/drivers/media/usb/stk1160/stk1160.h @@ -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