Em Tue, 9 Oct 2012 19:01:03 -0300 Ezequiel Garcia <elezegarcia@xxxxxxxxx> escreveu: > 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@xxxxxxxxx> > --- > Hi Mauro, > > I'm sending this for inclusion in v3.7 second media pull request. > I realize it's very late, so I understand if you don't > want to pick it. > > drivers/media/usb/stk1160/stk1160-core.c | 15 +++++++++++---- > drivers/media/usb/stk1160/stk1160-v4l.c | 7 ++++++- > drivers/media/usb/stk1160/stk1160.h | 3 ++- > 3 files changed, 19 insertions(+), 6 deletions(-) > > diff --git a/drivers/media/usb/stk1160/stk1160-core.c b/drivers/media/usb/stk1160/stk1160-core.c > index b627408..34a26e0 100644 > --- a/drivers/media/usb/stk1160/stk1160-core.c > +++ b/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/drivers/media/usb/stk1160/stk1160-v4l.c b/drivers/media/usb/stk1160/stk1160-v4l.c > index fe6e857..6694f9e 100644 > --- a/drivers/media/usb/stk1160/stk1160-v4l.c > +++ b/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); > + Had you ever test this patch with the v4l2-compliance tool? It seems broken to me: this driver has just two inputs. So, it should return -EINVAL for all inputs after that, or otherwise userspace applications that query the inputs will loop forever! Regards, Mauro -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html