#
f0e38230 |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: move capture state tracking fields from struct em28xx to struct v4l2 Move some temporary capture tracking date to the em28xx_v4l2 struct, as those info are used only by e
[media] em28xx: move capture state tracking fields from struct em28xx to struct v4l2 Move some temporary capture tracking date to the em28xx_v4l2 struct, as those info are used only by em28xx v4l2 submodule. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
d7dc18da |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: move sensor parameter fields from struct em28xx to struct v4l2 Move camera sensor resolution and xtal out of em28xx common struct, as thore are used only by the em28xx v4
[media] em28xx: move sensor parameter fields from struct em28xx to struct v4l2 Move camera sensor resolution and xtal out of em28xx common struct, as thore are used only by the em28xx v4l2 submodule. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
58159171 |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: move progressive/interlaced fields from struct em28xx to struct v4l2 The video progressive data fields belong to analog TV. Move them out of the common em28xx struct.
[media] em28xx: move progressive/interlaced fields from struct em28xx to struct v4l2 The video progressive data fields belong to analog TV. Move them out of the common em28xx struct. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
06e20672 |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: move struct em28xx_fmt *format from struct em28xx to struct v4l2 The analog format struct belongs to analog TV. Move it out of the common em28xx struct. Signed-o
[media] em28xx: move struct em28xx_fmt *format from struct em28xx to struct v4l2 The analog format struct belongs to analog TV. Move it out of the common em28xx struct. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
52faaf78 |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: move TV norm from struct em28xx to struct v4l2 TV norm is specific to analog TV reception. move it out of the common em28xx struct. Signed-off-by: Frank Schäfer
[media] em28xx: move TV norm from struct em28xx to struct v4l2 TV norm is specific to analog TV reception. move it out of the common em28xx struct. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
9297285e |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: move vinmode and vinctrl data from struct em28xx to struct v4l2 The video input mode and control data also belong only to the analog side. move them to struct em28xx_v4l.
[media] em28xx: move vinmode and vinctrl data from struct em28xx to struct v4l2 The video input mode and control data also belong only to the analog side. move them to struct em28xx_v4l. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
753aee77 |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: move v4l2 frame resolutions and scale data from struct em28xx to struct v4l2 The em28xx scaler data are used only for analog video. Move them to struct em28xx_v4l2.
[media] em28xx: move v4l2 frame resolutions and scale data from struct em28xx to struct v4l2 The em28xx scaler data are used only for analog video. Move them to struct em28xx_v4l2. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
27a36df6 |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: move videobuf2 related data from struct em28xx to struct v4l2 The video and VBI-specific VB2 queue and mutexes are used only by the v4l2 sub-driver. Move them to the V4L2
[media] em28xx: move videobuf2 related data from struct em28xx to struct v4l2 The video and VBI-specific VB2 queue and mutexes are used only by the v4l2 sub-driver. Move them to the V4L2 struct, preventing wasting memory if this sub-driver is not used. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
ef74a0b9 |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: move video_device structs from struct em28xx to struct v4l2 There are 3 struct video_device at the em28xx common struct, for video, VBI and radio. They all are used only
[media] em28xx: move video_device structs from struct em28xx to struct v4l2 There are 3 struct video_device at the em28xx common struct, for video, VBI and radio. They all are used only by the V4L2 driver. So, move them to the v4l2-specific struct. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
2c52a2fc |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: move struct v4l2_clk *clk from struct em28xx to struct v4l2 The current clock definition applies only to the V4L2 side of the driver. Move its struct pointer to the v4l2_
[media] em28xx: move struct v4l2_clk *clk from struct em28xx to struct v4l2 The current clock definition applies only to the V4L2 side of the driver. Move its struct pointer to the v4l2_dev, where it belongs. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
abc1308f |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: move struct v4l2_ctrl_handler ctrl_handler from struct em28xx to struct v4l2 Controls are only applicable to V4L2 module. Move the corresponding data structs to the prope
[media] em28xx: move struct v4l2_ctrl_handler ctrl_handler from struct em28xx to struct v4l2 Controls are only applicable to V4L2 module. Move the corresponding data structs to the proper place. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
95d2608b |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: start moving em28xx-v4l specific data to its own struct That reduces a little bit the memory footprint when em28xx-video is not loaded. Signed-off-by: Frank Schä
[media] em28xx: start moving em28xx-v4l specific data to its own struct That reduces a little bit the memory footprint when em28xx-video is not loaded. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
ad298055 |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx-video: simplify usage of the pointer to struct v4l2_ctrl_handler in em28xx_v4l2_init() The local var hdl is already pointing to &dev->ctrl_handler. Use it, instead of dere
[media] em28xx-video: simplify usage of the pointer to struct v4l2_ctrl_handler in em28xx_v4l2_init() The local var hdl is already pointing to &dev->ctrl_handler. Use it, instead of dereferencing it all the time. Code cleanup. No functional changes. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
25c61e4c |
| 22-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: move norm_maxw() and norm_maxh() from em28xx.h to em28xx-video.c Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cis
[media] em28xx: move norm_maxw() and norm_maxh() from em28xx.h to em28xx-video.c Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
cba8e9b3 |
| 24-Mar-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: remove function em28xx_compression_disable() and its call em28xx_compression_disable() is a single line function which is called only one time and this call also isn't ne
[media] em28xx: remove function em28xx_compression_disable() and its call em28xx_compression_disable() is a single line function which is called only one time and this call also isn't needed. Register 0x26 is always configured as part of the scaler configuration, which in turn is always done when the resolution changes. And the initial resolution setting is applied at first device open. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
e37559b2 |
| 17-Apr-2014 |
Hans Verkuil <hans.verkuil@cisco.com> |
[media] vb2: stop_streaming should return void The vb2 core ignores any return code from the stop_streaming op. And there really isn't anything it can do anyway in case of an error.
[media] vb2: stop_streaming should return void The vb2 core ignores any return code from the stop_streaming op. And there really isn't anything it can do anyway in case of an error. So change the return type to void and update any drivers that implement it. The int return gave drivers the idea that this operation could actually fail, but that's really not the case. The pwc amd sdr-msi3101 drivers both had this construction: if (mutex_lock_interruptible(&s->v4l2_lock)) return -ERESTARTSYS; This has been updated to just call mutex_lock(). The stop_streaming op expects this to really stop streaming and I very much doubt this will work reliably if stop_streaming just returns without really stopping the DMA. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Acked-by: Pawel Osciak <pawel@osciak.com> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
Revision tags: v3.14-rc7, v3.14-rc6 |
|
#
47677e51 |
| 05-Mar-2014 |
Mauro Carvalho Chehab <m.chehab@samsung.com> |
[media] em28xx: Only deallocate struct em28xx after finishing all extensions We can't free struct em28xx while one of the extensions is still using it. So, add a kref() to contr
[media] em28xx: Only deallocate struct em28xx after finishing all extensions We can't free struct em28xx while one of the extensions is still using it. So, add a kref() to control it, freeing it only after the extensions fini calls. Reviewed-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
Revision tags: v3.14-rc5 |
|
#
ade48681 |
| 25-Feb-2014 |
Sakari Ailus <sakari.ailus@iki.fi> |
[media] v4l: Rename vb2_queue.timestamp_type as timestamp_flags The timestamp_type field used to contain only the timestamp type. Soon it will be used for timestamp source flags as well.
[media] v4l: Rename vb2_queue.timestamp_type as timestamp_flags The timestamp_type field used to contain only the timestamp type. Soon it will be used for timestamp source flags as well. Rename the field accordingly. [m.chehab@samsung.com: do the change also to drivers/staging/media and at s2255] Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi> Acked-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
Revision tags: v3.14-rc4 |
|
#
a61f6811 |
| 21-Feb-2014 |
Shuah Khan <shuah.kh@samsung.com> |
[media] em28xx-video: implement em28xx_ops: suspend/resume hooks Implement em28xx_ops: suspend/resume hooks. em28xx usb driver will invoke em28xx_ops: suspend and resume hooks for all it
[media] em28xx-video: implement em28xx_ops: suspend/resume hooks Implement em28xx_ops: suspend/resume hooks. em28xx usb driver will invoke em28xx_ops: suspend and resume hooks for all its extensions from its suspend() and resume() interfaces. Signed-off-by: Shuah Khan <shuah.kh@samsung.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
Revision tags: v3.14-rc3, v3.14-rc2, v3.14-rc1, v3.13 |
|
#
d86bc65a |
| 17-Jan-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx-v4l: do not call em28xx_init_camera() if the device has no sensor This avoids the unnecessary temporary registration of a dummy V4L2 clock. Signed-off-by: Frank Schäf
[media] em28xx-v4l: do not call em28xx_init_camera() if the device has no sensor This avoids the unnecessary temporary registration of a dummy V4L2 clock. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
103f18a2 |
| 17-Jan-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx-video: do not unregister the v4l2 dummy clock before v4l2_device_unregister() has been called Otherwiese the core refuses to unregister the clock and the following warning
[media] em28xx-video: do not unregister the v4l2 dummy clock before v4l2_device_unregister() has been called Otherwiese the core refuses to unregister the clock and the following warning appears in the system log: "WARNING: ... at drivers/media/v4l2-core/v4l2-clk.c:231 v4l2_clk_unregister+0x8a/0x90 [videodev]() v4l2_clk_unregister(): Refusing to unregister ref-counted 11-0030:mclk clock!" Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
961717b4 |
| 13-Jan-2014 |
Frank Schaefer <fschaefer.oss@googlemail.com> |
[media] em28xx: fix usb alternate setting for analog and digital video endpoints > 0 The current code assumes that the analog + digital video endpoints are always at interface number 0 w
[media] em28xx: fix usb alternate setting for analog and digital video endpoints > 0 The current code assumes that the analog + digital video endpoints are always at interface number 0 when changing the alternate setting. This seems to work fine for most existing devices. However, at least the SpeedLink VAD Laplace webcam has the video endpoint on interface number 3 (which fortunately doesn't cause any trouble because ist uses bulk transfers only). We already consider the actual interface number for audio endpoints, so rename the the audio_ifnum variable and use it for all device types. Also get get rid of a pointless (ifnum < 0) in em28xx-audio. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
Revision tags: v3.13-rc8 |
|
#
8068eb88 |
| 07-Jan-2014 |
Fengguang Wu <fengguang.wu@intel.com> |
[media] em28xx: make 'em28xx_ctrl_ops' static sparse warnings: (new ones prefixed by >>) >> drivers/media/usb/em28xx/em28xx-video.c:1151:28: sparse: symbol 'em28xx_ctrl_ops' was not
[media] em28xx: make 'em28xx_ctrl_ops' static sparse warnings: (new ones prefixed by >>) >> drivers/media/usb/em28xx/em28xx-video.c:1151:28: sparse: symbol 'em28xx_ctrl_ops' was not declared. Should it be static? Signed-off-by: Fengguang Wu <fengguang.wu@intel.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
ebbfbc20 |
| 12-Jan-2014 |
Mauro Carvalho Chehab <m.chehab@samsung.com> |
[media] em28xx: push mutex down to extensions on .fini callback Avoid circular mutex lock by pushing the dev->lock to the .fini callback on each extension. As em28xx-dvb, em28xx
[media] em28xx: push mutex down to extensions on .fini callback Avoid circular mutex lock by pushing the dev->lock to the .fini callback on each extension. As em28xx-dvb, em28xx-alsa and em28xx-rc have their own data structures, and don't touch at the common structure during .fini, only em28xx-v4l needs to be locked. [ 90.994317] ====================================================== [ 90.994356] [ INFO: possible circular locking dependency detected ] [ 90.994395] 3.13.0-rc1+ #24 Not tainted [ 90.994427] ------------------------------------------------------- [ 90.994458] khubd/54 is trying to acquire lock: [ 90.994490] (&card->controls_rwsem){++++.+}, at: [<ffffffffa0177b08>] snd_ctl_dev_free+0x28/0x60 [snd] [ 90.994656] [ 90.994656] but task is already holding lock: [ 90.994688] (&dev->lock){+.+.+.}, at: [<ffffffffa040db81>] em28xx_close_extension+0x31/0x90 [em28xx] [ 90.994843] [ 90.994843] which lock already depends on the new lock. [ 90.994843] [ 90.994874] [ 90.994874] the existing dependency chain (in reverse order) is: [ 90.994905] -> #1 (&dev->lock){+.+.+.}: [ 90.995057] [<ffffffff810b8fa3>] __lock_acquire+0xb43/0x1330 [ 90.995121] [<ffffffff810b9f82>] lock_acquire+0xa2/0x120 [ 90.995182] [<ffffffff816a5b6c>] mutex_lock_nested+0x5c/0x3c0 [ 90.995245] [<ffffffffa0422cca>] em28xx_vol_put_mute+0x1ba/0x1d0 [em28xx_alsa] [ 90.995309] [<ffffffffa017813d>] snd_ctl_elem_write+0xfd/0x140 [snd] [ 90.995376] [<ffffffffa01791c2>] snd_ctl_ioctl+0xe2/0x810 [snd] [ 90.995442] [<ffffffff811db8b0>] do_vfs_ioctl+0x300/0x520 [ 90.995504] [<ffffffff811dbb51>] SyS_ioctl+0x81/0xa0 [ 90.995568] [<ffffffff816b1929>] system_call_fastpath+0x16/0x1b [ 90.995630] -> #0 (&card->controls_rwsem){++++.+}: [ 90.995780] [<ffffffff810b7a47>] check_prevs_add+0x947/0x950 [ 90.995841] [<ffffffff810b8fa3>] __lock_acquire+0xb43/0x1330 [ 90.995901] [<ffffffff810b9f82>] lock_acquire+0xa2/0x120 [ 90.995962] [<ffffffff816a762b>] down_write+0x3b/0xa0 [ 90.996022] [<ffffffffa0177b08>] snd_ctl_dev_free+0x28/0x60 [snd] [ 90.996088] [<ffffffffa017a255>] snd_device_free+0x65/0x140 [snd] [ 90.996154] [<ffffffffa017a751>] snd_device_free_all+0x61/0xa0 [snd] [ 90.996219] [<ffffffffa0173af4>] snd_card_do_free+0x14/0x130 [snd] [ 90.996283] [<ffffffffa0173f14>] snd_card_free+0x84/0x90 [snd] [ 90.996349] [<ffffffffa0423397>] em28xx_audio_fini+0x97/0xb0 [em28xx_alsa] [ 90.996411] [<ffffffffa040dba6>] em28xx_close_extension+0x56/0x90 [em28xx] [ 90.996475] [<ffffffffa040f639>] em28xx_usb_disconnect+0x79/0x90 [em28xx] [ 90.996539] [<ffffffff814a06e7>] usb_unbind_interface+0x67/0x1d0 [ 90.996620] [<ffffffff8142920f>] __device_release_driver+0x7f/0xf0 [ 90.996682] [<ffffffff814292a5>] device_release_driver+0x25/0x40 [ 90.996742] [<ffffffff81428b0c>] bus_remove_device+0x11c/0x1a0 [ 90.996801] [<ffffffff81425536>] device_del+0x136/0x1d0 [ 90.996863] [<ffffffff8149e0c0>] usb_disable_device+0xb0/0x290 [ 90.996923] [<ffffffff814930c5>] usb_disconnect+0xb5/0x1d0 [ 90.996984] [<ffffffff81495ab6>] hub_port_connect_change+0xd6/0xad0 [ 90.997044] [<ffffffff814967c3>] hub_events+0x313/0x9b0 [ 90.997105] [<ffffffff81496e95>] hub_thread+0x35/0x170 [ 90.997165] [<ffffffff8108ea2f>] kthread+0xff/0x120 [ 90.997226] [<ffffffff816b187c>] ret_from_fork+0x7c/0xb0 [ 90.997287] [ 90.997287] other info that might help us debug this: [ 90.997287] [ 90.997318] Possible unsafe locking scenario: [ 90.997318] [ 90.997348] CPU0 CPU1 [ 90.997378] ---- ---- [ 90.997408] lock(&dev->lock); [ 90.997497] lock(&card->controls_rwsem); [ 90.997607] lock(&dev->lock); [ 90.997697] lock(&card->controls_rwsem); [ 90.997786] [ 90.997786] *** DEADLOCK *** [ 90.997786] [ 90.997817] 5 locks held by khubd/54: [ 90.997847] #0: (&__lockdep_no_validate__){......}, at: [<ffffffff81496564>] hub_events+0xb4/0x9b0 [ 90.998025] #1: (&__lockdep_no_validate__){......}, at: [<ffffffff81493076>] usb_disconnect+0x66/0x1d0 [ 90.998204] #2: (&__lockdep_no_validate__){......}, at: [<ffffffff8142929d>] device_release_driver+0x1d/0x40 [ 90.998383] #3: (em28xx_devlist_mutex){+.+.+.}, at: [<ffffffffa040db77>] em28xx_close_extension+0x27/0x90 [em28xx] [ 90.998567] #4: (&dev->lock){+.+.+.}, at: [<ffffffffa040db81>] em28xx_close_extension+0x31/0x90 [em28xx] Reviewed-by: Frank Schäfer <fschaefer.oss@googlemail.com> Tested-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|
#
aa929ad7 |
| 12-Jan-2014 |
Mauro Carvalho Chehab <m.chehab@samsung.com> |
[media] em28xx: print a message at disconnect That helps to identify if something fails and explain why em28xx struct is not freed (if it ever happens). Reviewed-by: Frank Schäf
[media] em28xx: print a message at disconnect That helps to identify if something fails and explain why em28xx struct is not freed (if it ever happens). Reviewed-by: Frank Schäfer <fschaefer.oss@googlemail.com> Tested-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
show more ...
|