Re: [DVB] Digital Devices Cine CT V6 support
Hi, Using your latest development tree (hg clone http://linuxtv.org/hg/~endriss/media_build_experimental), I have made a small modification in ddbridge-core.c (see below) to make the new Cine CT V6 card detected by the ddbridge module. With this small patch, the card is now detected, but not the double C/T tuner onboard. This cannot work, as the cards requires different frontend drivers. Please try a fresh check-out from http://linuxtv.org/hg/~endriss/media_build_experimental The Cine CT v6 is supported now. Also, I was wondering why they put a male and a female RF connectors on the Cine CT V6 (maybe a loop-through?) where there are two female RF connectors on the DuoFlex CT card. The second connector of the Cine CT is the loop-through output. CU Oliver -- VDR Remote Plugin 0.4.0: http://www.escape-edv.de/endriss/vdr/ 4 MByte Mod: http://www.escape-edv.de/endriss/dvb-mem-mod/ Full-TS Mod: http://www.escape-edv.de/endriss/dvb-full-ts-mod/ -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [GIT PULL for v3.2] OMAP_VOUT: Few cleaups and feature addition
Hi Vaibhav, On Saturday 22 October 2011 14:06:24 hvaib...@ti.com wrote: Hi Mauro, The following changes since commit 35a912455ff5640dc410e91279b03e04045265b2: Mauro Carvalho Chehab (1): Merge branch 'v4l_for_linus' into staging/for_v3.2 are available in the git repository at: git://arago-project.org/git/people/vaibhav/ti-psp-omap-video.git for-linux-media Archit Taneja (5): OMAP_VOUT: Fix check in reqbuf for buf_size allocation OMAP_VOUT: CLEANUP: Remove redundant code from omap_vout_isr OMAP_VOUT: Fix VSYNC IRQ handling in omap_vout_isr OMAP_VOUT: Add support for DSI panels OMAP_VOUT: Increase MAX_DISPLAYS to a larger value What about http://patchwork.linuxtv.org/patch/299/ ? Do you plan to push it through your tree, or should I push it through mine ? -- Regards, Laurent Pinchart -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [GIT PULL for v3.2] OMAP_VOUT: Few cleaups and feature addition
-Original Message- From: Laurent Pinchart [mailto:laurent.pinch...@ideasonboard.com] Sent: Monday, October 24, 2011 12:53 PM To: Hiremath, Vaibhav Cc: linux-media@vger.kernel.org; mche...@redhat.com Subject: Re: [GIT PULL for v3.2] OMAP_VOUT: Few cleaups and feature addition Hi Vaibhav, On Saturday 22 October 2011 14:06:24 hvaib...@ti.com wrote: Hi Mauro, The following changes since commit 35a912455ff5640dc410e91279b03e04045265b2: Mauro Carvalho Chehab (1): Merge branch 'v4l_for_linus' into staging/for_v3.2 are available in the git repository at: git://arago-project.org/git/people/vaibhav/ti-psp-omap-video.git for-linux-media Archit Taneja (5): OMAP_VOUT: Fix check in reqbuf for buf_size allocation OMAP_VOUT: CLEANUP: Remove redundant code from omap_vout_isr OMAP_VOUT: Fix VSYNC IRQ handling in omap_vout_isr OMAP_VOUT: Add support for DSI panels OMAP_VOUT: Increase MAX_DISPLAYS to a larger value What about http://patchwork.linuxtv.org/patch/299/ ? Do you plan to push it through your tree, or should I push it through mine ? Oops, Missed it... Thanks for reminding me. If you are about to send pull request then go ahead and merge it with your patch-sets. OR I can also send another request for this patch alone. Thanks, Vaibhav -- Regards, Laurent Pinchart -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] v4l: mt9p031/mt9t001: Use i2c_smbus_{read|write}_word_swapped()
On 10/22/11 09:57, Laurent Pinchart wrote: The MT9P031 and MT9T001 sensors transfer 16-bit data on the I2C bus in swapped order. Let the I2C core handle byte order by using the i2c_smbus_{read|write}_word_swapped() functions. Signed-off-by: Laurent Pinchart laurent.pinch...@ideasonboard.com Acked-by: Jonathan Cameron ji...@cam.ac.uk --- drivers/media/video/mt9p031.c |5 ++--- drivers/media/video/mt9t001.c |5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/media/video/mt9p031.c b/drivers/media/video/mt9p031.c index 5cfa39f..aa01c4b 100644 --- a/drivers/media/video/mt9p031.c +++ b/drivers/media/video/mt9p031.c @@ -131,13 +131,12 @@ static struct mt9p031 *to_mt9p031(struct v4l2_subdev *sd) static int mt9p031_read(struct i2c_client *client, u8 reg) { - s32 data = i2c_smbus_read_word_data(client, reg); - return data 0 ? data : be16_to_cpu(data); + return i2c_smbus_read_word_swapped(client, reg); } static int mt9p031_write(struct i2c_client *client, u8 reg, u16 data) { - return i2c_smbus_write_word_data(client, reg, cpu_to_be16(data)); + return i2c_smbus_write_word_swapped(client, reg, data); } static int mt9p031_set_output_control(struct mt9p031 *mt9p031, u16 clear, diff --git a/drivers/media/video/mt9t001.c b/drivers/media/video/mt9t001.c index cac1416..2ea6a08 100644 --- a/drivers/media/video/mt9t001.c +++ b/drivers/media/video/mt9t001.c @@ -132,13 +132,12 @@ static inline struct mt9t001 *to_mt9t001(struct v4l2_subdev *sd) static int mt9t001_read(struct i2c_client *client, u8 reg) { - s32 data = i2c_smbus_read_word_data(client, reg); - return data 0 ? data : be16_to_cpu(data); + return i2c_smbus_read_word_swapped(client, reg); } static int mt9t001_write(struct i2c_client *client, u8 reg, u16 data) { - return i2c_smbus_write_word_data(client, reg, cpu_to_be16(data)); + return i2c_smbus_write_word_swapped(client, reg, data); } static int mt9t001_set_output_control(struct mt9t001 *mt9t001, u16 clear, -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [GIT PULL for v3.2] OMAP_VOUT: Few cleaups and feature addition
Hi Vaibhav, On Monday 24 October 2011 10:18:32 Hiremath, Vaibhav wrote: On Monday, October 24, 2011 12:53 PM Laurent Pinchart wrote: On Saturday 22 October 2011 14:06:24 hvaib...@ti.com wrote: Hi Mauro, The following changes since commit 35a912455ff5640dc410e91279b03e04045265b2: Mauro Carvalho Chehab (1): Merge branch 'v4l_for_linus' into staging/for_v3.2 are available in the git repository at: git://arago-project.org/git/people/vaibhav/ti-psp-omap-video.git for-linux-media Archit Taneja (5): OMAP_VOUT: Fix check in reqbuf for buf_size allocation OMAP_VOUT: CLEANUP: Remove redundant code from omap_vout_isr OMAP_VOUT: Fix VSYNC IRQ handling in omap_vout_isr OMAP_VOUT: Add support for DSI panels OMAP_VOUT: Increase MAX_DISPLAYS to a larger value What about http://patchwork.linuxtv.org/patch/299/ ? Do you plan to push it through your tree, or should I push it through mine ? Oops, Missed it... Thanks for reminding me. No worries. If you are about to send pull request then go ahead and merge it with your patch-sets. OR I can also send another request for this patch alone. I've got omap3-isp patches I'm about to send a pull request for, I'll add the omap_vout patch to the set. -- Regards, Laurent Pinchart -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [GIT PULL for v3.2] OMAP_VOUT: Few cleaups and feature addition
-Original Message- From: Laurent Pinchart [mailto:laurent.pinch...@ideasonboard.com] Sent: Monday, October 24, 2011 2:16 PM To: Hiremath, Vaibhav Cc: linux-media@vger.kernel.org; mche...@redhat.com Subject: Re: [GIT PULL for v3.2] OMAP_VOUT: Few cleaups and feature addition Hi Vaibhav, On Monday 24 October 2011 10:18:32 Hiremath, Vaibhav wrote: On Monday, October 24, 2011 12:53 PM Laurent Pinchart wrote: On Saturday 22 October 2011 14:06:24 hvaib...@ti.com wrote: Hi Mauro, The following changes since commit 35a912455ff5640dc410e91279b03e04045265b2: Mauro Carvalho Chehab (1): Merge branch 'v4l_for_linus' into staging/for_v3.2 are available in the git repository at: git://arago-project.org/git/people/vaibhav/ti-psp-omap-video.git for-linux-media Archit Taneja (5): OMAP_VOUT: Fix check in reqbuf for buf_size allocation OMAP_VOUT: CLEANUP: Remove redundant code from omap_vout_isr OMAP_VOUT: Fix VSYNC IRQ handling in omap_vout_isr OMAP_VOUT: Add support for DSI panels OMAP_VOUT: Increase MAX_DISPLAYS to a larger value What about http://patchwork.linuxtv.org/patch/299/ ? Do you plan to push it through your tree, or should I push it through mine ? Oops, Missed it... Thanks for reminding me. No worries. If you are about to send pull request then go ahead and merge it with your patch-sets. OR I can also send another request for this patch alone. I've got omap3-isp patches I'm about to send a pull request for, I'll add the omap_vout patch to the set. Thanks Regards, Vaibhav -- Regards, Laurent Pinchart -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: omap3isp: BT.656 support
On 2011-10-23 13:15, Boris Todorov wrote: On Thu, Oct 20, 2011 at 5:36 PM, Stefan Herbrechtsmeier sherb...@cit-ec.uni-bielefeld.de wrote: Am 20.10.2011 14:14, schrieb Boris Todorov: On Thu, Oct 20, 2011 at 12:03 PM, Stefan Herbrechtsmeier sherb...@cit-ec.uni-bielefeld.de wrote: Am 20.10.2011 08:56, schrieb Boris Todorov: On Wed, Oct 19, 2011 at 7:26 PM, Stefan Herbrechtsmeier sherb...@cit-ec.uni-bielefeld.de wrote: Am 18.10.2011 15:33, schrieb Boris Todorov: Hi I'm trying to run OMAP + TVP5151 in BT656 mode. I'm using omap3isp-omap3isp-yuv (git.linuxtv.org/pinchartl/media.git). Plus the following patches: TVP5151: https://github.com/ebutera/meta-igep/tree/testing-v2/recipes-kernel/linux/linux-3.0+3.1rc/tvp5150 The latest RFC patches for BT656 support: Enrico Butera (2): omap3isp: ispvideo: export isp_video_mbus_to_pix omap3isp: ispccdc: configure CCDC registers and add BT656 support Javier Martinez Canillas (1): omap3isp: ccdc: Add interlaced field mode to platform data I'm able to configure with media-ctl: media-ctl -v -r -l 'tvp5150 3-005c:0-OMAP3 ISP CCDC:0[1], OMAP3 ISP CCDC:1-OMAP3 ISP CCDC output:0[1]' media-ctl -v --set-format 'tvp5150 3-005c:0 [UYVY2X8 720x525]' media-ctl -v --set-format 'OMAP3 ISP CCDC:0 [UYVY2X8 720x525]' media-ctl -v --set-format 'OMAP3 ISP CCDC:1 [UYVY2X8 720x525]' But ./yavta -f UYVY -s 720x525 -n 4 --capture=4 -F /dev/video4 sleeps after ... Buffer 1 mapped at address 0x4021d000. length: 756000 offset: 1515520 Buffer 2 mapped at address 0x402d6000. length: 756000 offset: 2273280 Buffer 3 mapped at address 0x4038f000. Anyone with the same issue??? This happens with every other v4l test app I used. I had the same issue. Make sure that you disable the xclk when you remove your sensor driver. isp-platform_cb.set_xclk(isp, 0, ISP_XCLK_A) How exactly did you solved your problem? I don't see how XCLK in _remove will help. Pls explain. Sorry, I mean deactive / power off your sensor. Btw I'm feeding TVP with external clock (not from xtal pins) - omap.cam_xclk - tvp.clk_in I mean the cam_xclk. And I'm using kind of hack to get it: isp_probe() + isp_set_xclk(isp, 2700, 1); This is your problem. You should control the clock via board / platform callback from your driver. Example: http://www.mail-archive.com/linux-omap@vger.kernel.org/msg56627.html It is important that you set the clock to zero when your driver is not in use. The problem is connected to the use count of the ISP and some initialisation which only happen when the counter change between zero and one. tvp_probe() needs clock for i2c detected/config. tvp5150_s_power call happens when video starts streaming and if tvp is not configured - kernel panic. I use an other sensor and driver and this config the sensor during start stream. And what about the case when TVP is used with OSC on XTAL pins and CLK_IN is not used at all? Then your system will work, as you never call isp_set_xclk. The problem is not the clock, but how the isp driver works. It expects, that the sensor driver disable the cam_xclk, if the sensor is not used. Maybe I don't fully understand what is happening... or isp_set_xclk() use is messing up with ISP On my system I have the same issues as you if I don't set the cam_xclk to zero during stop streaming. I haven't investigate in the real cause for the issue. I only released, that this issue stick together with an always enabled cam_xclk. Regards, Stefan Thanks Stefan. Now I have IRQs and I'm able to get some image from TVP. How did you end up fixing this? I ask only to enlighten the list, not to embarrass you, as others and I have had no troubles making this go from the start. -- Gary Thomas | Consulting for the MLB Associates |Embedded world -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Add v4l2_subscribed_event_ops
Hi Hans et all, As discussed at the kernel summit. Note I have only compile tested this as I've no control event capable hardware with me (until I'm done with adding support for ctrl events to the UVC driver). Regards, Hans -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 1/3] v4l2-event: Deny subscribing with a type of V4L2_EVENT_ALL
Signed-off-by: Hans de Goede hdego...@redhat.com --- drivers/media/video/v4l2-event.c |3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/drivers/media/video/v4l2-event.c b/drivers/media/video/v4l2-event.c index 53b190c..9f56f18 100644 --- a/drivers/media/video/v4l2-event.c +++ b/drivers/media/video/v4l2-event.c @@ -215,6 +215,9 @@ int v4l2_event_subscribe(struct v4l2_fh *fh, unsigned long flags; unsigned i; + if (sub-type == V4L2_EVENT_ALL) + return -EINVAL; + if (elems 1) elems = 1; if (sub-type == V4L2_EVENT_CTRL) { -- 1.7.7 -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 3/3] v4l2-ctrls: Use v4l2_subscribed_event_ops
Signed-off-by: Hans de Goede hdego...@redhat.com --- drivers/media/video/ivtv/ivtv-ioctl.c |3 +- drivers/media/video/pwc/pwc-v4l.c |2 +- drivers/media/video/v4l2-ctrls.c | 56 +++-- drivers/media/video/v4l2-event.c | 39 --- drivers/media/video/vivi.c|2 +- include/media/v4l2-ctrls.h|5 +-- 6 files changed, 51 insertions(+), 56 deletions(-) diff --git a/drivers/media/video/ivtv/ivtv-ioctl.c b/drivers/media/video/ivtv/ivtv-ioctl.c index 9aec8a0..72fd74f 100644 --- a/drivers/media/video/ivtv/ivtv-ioctl.c +++ b/drivers/media/video/ivtv/ivtv-ioctl.c @@ -1455,8 +1455,9 @@ static int ivtv_subscribe_event(struct v4l2_fh *fh, struct v4l2_event_subscripti switch (sub-type) { case V4L2_EVENT_VSYNC: case V4L2_EVENT_EOS: - case V4L2_EVENT_CTRL: return v4l2_event_subscribe(fh, sub, 0, NULL); + case V4L2_EVENT_CTRL: + return v4l2_event_subscribe(fh, sub, 0, v4l2_ctrl_sub_ev_ops); default: return -EINVAL; } diff --git a/drivers/media/video/pwc/pwc-v4l.c b/drivers/media/video/pwc/pwc-v4l.c index 7f159bf..afc5b15 100644 --- a/drivers/media/video/pwc/pwc-v4l.c +++ b/drivers/media/video/pwc/pwc-v4l.c @@ -1138,7 +1138,7 @@ static int pwc_subscribe_event(struct v4l2_fh *fh, { switch (sub-type) { case V4L2_EVENT_CTRL: - return v4l2_event_subscribe(fh, sub, 0, NULL); + return v4l2_event_subscribe(fh, sub, 0, v4l2_ctrl_sub_ev_ops); default: return -EINVAL; } diff --git a/drivers/media/video/v4l2-ctrls.c b/drivers/media/video/v4l2-ctrls.c index 69e24f4..d69f6fa 100644 --- a/drivers/media/video/v4l2-ctrls.c +++ b/drivers/media/video/v4l2-ctrls.c @@ -2329,10 +2329,22 @@ int v4l2_ctrl_s_ctrl(struct v4l2_ctrl *ctrl, s32 val) } EXPORT_SYMBOL(v4l2_ctrl_s_ctrl); -void v4l2_ctrl_add_event(struct v4l2_ctrl *ctrl, - struct v4l2_subscribed_event *sev) +static int v4l2_ctrl_add_event(struct v4l2_subscribed_event *sev) { - v4l2_ctrl_lock(ctrl); + struct v4l2_ctrl_handler *hdl = sev-fh-ctrl_handler; + struct v4l2_ctrl_ref *ref; + struct v4l2_ctrl *ctrl; + int ret = 0; + + mutex_lock(hdl-lock); + + ref = find_ref(hdl, sev-id); + if (!ref) { + ret = -EINVAL; + goto leave; + } + ctrl = ref-ctrl; + list_add_tail(sev-node, ctrl-ev_subs); if (ctrl-type != V4L2_CTRL_TYPE_CTRL_CLASS (sev-flags V4L2_EVENT_SUB_FL_SEND_INITIAL)) { @@ -2344,15 +2356,39 @@ void v4l2_ctrl_add_event(struct v4l2_ctrl *ctrl, fill_event(ev, ctrl, changes); v4l2_event_queue_fh(sev-fh, ev); } - v4l2_ctrl_unlock(ctrl); +leave: + mutex_unlock(hdl-lock); + return ret; } -EXPORT_SYMBOL(v4l2_ctrl_add_event); -void v4l2_ctrl_del_event(struct v4l2_ctrl *ctrl, - struct v4l2_subscribed_event *sev) +static void v4l2_ctrl_del_event(struct v4l2_subscribed_event *sev) { - v4l2_ctrl_lock(ctrl); + struct v4l2_ctrl_handler *hdl = sev-fh-ctrl_handler; + + mutex_lock(hdl-lock); list_del(sev-node); - v4l2_ctrl_unlock(ctrl); + mutex_unlock(hdl-lock); } -EXPORT_SYMBOL(v4l2_ctrl_del_event); + +static void v4l2_ctrl_replace(struct v4l2_event *old, + const struct v4l2_event *new) +{ + u32 old_changes = old-u.ctrl.changes; + + old-u.ctrl = new-u.ctrl; + old-u.ctrl.changes |= old_changes; +} + +static void v4l2_ctrl_merge(const struct v4l2_event *old, + struct v4l2_event *new) +{ + new-u.ctrl.changes |= old-u.ctrl.changes; +} + +const struct v4l2_subscribed_event_ops v4l2_ctrl_sub_ev_ops = { + .add = v4l2_ctrl_add_event, + .del = v4l2_ctrl_del_event, + .replace = v4l2_ctrl_replace, + .merge = v4l2_ctrl_merge, +}; +EXPORT_SYMBOL(v4l2_ctrl_sub_ev_ops); diff --git a/drivers/media/video/v4l2-event.c b/drivers/media/video/v4l2-event.c index 7190c2b..57e1e45 100644 --- a/drivers/media/video/v4l2-event.c +++ b/drivers/media/video/v4l2-event.c @@ -25,7 +25,6 @@ #include media/v4l2-dev.h #include media/v4l2-fh.h #include media/v4l2-event.h -#include media/v4l2-ctrls.h #include linux/sched.h #include linux/slab.h @@ -194,30 +193,11 @@ int v4l2_event_pending(struct v4l2_fh *fh) } EXPORT_SYMBOL_GPL(v4l2_event_pending); -static void ctrls_replace(struct v4l2_event *old, const struct v4l2_event *new) -{ - u32 old_changes = old-u.ctrl.changes; - - old-u.ctrl = new-u.ctrl; - old-u.ctrl.changes |= old_changes; -} - -static void ctrls_merge(const struct v4l2_event *old, struct v4l2_event *new) -{ - new-u.ctrl.changes |= old-u.ctrl.changes; -} - -const struct v4l2_subscribed_event_ops ctrl_ops = { - .replace =
[PATCH 2/3] v4l2-event: Add v4l2_subscribed_event_ops
Just like with ctrl events, drivers may want to get called back on listener add / remove for other event types too. Rather then special casing all of this in subscribe / unsubscribe event it is better to use ops for this. Signed-off-by: Hans de Goede hdego...@redhat.com --- drivers/media/video/ivtv/ivtv-ioctl.c |2 +- drivers/media/video/omap3isp/ispccdc.c |2 +- drivers/media/video/omap3isp/ispstat.c |2 +- drivers/media/video/pwc/pwc-v4l.c |2 +- drivers/media/video/v4l2-event.c | 42 --- drivers/media/video/vivi.c |2 +- include/media/v4l2-event.h | 24 +- 7 files changed, 54 insertions(+), 22 deletions(-) diff --git a/drivers/media/video/ivtv/ivtv-ioctl.c b/drivers/media/video/ivtv/ivtv-ioctl.c index ecafa69..9aec8a0 100644 --- a/drivers/media/video/ivtv/ivtv-ioctl.c +++ b/drivers/media/video/ivtv/ivtv-ioctl.c @@ -1456,7 +1456,7 @@ static int ivtv_subscribe_event(struct v4l2_fh *fh, struct v4l2_event_subscripti case V4L2_EVENT_VSYNC: case V4L2_EVENT_EOS: case V4L2_EVENT_CTRL: - return v4l2_event_subscribe(fh, sub, 0); + return v4l2_event_subscribe(fh, sub, 0, NULL); default: return -EINVAL; } diff --git a/drivers/media/video/omap3isp/ispccdc.c b/drivers/media/video/omap3isp/ispccdc.c index 40b141c..b6da736 100644 --- a/drivers/media/video/omap3isp/ispccdc.c +++ b/drivers/media/video/omap3isp/ispccdc.c @@ -1700,7 +1700,7 @@ static int ccdc_subscribe_event(struct v4l2_subdev *sd, struct v4l2_fh *fh, if (sub-id != 0) return -EINVAL; - return v4l2_event_subscribe(fh, sub, OMAP3ISP_CCDC_NEVENTS); + return v4l2_event_subscribe(fh, sub, OMAP3ISP_CCDC_NEVENTS, NULL); } static int ccdc_unsubscribe_event(struct v4l2_subdev *sd, struct v4l2_fh *fh, diff --git a/drivers/media/video/omap3isp/ispstat.c b/drivers/media/video/omap3isp/ispstat.c index 8080659..4f337a2 100644 --- a/drivers/media/video/omap3isp/ispstat.c +++ b/drivers/media/video/omap3isp/ispstat.c @@ -1049,7 +1049,7 @@ int omap3isp_stat_subscribe_event(struct v4l2_subdev *subdev, if (sub-type != stat-event_type) return -EINVAL; - return v4l2_event_subscribe(fh, sub, STAT_NEVENTS); + return v4l2_event_subscribe(fh, sub, STAT_NEVENTS, NULL); } int omap3isp_stat_unsubscribe_event(struct v4l2_subdev *subdev, diff --git a/drivers/media/video/pwc/pwc-v4l.c b/drivers/media/video/pwc/pwc-v4l.c index 68e1323..7f159bf 100644 --- a/drivers/media/video/pwc/pwc-v4l.c +++ b/drivers/media/video/pwc/pwc-v4l.c @@ -1138,7 +1138,7 @@ static int pwc_subscribe_event(struct v4l2_fh *fh, { switch (sub-type) { case V4L2_EVENT_CTRL: - return v4l2_event_subscribe(fh, sub, 0); + return v4l2_event_subscribe(fh, sub, 0, NULL); default: return -EINVAL; } diff --git a/drivers/media/video/v4l2-event.c b/drivers/media/video/v4l2-event.c index 9f56f18..7190c2b 100644 --- a/drivers/media/video/v4l2-event.c +++ b/drivers/media/video/v4l2-event.c @@ -131,14 +131,14 @@ static void __v4l2_event_queue_fh(struct v4l2_fh *fh, const struct v4l2_event *e sev-first = sev_pos(sev, 1); fh-navailable--; if (sev-elems == 1) { - if (sev-replace) { - sev-replace(kev-event, ev); + if (sev-ops sev-ops-replace) { + sev-ops-replace(kev-event, ev); copy_payload = false; } - } else if (sev-merge) { + } else if (sev-ops sev-ops-merge) { struct v4l2_kevent *second_oldest = sev-events + sev_pos(sev, 0); - sev-merge(kev-event, second_oldest-event); + sev-ops-merge(kev-event, second_oldest-event); } } @@ -207,8 +207,14 @@ static void ctrls_merge(const struct v4l2_event *old, struct v4l2_event *new) new-u.ctrl.changes |= old-u.ctrl.changes; } +const struct v4l2_subscribed_event_ops ctrl_ops = { + .replace = ctrls_replace, + .merge = ctrls_merge, +}; + int v4l2_event_subscribe(struct v4l2_fh *fh, -struct v4l2_event_subscription *sub, unsigned elems) +struct v4l2_event_subscription *sub, unsigned elems, +const struct v4l2_subscribed_event_ops *ops) { struct v4l2_subscribed_event *sev, *found_ev; struct v4l2_ctrl *ctrl = NULL; @@ -236,9 +242,9 @@ int v4l2_event_subscribe(struct v4l2_fh *fh, sev-flags = sub-flags; sev-fh = fh; sev-elems = elems; + sev-ops = ops; if (ctrl) { - sev-replace = ctrls_replace; - sev-merge = ctrls_merge;
Re: omap3isp: BT.656 support
On Mon, Oct 24, 2011 at 12:47 PM, Gary Thomas g...@mlbassoc.com wrote: On 2011-10-23 13:15, Boris Todorov wrote: On Thu, Oct 20, 2011 at 5:36 PM, Stefan Herbrechtsmeier sherb...@cit-ec.uni-bielefeld.de wrote: Am 20.10.2011 14:14, schrieb Boris Todorov: On Thu, Oct 20, 2011 at 12:03 PM, Stefan Herbrechtsmeier sherb...@cit-ec.uni-bielefeld.de wrote: Am 20.10.2011 08:56, schrieb Boris Todorov: On Wed, Oct 19, 2011 at 7:26 PM, Stefan Herbrechtsmeier sherb...@cit-ec.uni-bielefeld.de wrote: Am 18.10.2011 15:33, schrieb Boris Todorov: Hi I'm trying to run OMAP + TVP5151 in BT656 mode. I'm using omap3isp-omap3isp-yuv (git.linuxtv.org/pinchartl/media.git). Plus the following patches: TVP5151: https://github.com/ebutera/meta-igep/tree/testing-v2/recipes-kernel/linux/linux-3.0+3.1rc/tvp5150 The latest RFC patches for BT656 support: Enrico Butera (2): omap3isp: ispvideo: export isp_video_mbus_to_pix omap3isp: ispccdc: configure CCDC registers and add BT656 support Javier Martinez Canillas (1): omap3isp: ccdc: Add interlaced field mode to platform data I'm able to configure with media-ctl: media-ctl -v -r -l 'tvp5150 3-005c:0-OMAP3 ISP CCDC:0[1], OMAP3 ISP CCDC:1-OMAP3 ISP CCDC output:0[1]' media-ctl -v --set-format 'tvp5150 3-005c:0 [UYVY2X8 720x525]' media-ctl -v --set-format 'OMAP3 ISP CCDC:0 [UYVY2X8 720x525]' media-ctl -v --set-format 'OMAP3 ISP CCDC:1 [UYVY2X8 720x525]' But ./yavta -f UYVY -s 720x525 -n 4 --capture=4 -F /dev/video4 sleeps after ... Buffer 1 mapped at address 0x4021d000. length: 756000 offset: 1515520 Buffer 2 mapped at address 0x402d6000. length: 756000 offset: 2273280 Buffer 3 mapped at address 0x4038f000. Anyone with the same issue??? This happens with every other v4l test app I used. I had the same issue. Make sure that you disable the xclk when you remove your sensor driver. isp-platform_cb.set_xclk(isp, 0, ISP_XCLK_A) How exactly did you solved your problem? I don't see how XCLK in _remove will help. Pls explain. Sorry, I mean deactive / power off your sensor. Btw I'm feeding TVP with external clock (not from xtal pins) - omap.cam_xclk - tvp.clk_in I mean the cam_xclk. And I'm using kind of hack to get it: isp_probe() + isp_set_xclk(isp, 2700, 1); This is your problem. You should control the clock via board / platform callback from your driver. Example: http://www.mail-archive.com/linux-omap@vger.kernel.org/msg56627.html It is important that you set the clock to zero when your driver is not in use. The problem is connected to the use count of the ISP and some initialisation which only happen when the counter change between zero and one. tvp_probe() needs clock for i2c detected/config. tvp5150_s_power call happens when video starts streaming and if tvp is not configured - kernel panic. I use an other sensor and driver and this config the sensor during start stream. And what about the case when TVP is used with OSC on XTAL pins and CLK_IN is not used at all? Then your system will work, as you never call isp_set_xclk. The problem is not the clock, but how the isp driver works. It expects, that the sensor driver disable the cam_xclk, if the sensor is not used. Maybe I don't fully understand what is happening... or isp_set_xclk() use is messing up with ISP On my system I have the same issues as you if I don't set the cam_xclk to zero during stop streaming. I haven't investigate in the real cause for the issue. I only released, that this issue stick together with an always enabled cam_xclk. Regards, Stefan Thanks Stefan. Now I have IRQs and I'm able to get some image from TVP. How did you end up fixing this? I ask only to enlighten the list, not to embarrass you, as others and I have had no troubles making this go from the start. I just followed Stefan's example - added .s_power callback to control xclk. -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Problem with TeVii S-470
Hello! I have this card http://www.linuxtv.org/wiki/index.php/TeVii_S470 I try to use it under Debian Squeeze, but I can't get channel data from it. I try to use drivers from 2.6.38, 2.6.39 kernels, s2-liplianin drivers with 2.6.32 kernel, last linux-media drivers with 2.6.32 With all drivers I can scan channels, but then a I'll try to lock channel I get some error in syslog (module cx23885 loaded with debug=1) cx23885[0]/0: [f373ec80/27] cx23885_buf_queue - append to active cx23885[0]/0: [f373ebc0/28] wakeup reg=477 buf=477 cx23885[0]/0: queue is not empty - append to active and finally a lot of cx23885[0]/0: [f42c4240/6] timeout - dma=0x03c5c000 cx23885[0]/0: [f42c4180/7] timeout - dma=0x3322b000 cx23885[0]/0: [f4374440/8] timeout - dma=0x33048000 cx23885[0]/0: [f4374140/9] timeout - dma=0x03d68000 In other machine this work under Windows. Under Linux I have same effects. It's problem in drivers or in card? That addition information need to resolve this problem? -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Problem with TeVii S-470
2011/10/24 Mike Mironov subscr...@darkmike.ru: Hello! I have this card http://www.linuxtv.org/wiki/index.php/TeVii_S470 I try to use it under Debian Squeeze, but I can't get channel data from it. I try to use drivers from 2.6.38, 2.6.39 kernels, s2-liplianin drivers with 2.6.32 kernel, last linux-media drivers with 2.6.32 With all drivers I can scan channels, but then a I'll try to lock channel I get some error in syslog (module cx23885 loaded with debug=1) cx23885[0]/0: [f373ec80/27] cx23885_buf_queue - append to active cx23885[0]/0: [f373ebc0/28] wakeup reg=477 buf=477 cx23885[0]/0: queue is not empty - append to active and finally a lot of cx23885[0]/0: [f42c4240/6] timeout - dma=0x03c5c000 cx23885[0]/0: [f42c4180/7] timeout - dma=0x3322b000 cx23885[0]/0: [f4374440/8] timeout - dma=0x33048000 cx23885[0]/0: [f4374140/9] timeout - dma=0x03d68000 In other machine this work under Windows. Under Linux I have same effects. It's problem in drivers or in card? That addition information need to resolve this problem? -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Hello Mike, I have same device on same OS, try this: mkdir /usr/local/src/dvbcd /usr/local/src/dvbwget http://tevii.com/100315_Beta_linux_tevii_ds3000.rarunrar x 100315_Beta_linux_tevii_ds3000.rarcp dvb-fe-ds3000.fw /lib/firmware/tar xjvf linux-tevii-ds3000.tar.bz2cd linux-tevii-ds3000make make install Regards. -- Josu Lazkano -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[GIT PATCHES FOR 3.2] add poll_requested_events() function
Since there have been no more comment on RFCv4 of this patch series (http://comments.gmane.org/gmane.linux.kernel/1196926), I'm posting this pull request for v3.2. I never received any acks or comments from Al Viro (or anyone else from linux-fsdevel for that matter), so I'm following Andrew's suggestion and I just go ahead with this. This series should be pulled in via the media git repository since the media drivers are the primary users of the new poll_requested_events() function. Regards, Hans The following changes since commit a63366b935456dd0984f237642f6d4001dcf8017: [media] mxl111sf: update demod_ops.info.name to MaxLinear MxL111SF DVB-T demodulator (2011-10-24 03:20:09 +0200) are available in the git repository at: ssh://linuxtv.org/git/hverkuil/media_tree.git pollv3 Hans Verkuil (6): poll: add poll_requested_events() function ivtv: only start streaming in poll() if polling for input. videobuf2: only start streaming in poll() if so requested by the poll mask. videobuf: only start streaming in poll() if so requested by the poll mask. videobuf2-core: also test for pending events. vivi: let vb2_poll handle events. drivers/media/video/ivtv/ivtv-fileops.c |6 ++- drivers/media/video/videobuf-core.c |3 +- drivers/media/video/videobuf2-core.c| 48 +- drivers/media/video/vivi.c |9 +- fs/eventpoll.c | 18 +-- fs/select.c | 38 +++- include/linux/poll.h| 13 - 7 files changed, 84 insertions(+), 51 deletions(-) -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [DVB] Digital Devices Cine CT V6 support
-Original Message- From: linux-media-ow...@vger.kernel.org [mailto:linux-media- ow...@vger.kernel.org] On Behalf Of Oliver Endriss Sent: lundi 24 octobre 2011 09:06 To: Sébastien RAILLARD (COEXSI) Cc: Linux Media Mailing List Subject: Re: [DVB] Digital Devices Cine CT V6 support Hi, Using your latest development tree (hg clone http://linuxtv.org/hg/~endriss/media_build_experimental), I have made a small modification in ddbridge-core.c (see below) to make the new Cine CT V6 card detected by the ddbridge module. With this small patch, the card is now detected, but not the double C/T tuner onboard. This cannot work, as the cards requires different frontend drivers. Please try a fresh check-out from http://linuxtv.org/hg/~endriss/media_build_experimental The Cine CT v6 is supported now. Thank you for the update, we'll test it soon, we're waiting for the new double-CI reader support. I've seen a new parameter ts_loop, can you explain how it's working? Is-it for sending the stream from the demodulator directly to the CAM reader? Also, I was wondering why they put a male and a female RF connectors on the Cine CT V6 (maybe a loop-through?) where there are two female RF connectors on the DuoFlex CT card. The second connector of the Cine CT is the loop-through output. Ok CU Oliver -- VDR Remote Plugin 0.4.0: http://www.escape-edv.de/endriss/vdr/ 4 MByte Mod: http://www.escape-edv.de/endriss/dvb-mem-mod/ Full-TS Mod: http://www.escape-edv.de/endriss/dvb-full-ts-mod/ -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[GIT PULL FOR v3.2] OMAP3 ISP and OMAP VOUT fixes
Hi Mauro, The following changes since commit 35a912455ff5640dc410e91279b03e04045265b2: Merge branch 'v4l_for_linus' into staging/for_v3.2 (2011-10-19 12:41:18 -0200) are available in the git repository at: git://linuxtv.org/pinchartl/media.git omap3isp-omap3isp-next Guennadi Liakhovetski (1): omap3isp: ccdc: remove redundant operation Laurent Pinchart (9): omap3isp: Move media_entity_cleanup() from unregister() to cleanup() omap3isp: Move *_init_entities() functions to the init/cleanup section omap3isp: Add missing mutex_destroy() calls omap3isp: Fix memory leaks in initialization error paths omap3isp: Report the ISP revision through the media controller API omap3isp: preview: Remove horizontal averager support omap3isp: preview: Rename min/max input/output sizes defines omap3isp: preview: Add crop support on the sink pad omap_vout: Add poll() support drivers/media/video/omap/omap_vout.c | 10 + drivers/media/video/omap3isp/isp.c |3 + drivers/media/video/omap3isp/ispccdc.c | 86 --- drivers/media/video/omap3isp/ispccp2.c | 125 + drivers/media/video/omap3isp/ispcsi2.c | 91 --- drivers/media/video/omap3isp/isph3a_aewb.c |2 +- drivers/media/video/omap3isp/isph3a_af.c |2 +- drivers/media/video/omap3isp/isphist.c |2 +- drivers/media/video/omap3isp/isppreview.c | 419 +-- drivers/media/video/omap3isp/isppreview.h |9 +- drivers/media/video/omap3isp/ispreg.h |3 - drivers/media/video/omap3isp/ispresizer.c | 104 drivers/media/video/omap3isp/ispstat.c | 52 ++-- drivers/media/video/omap3isp/ispstat.h |2 +- drivers/media/video/omap3isp/ispvideo.c| 11 +- drivers/media/video/omap3isp/ispvideo.h|1 + 16 files changed, 545 insertions(+), 377 deletions(-) -- Regards, Laurent Pinchart -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Problem with TeVii S-470
24.10.2011 15:29, Josu Lazkano пишет: 2011/10/24 Mike Mironovsubscr...@darkmike.ru: Hello! I have this card http://www.linuxtv.org/wiki/index.php/TeVii_S470 I try to use it under Debian Squeeze, but I can't get channel data from it. I try to use drivers from 2.6.38, 2.6.39 kernels, s2-liplianin drivers with 2.6.32 kernel, last linux-media drivers with 2.6.32 With all drivers I can scan channels, but then a I'll try to lock channel I get some error in syslog (module cx23885 loaded with debug=1) cx23885[0]/0: [f373ec80/27] cx23885_buf_queue - append to active cx23885[0]/0: [f373ebc0/28] wakeup reg=477 buf=477 cx23885[0]/0: queue is not empty - append to active and finally a lot of cx23885[0]/0: [f42c4240/6] timeout - dma=0x03c5c000 cx23885[0]/0: [f42c4180/7] timeout - dma=0x3322b000 cx23885[0]/0: [f4374440/8] timeout - dma=0x33048000 cx23885[0]/0: [f4374140/9] timeout - dma=0x03d68000 In other machine this work under Windows. Under Linux I have same effects. It's problem in drivers or in card? That addition information need to resolve this problem? Hello Mike, I have same device on same OS, try this: mkdir /usr/local/src/dvbcd /usr/local/src/dvbwget http://tevii.com/100315_Beta_linux_tevii_ds3000.rarunrar x 100315_Beta_linux_tevii_ds3000.rarcp dvb-fe-ds3000.fw /lib/firmware/tar xjvf linux-tevii-ds3000.tar.bz2cd linux-tevii-ds3000make make install Regards. I'll try use this drivers today, but for this devices drivers exist in kernel from 2.6.33. So it must work with in-kernel drivers. P.S. Firmware from this archive I put in /lib/firmware before all tests. $ md5sum /lib/firmware/dvb-fe-ds3000.fw a32d17910c4f370073f9346e71d34b80 /lib/firmware/dvb-fe-ds3000.fw -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Problem with TeVii S-470
2011/10/24 Mike Mironov subscr...@darkmike.ru: 24.10.2011 15:29, Josu Lazkano пишет: 2011/10/24 Mike Mironovsubscr...@darkmike.ru: Hello! I have this card http://www.linuxtv.org/wiki/index.php/TeVii_S470 I try to use it under Debian Squeeze, but I can't get channel data from it. I try to use drivers from 2.6.38, 2.6.39 kernels, s2-liplianin drivers with 2.6.32 kernel, last linux-media drivers with 2.6.32 With all drivers I can scan channels, but then a I'll try to lock channel I get some error in syslog (module cx23885 loaded with debug=1) cx23885[0]/0: [f373ec80/27] cx23885_buf_queue - append to active cx23885[0]/0: [f373ebc0/28] wakeup reg=477 buf=477 cx23885[0]/0: queue is not empty - append to active and finally a lot of cx23885[0]/0: [f42c4240/6] timeout - dma=0x03c5c000 cx23885[0]/0: [f42c4180/7] timeout - dma=0x3322b000 cx23885[0]/0: [f4374440/8] timeout - dma=0x33048000 cx23885[0]/0: [f4374140/9] timeout - dma=0x03d68000 In other machine this work under Windows. Under Linux I have same effects. It's problem in drivers or in card? That addition information need to resolve this problem? Hello Mike, I have same device on same OS, try this: mkdir /usr/local/src/dvbcd /usr/local/src/dvbwget http://tevii.com/100315_Beta_linux_tevii_ds3000.rarunrar x 100315_Beta_linux_tevii_ds3000.rarcp dvb-fe-ds3000.fw /lib/firmware/tar xjvf linux-tevii-ds3000.tar.bz2cd linux-tevii-ds3000make make install Regards. I'll try use this drivers today, but for this devices drivers exist in kernel from 2.6.33. So it must work with in-kernel drivers. P.S. Firmware from this archive I put in /lib/firmware before all tests. $ md5sum /lib/firmware/dvb-fe-ds3000.fw a32d17910c4f370073f9346e71d34b80 /lib/firmware/dvb-fe-ds3000.fw Hello again, actually, I am using this method for Tevii S660 and S470: apt-get install linux-headers-`uname -r` build-essential mkdir /usr/local/src/dvb cd /usr/local/src/dvb wget http://mercurial.intuxication.org/hg/s2-liplianin/archive/tip.zip unzip tip.zip cd s2-liplianin-0b7d3cc65161 make CONFIG_DVB_FIREDTV:=n make install Both methods works for me on a Debian Squeeze (2.6.32). Here more info: http://linuxtv.org/wiki/index.php/TeVii_S470 Regards. -- Josu Lazkano -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[GIT PULL FOR v3.2] uvcvideo fixes
Hi Mauro, The following changes since commit 35a912455ff5640dc410e91279b03e04045265b2: Merge branch 'v4l_for_linus' into staging/for_v3.2 (2011-10-19 12:41:18 -0200) are available in the git repository at: git://linuxtv.org/pinchartl/uvcvideo.git uvcvideo-next Hans de Goede (1): uvcvideo: GET_RES should only be checked for BITMAP type menu controls drivers/media/video/uvc/uvc_ctrl.c |6 -- 1 files changed, 4 insertions(+), 2 deletions(-) -- Regards, Laurent Pinchart -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Problem with TeVii S-470
24.10.2011 17:32, Josu Lazkano пишет: 2011/10/24 Mike Mironovsubscr...@darkmike.ru: 24.10.2011 15:29, Josu Lazkano пишет: 2011/10/24 Mike Mironovsubscr...@darkmike.ru: Hello! I have this card http://www.linuxtv.org/wiki/index.php/TeVii_S470 I try to use it under Debian Squeeze, but I can't get channel data from it. I try to use drivers from 2.6.38, 2.6.39 kernels, s2-liplianin drivers Hello again, actually, I am using this method for Tevii S660 and S470: apt-get install linux-headers-`uname -r` build-essential mkdir /usr/local/src/dvb cd /usr/local/src/dvb wget http://mercurial.intuxication.org/hg/s2-liplianin/archive/tip.zip unzip tip.zip cd s2-liplianin-0b7d3cc65161 make CONFIG_DVB_FIREDTV:=n make install Both methods works for me on a Debian Squeeze (2.6.32). Here more info: http://linuxtv.org/wiki/index.php/TeVii_S470 As your can see in quoted text I always try to use this drivers. Result is same. I'll always read WiKi link. I know that another users use this card without problems. I have good signal quality (88% signal and 79-80% snr). But in my 2 linux systems I can't get channel data. Scan work fine(!). -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 2/2] uvcvideo: Use videobuf2-vmalloc
Replace the current video buffers queue implementation with videobuf2-vmalloc. Signed-off-by: Laurent Pinchart laurent.pinch...@ideasonboard.com --- drivers/media/video/uvc/Kconfig |1 + drivers/media/video/uvc/uvc_queue.c | 556 +-- drivers/media/video/uvc/uvc_v4l2.c | 19 +- drivers/media/video/uvc/uvc_video.c |9 +- drivers/media/video/uvc/uvcvideo.h | 33 +-- 5 files changed, 161 insertions(+), 457 deletions(-) diff --git a/drivers/media/video/uvc/Kconfig b/drivers/media/video/uvc/Kconfig index 2956a76..6c197da 100644 --- a/drivers/media/video/uvc/Kconfig +++ b/drivers/media/video/uvc/Kconfig @@ -1,5 +1,6 @@ config USB_VIDEO_CLASS tristate USB Video Class (UVC) + select VIDEOBUF2_VMALLOC ---help--- Support for the USB Video Class (UVC). Currently only video input devices, such as webcams, are supported. diff --git a/drivers/media/video/uvc/uvc_queue.c b/drivers/media/video/uvc/uvc_queue.c index 0fbb04b..a5122a1 100644 --- a/drivers/media/video/uvc/uvc_queue.c +++ b/drivers/media/video/uvc/uvc_queue.c @@ -11,6 +11,7 @@ * */ +#include linux/atomic.h #include linux/kernel.h #include linux/mm.h #include linux/list.h @@ -19,7 +20,7 @@ #include linux/videodev2.h #include linux/vmalloc.h #include linux/wait.h -#include linux/atomic.h +#include media/videobuf2-vmalloc.h #include uvcvideo.h @@ -29,470 +30,199 @@ * Video queues is initialized by uvc_queue_init(). The function performs * basic initialization of the uvc_video_queue struct and never fails. * - * Video buffer allocation and freeing are performed by uvc_alloc_buffers and - * uvc_free_buffers respectively. The former acquires the video queue lock, - * while the later must be called with the lock held (so that allocation can - * free previously allocated buffers). Trying to free buffers that are mapped - * to user space will return -EBUSY. - * - * Video buffers are managed using two queues. However, unlike most USB video - * drivers that use an in queue and an out queue, we use a main queue to hold - * all queued buffers (both 'empty' and 'done' buffers), and an irq queue to - * hold empty buffers. This design (copied from video-buf) minimizes locking - * in interrupt, as only one queue is shared between interrupt and user - * contexts. - * - * Use cases - * - - * - * Unless stated otherwise, all operations that modify the irq buffers queue - * are protected by the irq spinlock. - * - * 1. The user queues the buffers, starts streaming and dequeues a buffer. - * - *The buffers are added to the main and irq queues. Both operations are - *protected by the queue lock, and the later is protected by the irq - *spinlock as well. - * - *The completion handler fetches a buffer from the irq queue and fills it - *with video data. If no buffer is available (irq queue empty), the handler - *returns immediately. - * - *When the buffer is full, the completion handler removes it from the irq - *queue, marks it as done (UVC_BUF_STATE_DONE) and wakes its wait queue. - *At that point, any process waiting on the buffer will be woken up. If a - *process tries to dequeue a buffer after it has been marked done, the - *dequeing will succeed immediately. - * - * 2. Buffers are queued, user is waiting on a buffer and the device gets - *disconnected. - * - *When the device is disconnected, the kernel calls the completion handler - *with an appropriate status code. The handler marks all buffers in the - *irq queue as being erroneous (UVC_BUF_STATE_ERROR) and wakes them up so - *that any process waiting on a buffer gets woken up. - * - *Waking up up the first buffer on the irq list is not enough, as the - *process waiting on the buffer might restart the dequeue operation - *immediately. - * + * Video buffers are managed by videobuf2. The driver uses a mutex to protect + * the videobuf2 queue operations by serializing calls to videobuf2 and a + * spinlock to protect the IRQ queue that holds the buffers to be processed by + * the driver. */ -void uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type, - int drop_corrupted) -{ - mutex_init(queue-mutex); - spin_lock_init(queue-irqlock); - INIT_LIST_HEAD(queue-mainqueue); - INIT_LIST_HEAD(queue-irqqueue); - queue-flags = drop_corrupted ? UVC_QUEUE_DROP_CORRUPTED : 0; - queue-type = type; -} - -/* - * Free the video buffers. - * - * This function must be called with the queue lock held. +/* - + * videobuf2 queue operations */ -static int __uvc_free_buffers(struct uvc_video_queue *queue) + +static int uvc_queue_setup(struct vb2_queue *vq, unsigned int *nbuffers, + unsigned int *nplanes, unsigned int sizes[], + void *alloc_ctxs[]) { -
cron job: media_tree daily build: WARNINGS
This message is generated daily by a cron job that builds media_tree for the kernels and architectures in the list below. Results of the daily build of media_tree: date:Mon Oct 24 19:00:19 CEST 2011 git hash:a63366b935456dd0984f237642f6d4001dcf8017 gcc version: i686-linux-gcc (GCC) 4.6.1 host hardware:x86_64 host os: 3.0-4.slh.7-amd64 linux-git-armv5: WARNINGS linux-git-armv5-davinci: WARNINGS linux-git-armv5-ixp: WARNINGS linux-git-armv5-omap2: WARNINGS linux-git-i686: WARNINGS linux-git-m32r: OK linux-git-mips: WARNINGS linux-git-powerpc64: WARNINGS linux-git-x86_64: WARNINGS linux-2.6.31.12-i686: WARNINGS linux-2.6.32.6-i686: WARNINGS linux-2.6.33-i686: WARNINGS linux-2.6.34-i686: WARNINGS linux-2.6.35.3-i686: WARNINGS linux-2.6.36-i686: WARNINGS linux-2.6.37-i686: WARNINGS linux-2.6.38.2-i686: WARNINGS linux-2.6.39.1-i686: WARNINGS linux-3.0-i686: WARNINGS linux-3.1-rc1-i686: WARNINGS linux-2.6.31.12-x86_64: WARNINGS linux-2.6.32.6-x86_64: WARNINGS linux-2.6.33-x86_64: WARNINGS linux-2.6.34-x86_64: WARNINGS linux-2.6.35.3-x86_64: WARNINGS linux-2.6.36-x86_64: WARNINGS linux-2.6.37-x86_64: WARNINGS linux-2.6.38.2-x86_64: WARNINGS linux-2.6.39.1-x86_64: WARNINGS linux-3.0-x86_64: WARNINGS linux-3.1-rc1-x86_64: WARNINGS spec-git: WARNINGS sparse: ERRORS Detailed results are available here: http://www.xs4all.nl/~hverkuil/logs/Monday.log Full logs are available here: http://www.xs4all.nl/~hverkuil/logs/Monday.tar.bz2 The V4L-DVB specification from this daily build is here: http://www.xs4all.nl/~hverkuil/spec/media.html -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [DVB] Digital Devices Cine CT V6 support
Sébastien RAILLARD (COEXSI) writes: I've seen a new parameter ts_loop, can you explain how it's working? Is-it for sending the stream from the demodulator directly to the CAM reader? No, it is mainly for testing. It declares one TAB as loopback, which means that the data output is directly connected to the input. For redirecting a stream through a CI see the redirect attribute. I don't know if my small redirect readme was included in the package I sent to Oliver. So, I attached it below. -Ralph Redirection of TS streams through CI modules is now supported through /sys/class/ddbridge/ddbridge0/redirect. It only works with cards based on the ddbridge PCIe bridge, not with nGene based cards. It is set up in such a way that you can write AB CD to a redirect attribute and data from input B of card A is then piped through port D (meaning TAB (D+1) which uses output D and input 2*D for CI io) of card C and then shows up in the demux device belonging to input B (input (B1) of TAB (B/2+1)) of card A. E.g.: echo 00 01 /sys/class/ddbridge/ddbridge0/redirect will pipe input 0 of card 0 through CI at port 1 (TAB 2) of card 0. Redirection should only be done right after loading the driver (or booting if the driver is built-in) and before using the devices in any way. -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 4/9] mm: MIGRATE_CMA migration type added
On Thu, Oct 06, 2011 at 03:54:44PM +0200, Marek Szyprowski wrote: The MIGRATE_CMA migration type has two main characteristics: (i) only movable pages can be allocated from MIGRATE_CMA pageblocks and (ii) page allocator will never change migration type of MIGRATE_CMA pageblocks. This guarantees that page in a MIGRATE_CMA page block can always be migrated somewhere else (unless there's no memory left in the system). On Tue, 18 Oct 2011 06:08:26 -0700, Mel Gorman m...@csn.ul.ie wrote: Or the count is premanently elevated by a device driver for some reason or if the page is backed by a filesystem with a broken or unusable migrate_page() function. This is unavoidable, I'm just pointing out that you can stil have migration failures, particularly if GFP_MOVABLE has been improperly used. CMA does not handle that well right now. I guess it's something to think about once the rest is nice and working. It is designed to be used with Contiguous Memory Allocator (CMA) for allocating big chunks (eg. 10MiB) of physically contiguous memory. Once driver requests contiguous memory, CMA will migrate pages from MIGRATE_CMA pageblocks. To minimise number of migrations, MIGRATE_CMA migration type is the last type tried when page allocator falls back to other migration types then requested. It would be preferable if you could figure out how to reuse the MIGRATE_RESERVE type for just the bitmap. I'm not entirely sure of what you mean here. Like MIGRATE_CMA, it does not change type except when min_free_kbytes changes. However, it is something that could be done in the future to keep the size of the pageblock bitmap where it is now. +enum { + MIGRATE_UNMOVABLE, + MIGRATE_RECLAIMABLE, + MIGRATE_MOVABLE, + MIGRATE_PCPTYPES, /* the number of types on the pcp lists */ + MIGRATE_RESERVE = MIGRATE_PCPTYPES, + /* +* MIGRATE_CMA migration type is designed to mimic the way +* ZONE_MOVABLE works. Only movable pages can be allocated +* from MIGRATE_CMA pageblocks and page allocator never +* implicitly change migration type of MIGRATE_CMA pageblock. +* +* The way to use it is to change migratetype of a range of +* pageblocks to MIGRATE_CMA which can be done by +* __free_pageblock_cma() function. What is important though +* is that a range of pageblocks must be aligned to +* MAX_ORDER_NR_PAGES should biggest page be bigger then +* a single pageblock. +*/ + MIGRATE_CMA, This does mean that MIGRATE_CMA also does not have a per-cpu list. I don't know if that matters to you but all allocations using MIGRATE_CMA will take the zone lock. This is sort of an artefact of my misunderstanding of pcp lists in the past. I'll have to re-evaluate the decision not to include CMA on pcp list. Still, I think that CMA not being on pcp lists should not be a problem for us. At least we can try and get CMA running and then consider adding CMA to pcp lists. I'm not sure this can be easily avoided because if there is a per-CPU list for MIGRATE_CMA, it might use a new cache line for it and incur a different set of performance problems. + MIGRATE_ISOLATE,/* can't allocate from here */ + MIGRATE_TYPES +}; diff --git a/mm/compaction.c b/mm/compaction.c index 97254e4..9cf6b2b 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -115,6 +115,16 @@ static bool suitable_migration_target(struct page *page) if (migratetype == MIGRATE_ISOLATE || migratetype == MIGRATE_RESERVE) return false; + /* Keep MIGRATE_CMA alone as well. */ + /* +* XXX Revisit. We currently cannot let compaction touch CMA +* pages since compaction insists on changing their migration +* type to MIGRATE_MOVABLE (see split_free_page() called from +* isolate_freepages_block() above). +*/ + if (is_migrate_cma(migratetype)) + return false; + This is another reason why CMA and compaction should be using almost identical code. It does mean that the compact_control may need to be renamed and get flags to control things like the setting of pageblock flags but it would be preferable to having two almost identical pieces of code. I've addressed it in my other mail where I've changed the split_free_page() to not touch CMA and ISOLATE pageblocks. I think that this change should make the above comment no longer accurate and the check unnecessary. /* If the page is a large free page, then allow migration */ if (PageBuddy(page) page_order(page) = pageblock_order) return true; @@ -940,12 +963,12 @@ __rmqueue_fallback(struct zone *zone, int order, int start_migratetype) /* Find the largest possible block of pages in the other list */ for (current_order = MAX_ORDER-1; current_order = order; --current_order) { -
Re: Reqbufs(0) need to release queued_list
On Mon, 24 Oct 2011, Angela Wan wrote: Hi, As I have used videobuf2+soc_camera architecture on my camera driver. I find a problem when I use Reqbuf(0), which only release buffer, but not clear queued_list. Indeed, looks like vb2_reqbufs(p-count == 0) fails to clean up the queue? Thanks Guennadi Problem description: That is if upper layer uses qbuf then reqbuf0 directly, not having stream on/dqbuf/off, then next time when streamon, videobuf2 could still have the buffer from queued_list which having the buffer released in privious reqbuf0, and the camera driver could access the buffer already freed. The steps that could cause problem for USERPTR: Qbuf Qbuf Reqbuf 0 Reqbuf 20 Qbuf Qbuf Streamon (queued_list still has the buffer already freed in the previous reqbuf0) .buf_queue (from camera driver, could access the buffer already freed) My question is if we could use __vb2_queue_release which calls __vb2_queue_cancle(clear queue_list) and __vb2_queue_free(release buffer) in Reqbuf(0), while not only use __vb2_queue_free. Thank you Angela Wan Best Regards -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/ -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 6/9] drivers: add Contiguous Memory Allocator
On Thu, Oct 06, 2011 at 03:54:46PM +0200, Marek Szyprowski wrote: +static unsigned long __init __cma_early_get_total_pages(void) +{ + struct memblock_region *reg; + unsigned long total_pages = 0; + + /* +* We cannot use memblock_phys_mem_size() here, because +* memblock_analyze() has not been called yet. +*/ + for_each_memblock(memory, reg) + total_pages += memblock_region_memory_end_pfn(reg) - + memblock_region_memory_base_pfn(reg); + return total_pages; +} + On Tue, 18 Oct 2011 06:43:21 -0700, Mel Gorman m...@csn.ul.ie wrote: Is this being called too early yet? What prevents you seeing up the CMA regions after the page allocator is brought up for example? I understand that there is a need for the memory to be coherent so maybe that is the obstacle. Another reason is that we want to be sure that we can get given range of pages. After page allocator is set-up, someone could allocate a non-movable page from the range that interests us and that wouldn't be nice for us. +struct page *dma_alloc_from_contiguous(struct device *dev, int count, + unsigned int align) +{ + struct cma *cma = get_dev_cma_area(dev); + unsigned long pfn, pageno; + int ret; + + if (!cma) + return NULL; + + if (align CONFIG_CMA_ALIGNMENT) + align = CONFIG_CMA_ALIGNMENT; + + pr_debug(%s(cma %p, count %d, align %d)\n, __func__, (void *)cma, +count, align); + + if (!count) + return NULL; + + mutex_lock(cma_mutex); + + pageno = bitmap_find_next_zero_area(cma-bitmap, cma-count, 0, count, + (1 align) - 1); + if (pageno = cma-count) { + ret = -ENOMEM; + goto error; + } + bitmap_set(cma-bitmap, pageno, count); + + pfn = cma-base_pfn + pageno; + ret = alloc_contig_range(pfn, pfn + count, 0, MIGRATE_CMA); + if (ret) + goto free; + If alloc_contig_range returns failure, the bitmap is still set. It will never be freed so now the area cannot be used for CMA allocations any more. bitmap is cleared at the “free:” label. + mutex_unlock(cma_mutex); + + pr_debug(%s(): returned %p\n, __func__, pfn_to_page(pfn)); + return pfn_to_page(pfn); +free: + bitmap_clear(cma-bitmap, pageno, count); +error: + mutex_unlock(cma_mutex); + return NULL; +} +int dma_release_from_contiguous(struct device *dev, struct page *pages, + int count) +{ + struct cma *cma = get_dev_cma_area(dev); + unsigned long pfn; + + if (!cma || !pages) + return 0; + + pr_debug(%s(page %p)\n, __func__, (void *)pages); + + pfn = page_to_pfn(pages); + + if (pfn cma-base_pfn || pfn = cma-base_pfn + cma-count) + return 0; + + mutex_lock(cma_mutex); + + bitmap_clear(cma-bitmap, pfn - cma-base_pfn, count); + free_contig_pages(pfn, count); + + mutex_unlock(cma_mutex); It feels like the mutex could be a lot lighter here. If the bitmap is protected by a spinlock, it would only need to be held while the bitmap was being cleared. free the contig pages outside the spinlock and clear the bitmap afterwards. It's not particularly important as the scalability of CMA is not something to be concerned with at this point. Mutex is used also to protect the core operations, ie. isolating pages and such. This is because two CMA calls may want to work on the same pageblock and we have to prevent that from happening. We could add the spinlock for protecting the bitmap but we will still need mutex for other uses. -- Best regards, _ _ .o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o ..o | Computer Science, Michał “mina86” Nazarewicz(o o) ooo +email/xmpp: m...@google.com--ooO--(_)--Ooo-- -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Reqbufs(0) need to release queued_list
Hello, On 2011-10-24 05:25, Angela Wan wrote: As I have used videobuf2+soc_camera architecture on my camera driver. I find a problem when I use Reqbuf(0), which only release buffer, but not clear queued_list. Thanks for pointing this bug. I will post a fix ASAP. Best regards -- Marek Szyprowski Samsung Poland RD Center -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [DVB] Digital Devices Cine CT V6 support
-Original Message- From: Ralph Metzler [mailto:r...@metzlerbros.de] Sent: lundi 24 octobre 2011 20:31 To: S é bastien RAILLARD (COEXSI) Cc: 'Linux Media Mailing List' Subject: RE: [DVB] Digital Devices Cine CT V6 support Sébastien RAILLARD (COEXSI) writes: I've seen a new parameter ts_loop, can you explain how it's working? Is-it for sending the stream from the demodulator directly to the CAM reader? No, it is mainly for testing. It declares one TAB as loopback, which means that the data output is directly connected to the input. Ok For redirecting a stream through a CI see the redirect attribute. I don't know if my small redirect readme was included in the package I sent to Oliver. So, I attached it below. -Ralph Redirection of TS streams through CI modules is now supported through /sys/class/ddbridge/ddbridge0/redirect. It only works with cards based on the ddbridge PCIe bridge, not with nGene based cards. It is set up in such a way that you can write AB CD to a redirect attribute and data from input B of card A is then piped through port D (meaning TAB (D+1) which uses output D and input 2*D for CI io) of card C and then shows up in the demux device belonging to input B (input (B1) of TAB (B/2+1)) of card A. Great feature, thanks! E.g.: echo 00 01 /sys/class/ddbridge/ddbridge0/redirect will pipe input 0 of card 0 through CI at port 1 (TAB 2) of card 0. Redirection should only be done right after loading the driver (or booting if the driver is built-in) and before using the devices in any way. -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
media0 not showing up on beagleboard-xm
I'm using oe-core to build the 3.0.7+ kernel, which runs fine on my beagleboard-xm. I'm interested in the media controller framework, which I believe is in this kernel. I expected there to be a /dev/media0, but it is not there. I do see Linux media interface: v0.10 in my dmesg log, so I know media_devnode_init() is being called. Even without a sensor connected and camera defined, I should still get a media0 which represents the ISP, correct? I do have CONFIG_VIDEO_OMAP3=y in my kernel config. The only reference in the log that I see related to the isp is: omap-iommu omap-iommu.0: isp registered It looks like the kernel I'm using doesn't have support for the camera= cmdline option, so hopefully the presence of the camera is not required to kick things off. Thanks, Chris -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: changed em28xx-cards-c; Plextor ConvertX AV100U now works!
Hello, I'd like to confirm that the steps as posted by Don Kramer as per: http://www.mail-archive.com/linux-media@vger.kernel.org/msg19329.html specifically: adding this code to em28xx-cards.c (with the latest version of v4l media_build git repo) { USB_DEVICE(0x093b, 0xa003), .driver_info = EM2820_BOARD_PINNACLE_DVC_90 }, /* Plextor Corp. ConvertX AV100U A/V Capture Audio */ Has allowed me to record video with my Plextor AV100U video to USB device. I was successfully able to get video from the S-Video input and save as a mov file using streamer ala: streamer -c /dev/video0 -r30 -s640x480 -t 0:30 -o temp.mov Mr. Kramer, I'd like to thank you for posting your solution! $ uname -ar Linux seraphim 2.6.38-12-generic #51-Ubuntu SMP Wed Sep 28 14:27:32 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description:Ubuntu 11.04 Release:11.04 Codename: natty (Also, I found that VLC was kind of glitchy, I suspect it is selecting PAL when I am NTSC, PAL will get you a greyscale image with a big green block underneath it when I select that using tvtime) I haven't tested audio recording though, however, streamer seems to allow a number of options, I suspect it might automatically select the audio inputs from the device but I haven't tested that theory, and if not, there is the audio in I can hack together ;) The video is the biggest thing in my opinion. Is there a way I we can get this added to v4l? It's like 2 lines at most. Thanks, -Chris -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html