Trent Piepho [Sun, 29 Mar 2009 01:25:36 +0000 (22:25 -0300)]
V4L/DVB (11272): zr364xx: Remove code for things already done by video_ioctl2
The ->vidioc_(s|g|try|enum)_fmt_vid_cap() methods are only called on
VIDEO_CAPTURE buffers. Thus, there is no need to check or set the buffer's
'type' field since it must already be set to VIDEO_CAPTURE. Checking the
buffer type can be removed from zr364xx_vidioc_(s|g|try|enum)_fmt_vid_cap().
The v4l2 core code in v4l2_ioctl will zero out the structure the driver is
supposed to fill in for read-only ioctls. For read/write ioctls, all the
fields which aren't supplied from userspace will be zeroed out.
Zeroing code can be removed from zr364xx_vidioc_querycap(),
zr364xx_vidioc_enum_input(), zr364xx_vidioc_enum_fmt_vid_cap(), and
zr364xx_vidioc_g_fmt_vid_cap().
Trent Piepho [Sun, 29 Mar 2009 01:25:36 +0000 (22:25 -0300)]
V4L/DVB (11271): usbvision: Remove buffer type checks from enum_fmt_vid_cap, XXXbuf
The v4l2-ioctl core only allows buffer types for which the corresponding
->vidioc_try_fmt_xxx() methods are defined to be used with
vidioc_(q|dq|query)buf() and vidioc_reqbufs().
Since this driver only defines ->vidioc_try_fmt_vid_cap() the checks can be
removed from vidioc_reqbufs(), vidioc_qbuf(), and vidioc_dqbuf().
The ->vidioc_(s|g|try|enum)_fmt_vid_cap() methods are only called on
VIDEO_CAPTURE buffers. Thus, there is no need to check or set the buffer's
'type' field since it must already be set to VIDEO_CAPTURE. So setting the
buffer type in vidioc_enum_fmt_vid_cap() can be removed.
Trent Piepho [Sun, 29 Mar 2009 01:25:36 +0000 (22:25 -0300)]
V4L/DVB (11270): meye: Remove buffer type checks from XXX_fmt_vid_cap, XXXbuf
The ->vidioc_(s|g|try|enum)_fmt_vid_cap() methods are only called on
VIDEO_CAPTURE buffers. Thus, there is no need to check or set the buffer's
'type' field since it must already be set to VIDEO_CAPTURE.
The v4l2-ioctl core only allows buffer types for which the corresponding
->vidioc_try_fmt_xxx() methods are defined to be used with
vidioc_(q|dq|query)bufs() and vidioc_reqbufs().
Since this driver only defines ->vidioc_try_fmt_vid_cap() the checks can be
removed from vidioc_reqbufs(), vidioc_querybuf(), vidioc_qbuf(), and
vidioc_dqbuf(). Also, the buffer index is unsigned so it's not necessary
to check if it is less than zero.
Trent Piepho [Sun, 29 Mar 2009 01:25:36 +0000 (22:25 -0300)]
V4L/DVB (11269): cx88-blackbird: Stop setting buffer type in XXX_fmt_vid_cap
The ->vidioc_(s|g|try|enum)_fmt_vid_cap() methods are only called on
VIDEO_CAPTURE buffers. Thus, there is no need to check or set the 'type'
field since it must already be set to VIDEO_CAPTURE.
Trent Piepho [Sun, 29 Mar 2009 01:25:36 +0000 (22:25 -0300)]
V4L/DVB (11268): cx23885-417: Don't need to zero ioctl parameter fields
The v4l2 core code in v4l2_ioctl will zero out the structure the driver is
supposed to fill in for read-only ioctls. For read/write ioctls, all the
fields which aren't supplied from userspace will be zeroed out.
Zeroing code is removed from enum_input, g_tuner, g_frequency, querycap,
enum_fmt_vid_cap, g_fmt_vid_cap, and try_fmt_vid_cap.
The ->vidioc_(s|g|try|enum)_fmt_vid_cap() methods are only called on
VIDEO_CAPTURE buffers. Thus, there is no need to check or set the buffer's
'type' field since it must already be set to VIDEO_CAPTURE.
There also appeared to be a copy and paste error in
vidioc_try_fmt_vid_cap() that would set f->fmt.pix.sizeimage to zero.
Note that the s_fmt_vid_cap method doesn't appear to actually do anything.
Whatever parameters were requested are just silently ignored. Was this
intentional? Who knows, as the commit log entry for the driver just says,
"Add generic cx23417 hardware encoder support." There are no docs. A
comment like "this driver totally ignores the v4l2 spec w.r.t.
VIDIOC_S_FMT because ..." would have gone a long way.
Trent Piepho [Sun, 29 Mar 2009 01:25:36 +0000 (22:25 -0300)]
V4L/DVB (11267): cafe_ccic: Remove buffer type check from XXXbuf
The v4l2-ioctl core only allows buffer types for which the corresponding
->vidioc_try_fmt_xxx() methods are defined to be used with
vidioc_(q|dq|query)bufs() and vidioc_reqbufs().
This driver only defines ->vidioc_try_fmt_vid_cap() so only VIDEO_CAPTURE
buffers are allowed to be used with cafe_vidioc_reqbufs(),
cafe_vidioc_querybuf(), cafe_vidioc_qbuf(), and cafe_vidioc_dqbuf().
The ->vidioc_(s|g|try|enum)_fmt_vid_cap() methods are only called on
VIDEO_CAPTURE buffers. Thus, there is no need to check or set the buffer's
'type' field since it must already be set to VIDEO_CAPTURE. So the
check in cafe_vidioc_enum_fmt_vid_cap() can be removed.
The 'index' field of v4l2_buffer is unsigned so the checks for it being
less than zero can be removed too.
Trent Piepho [Sun, 29 Mar 2009 01:25:36 +0000 (22:25 -0300)]
V4L/DVB (11266): vino: Remove code for things already done by video_ioctl2
The v4l2-ioctl core only allows buffer types for which the corresponding
->vidioc_try_fmt_xxx() methods are defined to be used in vidioc_(g|s)_parm,
vidioc_(q|dq|query)buf, and vidioc_reqbufs.
Remove buffer type checking from vino_g_parm(), vino_s_parm(),
vino_reqbufs(), vino_querybuf(), vino_qbuf(), and vino_dqbuf(). This
reduced the indent level of the code so a few lines can be wrapped better.
Also fixed the C++ type comments.
The v4l2-ioctl core also provides structs that have been pre-zeroed for all
fields that driver is supposed to fill in, so remove zeroing code from
vino_enum_fmt_vid_cap(). Also, the format index is unsigned so it's not
necessary to check if it's less than zero.
Trent Piepho [Sun, 29 Mar 2009 01:25:36 +0000 (22:25 -0300)]
V4L/DVB (11265): stkwebcam: Remove buffer type check from g_parm and q/dq/reqbufs
The v4l2-ioctl core only allows buffer types for which the corresponding
->vidioc_try_fmt_xxx() methods are defined to be used with
vidioc_(q|dq|query)bufs(), vidioc_reqbufs() and now vidioc_(s|g)_parm.
This driver only defines ->vidioc_try_fmt_vid_cap() so only VIDEO_CAPTURE
buffers are allowed to be used with vidioc_g_parm(), vidioc_qbuf(),
vidioc_dqbuf(), and vidioc_reqbufs().
Trent Piepho [Sun, 29 Mar 2009 01:25:36 +0000 (22:25 -0300)]
V4L/DVB (11264): omap24xxcam: Remove buffer type check from vidioc_s/g_parm
The v4l2-ioctl core now only allows buffer types for which the corresponding
->vidioc_try_fmt_xxx() methods are defined to be used in vidioc_(g|s)_parm.
This driver only defines ->vidioc_try_fmt_vid_cap() so only VIDEO_CAPTURE
buffers are allowed to be used with vidioc_s_parm() and vidioc_g_parm().
Trent Piepho [Sun, 29 Mar 2009 01:25:35 +0000 (22:25 -0300)]
V4L/DVB (11263): gspca: Stop setting buffer type, and avoid memset in querycap
The v4l2-ioctl core checks the buffer type now by only allowing buffer
types for which the corresponding ->vidioc_try_fmt_xxx() methods are
defined.
This driver only defines ->vidioc_try_fmt_vid_cap() so only VIDEO_CAPTURE
buffers are allowed to be used with vidioc_g_parm. Also,
->vidioc_enum_fmt_vid_cap() is only called for VIDEO_CAPTURE buffers.
There is no need to set the buffer type since it must already be the
correct value.
The struct which ->vidioc_querycap() is supposed to fill in is already
zeroed so it's not necessary to call memset on it.
Trent Piepho [Sun, 29 Mar 2009 01:25:35 +0000 (22:25 -0300)]
V4L/DVB (11262): bttv: Remove buffer type check from vidioc_g_parm
The v4l2-ioctl core only allows buffer types for which the corresponding
->vidioc_try_fmt_xxx() methods are defined to be used with
vidioc_(q|dq|query)bufs(), vidioc_reqbufs() and now vidioc_(s|g)_parm.
The driver was only allowing VIDEO_CAPTURE buffers for g_parm, but since
the driver defines ->vidioc_try_fmt_vid_overlay() and
->vidioc_try_fmt_vbi_cap() it will now allow VIDEO_OVERLAY and VBI_CAPTURE
buffers as well. This should be fine as the driver only fills in the frame
rate field, which is just as valid for video overlay and vbi capture as it
is for video capture.
Trent Piepho [Sun, 29 Mar 2009 01:25:35 +0000 (22:25 -0300)]
V4L/DVB (11261): saa7146: Remove buffer type check from vidioc_g_parm
The v4l2-ioctl core now only allows buffer types for which the
corresponding ->vidioc_try_fmt_xxx() methods are defined to be used with
vidioc_(g|s)_parm.
The driver was only allowing VIDEO_CAPTURE buffers for g_parm, but since
the driver defines ->vidioc_try_fmt_vid_overlay() it will now allow
VIDEO_OVERLAY buffers as well. This should be fine as the fields the
driver fills in, readbuffers and frame rate, aren't wrong for VIDEO_OVERLAY
buffers.
Trent Piepho [Sun, 29 Mar 2009 01:25:35 +0000 (22:25 -0300)]
V4L/DVB (11260): v4l2-ioctl: Check format for S_PARM and G_PARM
Return EINVAL if VIDIOC_S/G_PARM is called for a buffer type that the
driver doesn't define a ->vidioc_try_fmt_XXX() method for. Several other
ioctls, like QUERYBUF, QBUF, and DQBUF, etc. do this too. It saves each
driver from having to check if the buffer type is one that it supports.
This card has the saa6752hs on 7-bit address 0x21 instead of 0x20. Add
support in the card definition struct to select which address to use and
update the definitions accordingly.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Michael Krufky [Sat, 28 Mar 2009 18:35:26 +0000 (15:35 -0300)]
V4L/DVB (11251): tuner: prevent invalid initialization of t->config in set_type
Drivers that don't set "config" directly in the set_type function will
end up with an invalid configuration value. Check that the value is sane,
otherwise initialize to 0.
Thanks to James Edward Geiger & Steven Toth for reporting this bug.
Cc: Steven Toth <stoth@linuxtv.org> Cc: James Edward Geiger <james.e.geiger@gmail.com> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Alan Cox [Thu, 26 Mar 2009 20:47:48 +0000 (17:47 -0300)]
V4L/DVB (11244): pluto2: silence spew of card hung up messages
If the card is ejected on some systems you get a spew of messages as other
shared IRQ devices interrupt between the card eject and the card IRQ
disable.
We don't need to spew them all out
Closes #7472
Signed-off-by: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Daniel Glöckner [Thu, 26 Mar 2009 14:31:08 +0000 (11:31 -0300)]
V4L/DVB (11242): allow v4l2 drivers to provide a get_unmapped_area handler
Shared memory mappings on nommu machines require a get_unmapped_area
file operation that suggests an address for the mapping. This patch
adds a way for v4l2 drivers to provide this callback.
Signed-off-by: Daniel Glöckner <dg@emlix.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Janne Grunau [Thu, 26 Mar 2009 23:56:06 +0000 (20:56 -0300)]
V4L/DVB (11231): hdpvr: locking fixes
unlock io_mutex in hdpvr_stop_streaming hdpvr_disconnect to allow the
streaming worker to stop before we flush the workqueue.
do not return to user space with mutex held in vidioc_encoder_cmd with
an unknown encoder command.
Signed-off-by: Janne Grunau <j@jannau.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
V4L/DVB (11227): ce6230: avoid using unitialized var
drivers/media/dvb/dvb-usb/ce6230.c: In function ‘ce6230_i2c_xfer’:
drivers/media/dvb/dvb-usb/ce6230.c:107: warning: ‘ret’ may be used uninitialized in this function
V4L/DVB (11226): avoid warnings for request_ihex_firmware on dabusb and vicam
drivers/media/video/usbvideo/vicam.c: In function ‘vicam_open’:
drivers/media/video/usbvideo/vicam.c:194: warning: ‘fw’ may be used uninitialized in this function
drivers/media/video/dabusb.c: In function ‘dabusb_probe’:
drivers/media/video/dabusb.c:337: warning: ‘fw’ may be used uninitialized in this function
Documentation/video4linux/v4lgrab.c: In function ‘main’:
Documentation/video4linux/v4lgrab.c:193: warning: ‘src_depth’ is used uninitialized in this function
Documentation/video4linux/v4lgrab.c:108: warning: ‘b’ may be used uninitialized in this function
Documentation/video4linux/v4lgrab.c:108: warning: ‘g’ may be used uninitialized in this function
Documentation/video4linux/v4lgrab.c:108: warning: ‘r’ may be used uninitialized in this function
Hans de Goede [Thu, 26 Mar 2009 08:08:48 +0000 (05:08 -0300)]
V4L/DVB (11221): gspca - sonixj: Prefer sonixj instead of sn9c102 for 0471:0327.
Prefer the gspca sonixj driver for the Philips SPC600NC webcam instead of
the sn9c102 driver. As we've got userreports that it works with the gspca
driver, whereas it fails with the sn9c102 driver, see:
https://bugzilla.redhat.com/show_bug.cgi?id=477111
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Theodore Kilgore [Wed, 25 Mar 2009 10:13:13 +0000 (07:13 -0300)]
V4L/DVB (11213): gspca - sq905c: New subdriver.
The code in the new sq905c.c is based upon the structure of the code in
gspca/sq905.c, and upon the code in libgphoto2/camlibs/digigr8, which supports
the same set of cameras in stillcam mode. I am a co-author of gspca/sq905.c and
I am the sole author of libgphoto2/camlibs/digigr8, which is licensed under the
LGPL. I hereby give myself permission to use my own code from libgphoto2 in
gspca/sq905c.c.
Mike Isely [Sun, 8 Mar 2009 22:14:07 +0000 (19:14 -0300)]
V4L/DVB (11205): pvrusb2: Remove ancient IVTV specific ioctl functions
Remove ancient IVTV_IOC_G_CODEC and IVTV_IOC_S_CODEC ioctl functions
from the pvrusb2 driver. These are very very old, were non-standard,
and were only present to keep MythTV happy (their implementation did
nothing except to report success). That was long ago; no recent
versions of MythTV should require this anymore.
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Mike Isely [Sun, 8 Mar 2009 21:47:47 +0000 (18:47 -0300)]
V4L/DVB (11204): pvrusb2: Remove old i2c layer; we use v4l2-subdev now
This change removes the old i2c module controlling layer from the
pvrusb2 driver. This is code that first had appeared in the driver
back in December 2005. It's history. Now we use v4l2-subdev. Please
note also that with this change, the driver will no longer be usable
in kernels older that 2.6.22.
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Mike Isely [Sat, 7 Mar 2009 04:59:34 +0000 (01:59 -0300)]
V4L/DVB (11195): pvrusb2: Issue required core init broadcast to all sub-devices
The v4l2-subdev infrastructure requires that an initialization call
must be issued to all attached sub-devices before normal operation can
start. This change satisfies that requirement.
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Mike Isely [Sat, 7 Mar 2009 04:57:25 +0000 (01:57 -0300)]
V4L/DVB (11194): pvrusb2: Implement mechanism to force a full sub-device update
When a pvrusb2 driver instance first initializes, we need to be sure
to send out a complete state update for everything to all attached
modules. The old i2c layer did this by keeping a separate mask of
"stale" bits for each attached module - and setting that mask to all
stale when that module attaches. But the new sub-device adaptation
I've implemented here no longer has per-module stale bits. So instead
there's now a global "force dirty" bit that is set upon instance
initialization, before the sub-devices are attached. After the first
update, this bit is cleared, allowing for normal update-on-dirty
behavior. In this manner, we ensure that all sub-devices have been
properly synchronized at initialization.
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Mike Isely [Sat, 7 Mar 2009 04:45:10 +0000 (01:45 -0300)]
V4L/DVB (11188): pvrusb2: Sub-device update must happen BEFORE state dirty bits are cleared
The sub-device update mechanism relies on various "dirty" bits in the
driver in order to know what pieces of state need to be propagated out
to the various sub-devices. But that won't work if the dirty bits are
cleared before the update gets a chance to run. This change ensures
that the update takes place before the dirty bits are cleared.
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Mike Isely [Sat, 7 Mar 2009 04:42:40 +0000 (01:42 -0300)]
V4L/DVB (11187): pvrusb2: Allow sub-devices to insert correctly
A sub-device won't successfully attach to our I2C adapter if its class
isn't set to zero. Right the class is still set to
I2C_CLASS_TV_ANALOG in order to allow the old mechanism to still
work. This change temporarily sets the class to zero during the
interval when the sub-device attaches. This code will get removed
when the old i2c layer is finally removed from the driver.
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Mike Isely [Sat, 7 Mar 2009 03:48:09 +0000 (00:48 -0300)]
V4L/DVB (11178): pvrusb2: Make audio sample rate update into a sub-device broadcast
The pvrusb2 driver had previously been using i2c module specific calls
to set the sample rate (a long long time ago this was needed). These
days it is safe to use a broadcast so let's just broadcast this when
communicating audio sample rate to sub-devices.
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Mike Isely [Sat, 7 Mar 2009 03:37:10 +0000 (00:37 -0300)]
V4L/DVB (11175): pvrusb2: Implement sub-device specific update framework
Lay down a foundation whereby it becomes possible to send customized
updates to specific sub-devices. (This becomes useful for routing
configuration, which is a very sub-device specific operation.)
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Mike Isely [Sat, 7 Mar 2009 03:28:28 +0000 (00:28 -0300)]
V4L/DVB (11174): pvrusb2: Implement reporting of connected sub-devices
The pvrusb2 driver has a function that reports internal state. It can
be accessed from either the debug interface or as the result of a v4l
log status request. This change adds information listing sub-devices
to the report.
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Mike Isely [Sat, 7 Mar 2009 03:17:11 +0000 (00:17 -0300)]
V4L/DVB (11169): pvrusb2: Note who our video decoder sub-device is, and set it up
Other code may need to treat the video decoder sub-device in a special
manner, so this change implements code to recognize when such a
sub-device is connected to the driver, does any special processing for
it, and notes who the device is for future reference.
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Mike Isely [Sat, 7 Mar 2009 03:13:25 +0000 (00:13 -0300)]
V4L/DVB (11167): pvrusb2: Tie in various v4l2 operations into the sub-device mechanism
This is another step in the v42l-subdev assimilation. This implements
various call-outs to sub-devices based on state changes within the
pvrusb2 driver.
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Mike Isely [Sat, 7 Mar 2009 02:58:15 +0000 (23:58 -0300)]
V4L/DVB (11162): pvrusb2: Tie up loose ends with v4l2-subdev setup
Tie up loose ends with v4l2-subdev setup. Set attached module's group
ID to match our internal ID, emit a few useful messages when
sub-devices are dealt with, implement better error legs, and fix an
error in the old i2c layer (caused by changes related to the
v4l2-subdev work here).
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Mike Isely [Sat, 7 Mar 2009 02:51:35 +0000 (23:51 -0300)]
V4L/DVB (11161): pvrusb2: Set i2c autoprobing to be off by default
In order to keep a sub-device from promiscuously attaching to the
pvrusb2 driver, the i2c adapter's class must be cleared. This change
clears that class by default.
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Mike Isely [Sat, 7 Mar 2009 02:47:10 +0000 (23:47 -0300)]
V4L/DVB (11159): pvrusb2: Providing means to stop tracking an old i2c module
This implements a temporary mechanism to "untrack" an i2c module from
the old i2c layer. The v4l2-subdev related code in the driver will
use this to remove a sub-device from the old i2c layer. In the end,
once the old i2c layer is removed, this will also eventually go away.
Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>