mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
V4L/DVB (10135): v4l2: introduce v4l2_file_operations.
Introduce a struct v4l2_file_operations for v4l2 drivers. Remove the unnecessary inode argument. Move compat32 handling (and llseek) into the v4l2-dev core: this is now handled in the v4l2 core and no longer in the drivers themselves. Note that this changeset reverts an earlier patch that changed the return type of__video_ioctl2 from int to long. This change will be reinstated later in a much improved version. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
dfa9a5ae67
commit
bec43661b1
83 changed files with 331 additions and 572 deletions
|
@ -192,9 +192,9 @@ void saa7146_buffer_timeout(unsigned long data)
|
||||||
/********************************************************************************/
|
/********************************************************************************/
|
||||||
/* file operations */
|
/* file operations */
|
||||||
|
|
||||||
static int fops_open(struct inode *inode, struct file *file)
|
static int fops_open(struct file *file)
|
||||||
{
|
{
|
||||||
unsigned int minor = iminor(inode);
|
unsigned int minor = video_devdata(file)->minor;
|
||||||
struct saa7146_dev *h = NULL, *dev = NULL;
|
struct saa7146_dev *h = NULL, *dev = NULL;
|
||||||
struct list_head *list;
|
struct list_head *list;
|
||||||
struct saa7146_fh *fh = NULL;
|
struct saa7146_fh *fh = NULL;
|
||||||
|
@ -202,7 +202,7 @@ static int fops_open(struct inode *inode, struct file *file)
|
||||||
|
|
||||||
enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
|
|
||||||
DEB_EE(("inode:%p, file:%p, minor:%d\n",inode,file,minor));
|
DEB_EE(("file:%p, minor:%d\n", file, minor));
|
||||||
|
|
||||||
if (mutex_lock_interruptible(&saa7146_devices_lock))
|
if (mutex_lock_interruptible(&saa7146_devices_lock))
|
||||||
return -ERESTARTSYS;
|
return -ERESTARTSYS;
|
||||||
|
@ -255,7 +255,7 @@ static int fops_open(struct inode *inode, struct file *file)
|
||||||
if (dev->ext_vv_data->capabilities & V4L2_CAP_VBI_CAPTURE)
|
if (dev->ext_vv_data->capabilities & V4L2_CAP_VBI_CAPTURE)
|
||||||
result = saa7146_vbi_uops.open(dev,file);
|
result = saa7146_vbi_uops.open(dev,file);
|
||||||
if (dev->ext_vv_data->vbi_fops.open)
|
if (dev->ext_vv_data->vbi_fops.open)
|
||||||
dev->ext_vv_data->vbi_fops.open(inode, file);
|
dev->ext_vv_data->vbi_fops.open(file);
|
||||||
} else {
|
} else {
|
||||||
DEB_S(("initializing video...\n"));
|
DEB_S(("initializing video...\n"));
|
||||||
result = saa7146_video_uops.open(dev,file);
|
result = saa7146_video_uops.open(dev,file);
|
||||||
|
@ -280,12 +280,12 @@ out:
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fops_release(struct inode *inode, struct file *file)
|
static int fops_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct saa7146_fh *fh = file->private_data;
|
struct saa7146_fh *fh = file->private_data;
|
||||||
struct saa7146_dev *dev = fh->dev;
|
struct saa7146_dev *dev = fh->dev;
|
||||||
|
|
||||||
DEB_EE(("inode:%p, file:%p\n",inode,file));
|
DEB_EE(("file:%p\n", file));
|
||||||
|
|
||||||
if (mutex_lock_interruptible(&saa7146_devices_lock))
|
if (mutex_lock_interruptible(&saa7146_devices_lock))
|
||||||
return -ERESTARTSYS;
|
return -ERESTARTSYS;
|
||||||
|
@ -294,7 +294,7 @@ static int fops_release(struct inode *inode, struct file *file)
|
||||||
if (dev->ext_vv_data->capabilities & V4L2_CAP_VBI_CAPTURE)
|
if (dev->ext_vv_data->capabilities & V4L2_CAP_VBI_CAPTURE)
|
||||||
saa7146_vbi_uops.release(dev,file);
|
saa7146_vbi_uops.release(dev,file);
|
||||||
if (dev->ext_vv_data->vbi_fops.release)
|
if (dev->ext_vv_data->vbi_fops.release)
|
||||||
dev->ext_vv_data->vbi_fops.release(inode, file);
|
dev->ext_vv_data->vbi_fops.release(file);
|
||||||
} else {
|
} else {
|
||||||
saa7146_video_uops.release(dev,file);
|
saa7146_video_uops.release(dev,file);
|
||||||
}
|
}
|
||||||
|
@ -308,10 +308,10 @@ static int fops_release(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fops_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
|
static int fops_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
DEB_EE(("inode:%p, file:%p, cmd:%d, arg:%li\n",inode, file, cmd, arg));
|
DEB_EE(("file:%p, cmd:%d, arg:%li\n", file, cmd, arg));
|
||||||
*/
|
*/
|
||||||
return video_usercopy(file, cmd, arg, saa7146_video_do_ioctl);
|
return video_usercopy(file, cmd, arg, saa7146_video_do_ioctl);
|
||||||
}
|
}
|
||||||
|
@ -416,7 +416,7 @@ static ssize_t fops_write(struct file *file, const char __user *data, size_t cou
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations video_fops =
|
static const struct v4l2_file_operations video_fops =
|
||||||
{
|
{
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = fops_open,
|
.open = fops_open,
|
||||||
|
@ -426,7 +426,6 @@ static const struct file_operations video_fops =
|
||||||
.poll = fops_poll,
|
.poll = fops_poll,
|
||||||
.mmap = fops_mmap,
|
.mmap = fops_mmap,
|
||||||
.ioctl = fops_ioctl,
|
.ioctl = fops_ioctl,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void vv_callback(struct saa7146_dev *dev, unsigned long status)
|
static void vv_callback(struct saa7146_dev *dev, unsigned long status)
|
||||||
|
|
|
@ -567,7 +567,7 @@ static int av7110_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int av7110_vbi_reset(struct inode *inode, struct file *file)
|
static int av7110_vbi_reset(struct file *file)
|
||||||
{
|
{
|
||||||
struct saa7146_fh *fh = file->private_data;
|
struct saa7146_fh *fh = file->private_data;
|
||||||
struct saa7146_dev *dev = fh->dev;
|
struct saa7146_dev *dev = fh->dev;
|
||||||
|
|
|
@ -154,8 +154,8 @@ devices, that would be 76 and 91. */
|
||||||
static int usb_dsbr100_probe(struct usb_interface *intf,
|
static int usb_dsbr100_probe(struct usb_interface *intf,
|
||||||
const struct usb_device_id *id);
|
const struct usb_device_id *id);
|
||||||
static void usb_dsbr100_disconnect(struct usb_interface *intf);
|
static void usb_dsbr100_disconnect(struct usb_interface *intf);
|
||||||
static int usb_dsbr100_open(struct inode *inode, struct file *file);
|
static int usb_dsbr100_open(struct file *file);
|
||||||
static int usb_dsbr100_close(struct inode *inode, struct file *file);
|
static int usb_dsbr100_close(struct file *file);
|
||||||
static int usb_dsbr100_suspend(struct usb_interface *intf,
|
static int usb_dsbr100_suspend(struct usb_interface *intf,
|
||||||
pm_message_t message);
|
pm_message_t message);
|
||||||
static int usb_dsbr100_resume(struct usb_interface *intf);
|
static int usb_dsbr100_resume(struct usb_interface *intf);
|
||||||
|
@ -566,7 +566,7 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int usb_dsbr100_open(struct inode *inode, struct file *file)
|
static int usb_dsbr100_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct dsbr100_device *radio = video_drvdata(file);
|
struct dsbr100_device *radio = video_drvdata(file);
|
||||||
int retval;
|
int retval;
|
||||||
|
@ -593,7 +593,7 @@ static int usb_dsbr100_open(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int usb_dsbr100_close(struct inode *inode, struct file *file)
|
static int usb_dsbr100_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct dsbr100_device *radio = video_drvdata(file);
|
struct dsbr100_device *radio = video_drvdata(file);
|
||||||
int retval;
|
int retval;
|
||||||
|
@ -653,15 +653,11 @@ static void usb_dsbr100_video_device_release(struct video_device *videodev)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* File system interface */
|
/* File system interface */
|
||||||
static const struct file_operations usb_dsbr100_fops = {
|
static const struct v4l2_file_operations usb_dsbr100_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = usb_dsbr100_open,
|
.open = usb_dsbr100_open,
|
||||||
.release = usb_dsbr100_close,
|
.release = usb_dsbr100_close,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops usb_dsbr100_ioctl_ops = {
|
static const struct v4l2_ioctl_ops usb_dsbr100_ioctl_ops = {
|
||||||
|
|
|
@ -374,26 +374,22 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||||
|
|
||||||
static struct rt_device rtrack_unit;
|
static struct rt_device rtrack_unit;
|
||||||
|
|
||||||
static int rtrack_exclusive_open(struct inode *inode, struct file *file)
|
static int rtrack_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &rtrack_unit.in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &rtrack_unit.in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rtrack_exclusive_release(struct inode *inode, struct file *file)
|
static int rtrack_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &rtrack_unit.in_use);
|
clear_bit(0, &rtrack_unit.in_use);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations rtrack_fops = {
|
static const struct v4l2_file_operations rtrack_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = rtrack_exclusive_open,
|
.open = rtrack_exclusive_open,
|
||||||
.release = rtrack_exclusive_release,
|
.release = rtrack_exclusive_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops rtrack_ioctl_ops = {
|
static const struct v4l2_ioctl_ops rtrack_ioctl_ops = {
|
||||||
|
|
|
@ -338,26 +338,22 @@ static int vidioc_s_ctrl (struct file *file, void *priv,
|
||||||
|
|
||||||
static struct az_device aztech_unit;
|
static struct az_device aztech_unit;
|
||||||
|
|
||||||
static int aztech_exclusive_open(struct inode *inode, struct file *file)
|
static int aztech_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &aztech_unit.in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &aztech_unit.in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int aztech_exclusive_release(struct inode *inode, struct file *file)
|
static int aztech_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &aztech_unit.in_use);
|
clear_bit(0, &aztech_unit.in_use);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations aztech_fops = {
|
static const struct v4l2_file_operations aztech_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = aztech_exclusive_open,
|
.open = aztech_exclusive_open,
|
||||||
.release = aztech_exclusive_release,
|
.release = aztech_exclusive_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops aztech_ioctl_ops = {
|
static const struct v4l2_ioctl_ops aztech_ioctl_ops = {
|
||||||
|
|
|
@ -529,7 +529,7 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
cadet_open(struct inode *inode, struct file *file)
|
cadet_open(struct file *file)
|
||||||
{
|
{
|
||||||
users++;
|
users++;
|
||||||
if (1 == users) init_waitqueue_head(&read_queue);
|
if (1 == users) init_waitqueue_head(&read_queue);
|
||||||
|
@ -537,7 +537,7 @@ cadet_open(struct inode *inode, struct file *file)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
cadet_release(struct inode *inode, struct file *file)
|
cadet_release(struct file *file)
|
||||||
{
|
{
|
||||||
users--;
|
users--;
|
||||||
if (0 == users){
|
if (0 == users){
|
||||||
|
@ -557,17 +557,13 @@ cadet_poll(struct file *file, struct poll_table_struct *wait)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static const struct file_operations cadet_fops = {
|
static const struct v4l2_file_operations cadet_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = cadet_open,
|
.open = cadet_open,
|
||||||
.release = cadet_release,
|
.release = cadet_release,
|
||||||
.read = cadet_read,
|
.read = cadet_read,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.poll = cadet_poll,
|
.poll = cadet_poll,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops cadet_ioctl_ops = {
|
static const struct v4l2_ioctl_ops cadet_ioctl_ops = {
|
||||||
|
|
|
@ -358,26 +358,22 @@ MODULE_DEVICE_TABLE( pci, gemtek_pci_id );
|
||||||
|
|
||||||
static int mx = 1;
|
static int mx = 1;
|
||||||
|
|
||||||
static int gemtek_pci_exclusive_open(struct inode *inode, struct file *file)
|
static int gemtek_pci_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gemtek_pci_exclusive_release(struct inode *inode, struct file *file)
|
static int gemtek_pci_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &in_use);
|
clear_bit(0, &in_use);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations gemtek_pci_fops = {
|
static const struct v4l2_file_operations gemtek_pci_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = gemtek_pci_exclusive_open,
|
.open = gemtek_pci_exclusive_open,
|
||||||
.release = gemtek_pci_exclusive_release,
|
.release = gemtek_pci_exclusive_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops gemtek_pci_ioctl_ops = {
|
static const struct v4l2_ioctl_ops gemtek_pci_ioctl_ops = {
|
||||||
|
|
|
@ -394,26 +394,22 @@ static struct v4l2_queryctrl radio_qctrl[] = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static int gemtek_exclusive_open(struct inode *inode, struct file *file)
|
static int gemtek_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gemtek_exclusive_release(struct inode *inode, struct file *file)
|
static int gemtek_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &in_use);
|
clear_bit(0, &in_use);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations gemtek_fops = {
|
static const struct v4l2_file_operations gemtek_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = gemtek_exclusive_open,
|
.open = gemtek_exclusive_open,
|
||||||
.release = gemtek_exclusive_release,
|
.release = gemtek_exclusive_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int vidioc_querycap(struct file *file, void *priv,
|
static int vidioc_querycap(struct file *file, void *priv,
|
||||||
|
|
|
@ -79,12 +79,12 @@ static unsigned long in_use;
|
||||||
|
|
||||||
static int maestro_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
|
static int maestro_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
|
||||||
|
|
||||||
static int maestro_exclusive_open(struct inode *inode, struct file *file)
|
static int maestro_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int maestro_exclusive_release(struct inode *inode, struct file *file)
|
static int maestro_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &in_use);
|
clear_bit(0, &in_use);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -110,15 +110,11 @@ static struct pci_driver maestro_r_driver = {
|
||||||
.remove = __devexit_p(maestro_remove),
|
.remove = __devexit_p(maestro_remove),
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct file_operations maestro_fops = {
|
static const struct v4l2_file_operations maestro_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = maestro_exclusive_open,
|
.open = maestro_exclusive_open,
|
||||||
.release = maestro_exclusive_release,
|
.release = maestro_exclusive_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct radio_device {
|
struct radio_device {
|
||||||
|
|
|
@ -100,26 +100,22 @@ static unsigned long in_use;
|
||||||
#define BITS2FREQ(x) ((x) * FREQ_STEP - FREQ_IF)
|
#define BITS2FREQ(x) ((x) * FREQ_STEP - FREQ_IF)
|
||||||
|
|
||||||
|
|
||||||
static int maxiradio_exclusive_open(struct inode *inode, struct file *file)
|
static int maxiradio_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int maxiradio_exclusive_release(struct inode *inode, struct file *file)
|
static int maxiradio_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &in_use);
|
clear_bit(0, &in_use);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations maxiradio_fops = {
|
static const struct v4l2_file_operations maxiradio_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = maxiradio_exclusive_open,
|
.open = maxiradio_exclusive_open,
|
||||||
.release = maxiradio_exclusive_release,
|
.release = maxiradio_exclusive_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct radio_device
|
static struct radio_device
|
||||||
|
|
|
@ -127,8 +127,8 @@ static struct v4l2_queryctrl radio_qctrl[] = {
|
||||||
static int usb_amradio_probe(struct usb_interface *intf,
|
static int usb_amradio_probe(struct usb_interface *intf,
|
||||||
const struct usb_device_id *id);
|
const struct usb_device_id *id);
|
||||||
static void usb_amradio_disconnect(struct usb_interface *intf);
|
static void usb_amradio_disconnect(struct usb_interface *intf);
|
||||||
static int usb_amradio_open(struct inode *inode, struct file *file);
|
static int usb_amradio_open(struct file *file);
|
||||||
static int usb_amradio_close(struct inode *inode, struct file *file);
|
static int usb_amradio_close(struct file *file);
|
||||||
static int usb_amradio_suspend(struct usb_interface *intf,
|
static int usb_amradio_suspend(struct usb_interface *intf,
|
||||||
pm_message_t message);
|
pm_message_t message);
|
||||||
static int usb_amradio_resume(struct usb_interface *intf);
|
static int usb_amradio_resume(struct usb_interface *intf);
|
||||||
|
@ -500,7 +500,7 @@ static int vidioc_s_input(struct file *filp, void *priv, unsigned int i)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* open device - amradio_start() and amradio_setfreq() */
|
/* open device - amradio_start() and amradio_setfreq() */
|
||||||
static int usb_amradio_open(struct inode *inode, struct file *file)
|
static int usb_amradio_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct amradio_device *radio = video_get_drvdata(video_devdata(file));
|
struct amradio_device *radio = video_get_drvdata(video_devdata(file));
|
||||||
|
|
||||||
|
@ -525,7 +525,7 @@ static int usb_amradio_open(struct inode *inode, struct file *file)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*close device */
|
/*close device */
|
||||||
static int usb_amradio_close(struct inode *inode, struct file *file)
|
static int usb_amradio_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct amradio_device *radio = video_get_drvdata(video_devdata(file));
|
struct amradio_device *radio = video_get_drvdata(video_devdata(file));
|
||||||
int retval;
|
int retval;
|
||||||
|
@ -572,15 +572,11 @@ static int usb_amradio_resume(struct usb_interface *intf)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* File system interface */
|
/* File system interface */
|
||||||
static const struct file_operations usb_amradio_fops = {
|
static const struct v4l2_file_operations usb_amradio_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = usb_amradio_open,
|
.open = usb_amradio_open,
|
||||||
.release = usb_amradio_close,
|
.release = usb_amradio_close,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops usb_amradio_ioctl_ops = {
|
static const struct v4l2_ioctl_ops usb_amradio_ioctl_ops = {
|
||||||
|
|
|
@ -280,26 +280,22 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||||
|
|
||||||
static struct rt_device rtrack2_unit;
|
static struct rt_device rtrack2_unit;
|
||||||
|
|
||||||
static int rtrack2_exclusive_open(struct inode *inode, struct file *file)
|
static int rtrack2_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &rtrack2_unit.in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &rtrack2_unit.in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rtrack2_exclusive_release(struct inode *inode, struct file *file)
|
static int rtrack2_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &rtrack2_unit.in_use);
|
clear_bit(0, &rtrack2_unit.in_use);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations rtrack2_fops = {
|
static const struct v4l2_file_operations rtrack2_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = rtrack2_exclusive_open,
|
.open = rtrack2_exclusive_open,
|
||||||
.release = rtrack2_exclusive_release,
|
.release = rtrack2_exclusive_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops rtrack2_ioctl_ops = {
|
static const struct v4l2_ioctl_ops rtrack2_ioctl_ops = {
|
||||||
|
|
|
@ -280,26 +280,22 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||||
|
|
||||||
static struct fmi_device fmi_unit;
|
static struct fmi_device fmi_unit;
|
||||||
|
|
||||||
static int fmi_exclusive_open(struct inode *inode, struct file *file)
|
static int fmi_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &fmi_unit.in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &fmi_unit.in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fmi_exclusive_release(struct inode *inode, struct file *file)
|
static int fmi_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &fmi_unit.in_use);
|
clear_bit(0, &fmi_unit.in_use);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations fmi_fops = {
|
static const struct v4l2_file_operations fmi_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = fmi_exclusive_open,
|
.open = fmi_exclusive_open,
|
||||||
.release = fmi_exclusive_release,
|
.release = fmi_exclusive_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops fmi_ioctl_ops = {
|
static const struct v4l2_ioctl_ops fmi_ioctl_ops = {
|
||||||
|
|
|
@ -396,26 +396,22 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||||
|
|
||||||
static struct fmr2_device fmr2_unit;
|
static struct fmr2_device fmr2_unit;
|
||||||
|
|
||||||
static int fmr2_exclusive_open(struct inode *inode, struct file *file)
|
static int fmr2_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &fmr2_unit.in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &fmr2_unit.in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fmr2_exclusive_release(struct inode *inode, struct file *file)
|
static int fmr2_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &fmr2_unit.in_use);
|
clear_bit(0, &fmr2_unit.in_use);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations fmr2_fops = {
|
static const struct v4l2_file_operations fmr2_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = fmr2_exclusive_open,
|
.open = fmr2_exclusive_open,
|
||||||
.release = fmr2_exclusive_release,
|
.release = fmr2_exclusive_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops fmr2_ioctl_ops = {
|
static const struct v4l2_ioctl_ops fmr2_ioctl_ops = {
|
||||||
|
|
|
@ -1075,7 +1075,7 @@ static unsigned int si470x_fops_poll(struct file *file,
|
||||||
/*
|
/*
|
||||||
* si470x_fops_open - file open
|
* si470x_fops_open - file open
|
||||||
*/
|
*/
|
||||||
static int si470x_fops_open(struct inode *inode, struct file *file)
|
static int si470x_fops_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct si470x_device *radio = video_drvdata(file);
|
struct si470x_device *radio = video_drvdata(file);
|
||||||
int retval;
|
int retval;
|
||||||
|
@ -1105,7 +1105,7 @@ done:
|
||||||
/*
|
/*
|
||||||
* si470x_fops_release - file release
|
* si470x_fops_release - file release
|
||||||
*/
|
*/
|
||||||
static int si470x_fops_release(struct inode *inode, struct file *file)
|
static int si470x_fops_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct si470x_device *radio = video_drvdata(file);
|
struct si470x_device *radio = video_drvdata(file);
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
|
@ -1147,15 +1147,11 @@ done:
|
||||||
/*
|
/*
|
||||||
* si470x_fops - file operations interface
|
* si470x_fops - file operations interface
|
||||||
*/
|
*/
|
||||||
static const struct file_operations si470x_fops = {
|
static const struct v4l2_file_operations si470x_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.llseek = no_llseek,
|
|
||||||
.read = si470x_fops_read,
|
.read = si470x_fops_read,
|
||||||
.poll = si470x_fops_poll,
|
.poll = si470x_fops_poll,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.open = si470x_fops_open,
|
.open = si470x_fops_open,
|
||||||
.release = si470x_fops_release,
|
.release = si470x_fops_release,
|
||||||
};
|
};
|
||||||
|
|
|
@ -352,26 +352,22 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||||
|
|
||||||
static struct tt_device terratec_unit;
|
static struct tt_device terratec_unit;
|
||||||
|
|
||||||
static int terratec_exclusive_open(struct inode *inode, struct file *file)
|
static int terratec_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &terratec_unit.in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &terratec_unit.in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int terratec_exclusive_release(struct inode *inode, struct file *file)
|
static int terratec_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &terratec_unit.in_use);
|
clear_bit(0, &terratec_unit.in_use);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations terratec_fops = {
|
static const struct v4l2_file_operations terratec_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = terratec_exclusive_open,
|
.open = terratec_exclusive_open,
|
||||||
.release = terratec_exclusive_release,
|
.release = terratec_exclusive_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops terratec_ioctl_ops = {
|
static const struct v4l2_ioctl_ops terratec_ioctl_ops = {
|
||||||
|
|
|
@ -337,26 +337,22 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int trust_exclusive_open(struct inode *inode, struct file *file)
|
static int trust_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int trust_exclusive_release(struct inode *inode, struct file *file)
|
static int trust_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &in_use);
|
clear_bit(0, &in_use);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations trust_fops = {
|
static const struct v4l2_file_operations trust_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = trust_exclusive_open,
|
.open = trust_exclusive_open,
|
||||||
.release = trust_exclusive_release,
|
.release = trust_exclusive_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops trust_ioctl_ops = {
|
static const struct v4l2_ioctl_ops trust_ioctl_ops = {
|
||||||
|
|
|
@ -330,26 +330,22 @@ static struct typhoon_device typhoon_unit =
|
||||||
.mutefreq = CONFIG_RADIO_TYPHOON_MUTEFREQ,
|
.mutefreq = CONFIG_RADIO_TYPHOON_MUTEFREQ,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int typhoon_exclusive_open(struct inode *inode, struct file *file)
|
static int typhoon_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &typhoon_unit.in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &typhoon_unit.in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int typhoon_exclusive_release(struct inode *inode, struct file *file)
|
static int typhoon_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &typhoon_unit.in_use);
|
clear_bit(0, &typhoon_unit.in_use);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations typhoon_fops = {
|
static const struct v4l2_file_operations typhoon_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = typhoon_exclusive_open,
|
.open = typhoon_exclusive_open,
|
||||||
.release = typhoon_exclusive_release,
|
.release = typhoon_exclusive_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops typhoon_ioctl_ops = {
|
static const struct v4l2_ioctl_ops typhoon_ioctl_ops = {
|
||||||
|
|
|
@ -401,27 +401,23 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||||
|
|
||||||
static struct zol_device zoltrix_unit;
|
static struct zol_device zoltrix_unit;
|
||||||
|
|
||||||
static int zoltrix_exclusive_open(struct inode *inode, struct file *file)
|
static int zoltrix_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &zoltrix_unit.in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &zoltrix_unit.in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int zoltrix_exclusive_release(struct inode *inode, struct file *file)
|
static int zoltrix_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &zoltrix_unit.in_use);
|
clear_bit(0, &zoltrix_unit.in_use);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations zoltrix_fops =
|
static const struct v4l2_file_operations zoltrix_fops =
|
||||||
{
|
{
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = zoltrix_exclusive_open,
|
.open = zoltrix_exclusive_open,
|
||||||
.release = zoltrix_exclusive_release,
|
.release = zoltrix_exclusive_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops zoltrix_ioctl_ops = {
|
static const struct v4l2_ioctl_ops zoltrix_ioctl_ops = {
|
||||||
|
|
|
@ -539,7 +539,7 @@ static int ar_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ar_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
|
static int ar_ioctl(struct file *file, unsigned int cmd,
|
||||||
unsigned long arg)
|
unsigned long arg)
|
||||||
{
|
{
|
||||||
return video_usercopy(file, cmd, arg, ar_do_ioctl);
|
return video_usercopy(file, cmd, arg, ar_do_ioctl);
|
||||||
|
@ -744,27 +744,23 @@ void ar_release(struct video_device *vfd)
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
static struct ar_device ardev;
|
static struct ar_device ardev;
|
||||||
|
|
||||||
static int ar_exclusive_open(struct inode *inode, struct file *file)
|
static int ar_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
return test_and_set_bit(0, &ardev.in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &ardev.in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ar_exclusive_release(struct inode *inode, struct file *file)
|
static int ar_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
clear_bit(0, &ardev.in_use);
|
clear_bit(0, &ardev.in_use);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations ar_fops = {
|
static const struct v4l2_file_operations ar_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = ar_exclusive_open,
|
.open = ar_exclusive_open,
|
||||||
.release = ar_exclusive_release,
|
.release = ar_exclusive_release,
|
||||||
.read = ar_read,
|
.read = ar_read,
|
||||||
.ioctl = ar_ioctl,
|
.ioctl = ar_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct video_device ar_template = {
|
static struct video_device ar_template = {
|
||||||
|
|
|
@ -3208,9 +3208,9 @@ err:
|
||||||
return POLLERR;
|
return POLLERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bttv_open(struct inode *inode, struct file *file)
|
static int bttv_open(struct file *file)
|
||||||
{
|
{
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(file)->minor;
|
||||||
struct bttv *btv = NULL;
|
struct bttv *btv = NULL;
|
||||||
struct bttv_fh *fh;
|
struct bttv_fh *fh;
|
||||||
enum v4l2_buf_type type = 0;
|
enum v4l2_buf_type type = 0;
|
||||||
|
@ -3291,7 +3291,7 @@ static int bttv_open(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bttv_release(struct inode *inode, struct file *file)
|
static int bttv_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct bttv_fh *fh = file->private_data;
|
struct bttv_fh *fh = file->private_data;
|
||||||
struct bttv *btv = fh->btv;
|
struct bttv *btv = fh->btv;
|
||||||
|
@ -3346,14 +3346,12 @@ bttv_mmap(struct file *file, struct vm_area_struct *vma)
|
||||||
return videobuf_mmap_mapper(bttv_queue(fh),vma);
|
return videobuf_mmap_mapper(bttv_queue(fh),vma);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations bttv_fops =
|
static const struct v4l2_file_operations bttv_fops =
|
||||||
{
|
{
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = bttv_open,
|
.open = bttv_open,
|
||||||
.release = bttv_release,
|
.release = bttv_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.llseek = no_llseek,
|
|
||||||
.read = bttv_read,
|
.read = bttv_read,
|
||||||
.mmap = bttv_mmap,
|
.mmap = bttv_mmap,
|
||||||
.poll = bttv_poll,
|
.poll = bttv_poll,
|
||||||
|
@ -3422,9 +3420,9 @@ static struct video_device bttv_video_template = {
|
||||||
/* ----------------------------------------------------------------------- */
|
/* ----------------------------------------------------------------------- */
|
||||||
/* radio interface */
|
/* radio interface */
|
||||||
|
|
||||||
static int radio_open(struct inode *inode, struct file *file)
|
static int radio_open(struct file *file)
|
||||||
{
|
{
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(file)->minor;
|
||||||
struct bttv *btv = NULL;
|
struct bttv *btv = NULL;
|
||||||
struct bttv_fh *fh;
|
struct bttv_fh *fh;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
@ -3467,7 +3465,7 @@ static int radio_open(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int radio_release(struct inode *inode, struct file *file)
|
static int radio_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct bttv_fh *fh = file->private_data;
|
struct bttv_fh *fh = file->private_data;
|
||||||
struct bttv *btv = fh->btv;
|
struct bttv *btv = fh->btv;
|
||||||
|
@ -3633,15 +3631,13 @@ static unsigned int radio_poll(struct file *file, poll_table *wait)
|
||||||
return cmd.result;
|
return cmd.result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations radio_fops =
|
static const struct v4l2_file_operations radio_fops =
|
||||||
{
|
{
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = radio_open,
|
.open = radio_open,
|
||||||
.read = radio_read,
|
.read = radio_read,
|
||||||
.release = radio_release,
|
.release = radio_release,
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.llseek = no_llseek,
|
|
||||||
.poll = radio_poll,
|
.poll = radio_poll,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -863,7 +863,7 @@ static int qcam_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qcam_ioctl(struct inode *inode, struct file *file,
|
static int qcam_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return video_usercopy(file, cmd, arg, qcam_do_ioctl);
|
return video_usercopy(file, cmd, arg, qcam_do_ioctl);
|
||||||
|
@ -893,7 +893,7 @@ static ssize_t qcam_read(struct file *file, char __user *buf,
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qcam_exclusive_open(struct inode *inode, struct file *file)
|
static int qcam_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *dev = video_devdata(file);
|
struct video_device *dev = video_devdata(file);
|
||||||
struct qcam_device *qcam = (struct qcam_device *)dev;
|
struct qcam_device *qcam = (struct qcam_device *)dev;
|
||||||
|
@ -901,7 +901,7 @@ static int qcam_exclusive_open(struct inode *inode, struct file *file)
|
||||||
return test_and_set_bit(0, &qcam->in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &qcam->in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qcam_exclusive_release(struct inode *inode, struct file *file)
|
static int qcam_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *dev = video_devdata(file);
|
struct video_device *dev = video_devdata(file);
|
||||||
struct qcam_device *qcam = (struct qcam_device *)dev;
|
struct qcam_device *qcam = (struct qcam_device *)dev;
|
||||||
|
@ -910,16 +910,12 @@ static int qcam_exclusive_release(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations qcam_fops = {
|
static const struct v4l2_file_operations qcam_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = qcam_exclusive_open,
|
.open = qcam_exclusive_open,
|
||||||
.release = qcam_exclusive_release,
|
.release = qcam_exclusive_release,
|
||||||
.ioctl = qcam_ioctl,
|
.ioctl = qcam_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.read = qcam_read,
|
.read = qcam_read,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
static struct video_device qcam_template=
|
static struct video_device qcam_template=
|
||||||
{
|
{
|
||||||
|
|
|
@ -665,7 +665,7 @@ static int qcam_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qcam_ioctl(struct inode *inode, struct file *file,
|
static int qcam_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return video_usercopy(file, cmd, arg, qcam_do_ioctl);
|
return video_usercopy(file, cmd, arg, qcam_do_ioctl);
|
||||||
|
@ -687,7 +687,7 @@ static ssize_t qcam_read(struct file *file, char __user *buf,
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qcam_exclusive_open(struct inode *inode, struct file *file)
|
static int qcam_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *dev = video_devdata(file);
|
struct video_device *dev = video_devdata(file);
|
||||||
struct qcam_device *qcam = (struct qcam_device *)dev;
|
struct qcam_device *qcam = (struct qcam_device *)dev;
|
||||||
|
@ -695,7 +695,7 @@ static int qcam_exclusive_open(struct inode *inode, struct file *file)
|
||||||
return test_and_set_bit(0, &qcam->in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &qcam->in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qcam_exclusive_release(struct inode *inode, struct file *file)
|
static int qcam_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *dev = video_devdata(file);
|
struct video_device *dev = video_devdata(file);
|
||||||
struct qcam_device *qcam = (struct qcam_device *)dev;
|
struct qcam_device *qcam = (struct qcam_device *)dev;
|
||||||
|
@ -705,16 +705,12 @@ static int qcam_exclusive_release(struct inode *inode, struct file *file)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* video device template */
|
/* video device template */
|
||||||
static const struct file_operations qcam_fops = {
|
static const struct v4l2_file_operations qcam_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = qcam_exclusive_open,
|
.open = qcam_exclusive_open,
|
||||||
.release = qcam_exclusive_release,
|
.release = qcam_exclusive_release,
|
||||||
.ioctl = qcam_ioctl,
|
.ioctl = qcam_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.read = qcam_read,
|
.read = qcam_read,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct video_device qcam_template=
|
static struct video_device qcam_template=
|
||||||
|
|
|
@ -1472,11 +1472,11 @@ static int cafe_v4l_mmap(struct file *filp, struct vm_area_struct *vma)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int cafe_v4l_open(struct inode *inode, struct file *filp)
|
static int cafe_v4l_open(struct file *filp)
|
||||||
{
|
{
|
||||||
struct cafe_camera *cam;
|
struct cafe_camera *cam;
|
||||||
|
|
||||||
cam = cafe_find_dev(iminor(inode));
|
cam = cafe_find_dev(video_devdata(filp)->minor);
|
||||||
if (cam == NULL)
|
if (cam == NULL)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
filp->private_data = cam;
|
filp->private_data = cam;
|
||||||
|
@ -1494,7 +1494,7 @@ static int cafe_v4l_open(struct inode *inode, struct file *filp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int cafe_v4l_release(struct inode *inode, struct file *filp)
|
static int cafe_v4l_release(struct file *filp)
|
||||||
{
|
{
|
||||||
struct cafe_camera *cam = filp->private_data;
|
struct cafe_camera *cam = filp->private_data;
|
||||||
|
|
||||||
|
@ -1759,7 +1759,7 @@ static void cafe_v4l_dev_release(struct video_device *vd)
|
||||||
* clone it for specific real devices.
|
* clone it for specific real devices.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const struct file_operations cafe_v4l_fops = {
|
static const struct v4l2_file_operations cafe_v4l_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = cafe_v4l_open,
|
.open = cafe_v4l_open,
|
||||||
.release = cafe_v4l_release,
|
.release = cafe_v4l_release,
|
||||||
|
@ -1767,7 +1767,6 @@ static const struct file_operations cafe_v4l_fops = {
|
||||||
.poll = cafe_v4l_poll,
|
.poll = cafe_v4l_poll,
|
||||||
.mmap = cafe_v4l_mmap,
|
.mmap = cafe_v4l_mmap,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops cafe_v4l_ioctl_ops = {
|
static const struct v4l2_ioctl_ops cafe_v4l_ioctl_ops = {
|
||||||
|
|
|
@ -3148,7 +3148,7 @@ static void put_cam(struct cpia_camera_ops* ops)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------------- V4L interface --------------------- */
|
/* ------------------------- V4L interface --------------------- */
|
||||||
static int cpia_open(struct inode *inode, struct file *file)
|
static int cpia_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *dev = video_devdata(file);
|
struct video_device *dev = video_devdata(file);
|
||||||
struct cam_data *cam = video_get_drvdata(dev);
|
struct cam_data *cam = video_get_drvdata(dev);
|
||||||
|
@ -3225,7 +3225,7 @@ static int cpia_open(struct inode *inode, struct file *file)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cpia_close(struct inode *inode, struct file *file)
|
static int cpia_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *dev = file->private_data;
|
struct video_device *dev = file->private_data;
|
||||||
struct cam_data *cam = video_get_drvdata(dev);
|
struct cam_data *cam = video_get_drvdata(dev);
|
||||||
|
@ -3720,7 +3720,7 @@ static int cpia_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cpia_ioctl(struct inode *inode, struct file *file,
|
static int cpia_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return video_usercopy(file, cmd, arg, cpia_do_ioctl);
|
return video_usercopy(file, cmd, arg, cpia_do_ioctl);
|
||||||
|
@ -3780,17 +3780,13 @@ static int cpia_mmap(struct file *file, struct vm_area_struct *vma)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations cpia_fops = {
|
static const struct v4l2_file_operations cpia_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = cpia_open,
|
.open = cpia_open,
|
||||||
.release = cpia_close,
|
.release = cpia_close,
|
||||||
.read = cpia_read,
|
.read = cpia_read,
|
||||||
.mmap = cpia_mmap,
|
.mmap = cpia_mmap,
|
||||||
.ioctl = cpia_ioctl,
|
.ioctl = cpia_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct video_device cpia_template = {
|
static struct video_device cpia_template = {
|
||||||
|
|
|
@ -239,7 +239,7 @@ static struct v4l2_queryctrl controls[] = {
|
||||||
* cpia2_open
|
* cpia2_open
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
static int cpia2_open(struct inode *inode, struct file *file)
|
static int cpia2_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct camera_data *cam = video_drvdata(file);
|
struct camera_data *cam = video_drvdata(file);
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
|
@ -302,7 +302,7 @@ err_return:
|
||||||
* cpia2_close
|
* cpia2_close
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
static int cpia2_close(struct inode *inode, struct file *file)
|
static int cpia2_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *dev = video_devdata(file);
|
struct video_device *dev = video_devdata(file);
|
||||||
struct camera_data *cam = video_get_drvdata(dev);
|
struct camera_data *cam = video_get_drvdata(dev);
|
||||||
|
@ -1841,7 +1841,7 @@ static int cpia2_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cpia2_ioctl(struct inode *inode, struct file *file,
|
static int cpia2_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return video_usercopy(file, cmd, arg, cpia2_do_ioctl);
|
return video_usercopy(file, cmd, arg, cpia2_do_ioctl);
|
||||||
|
@ -1912,17 +1912,13 @@ static void reset_camera_struct_v4l(struct camera_data *cam)
|
||||||
/***
|
/***
|
||||||
* The v4l video device structure initialized for this device
|
* The v4l video device structure initialized for this device
|
||||||
***/
|
***/
|
||||||
static const struct file_operations fops_template = {
|
static const struct v4l2_file_operations fops_template = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = cpia2_open,
|
.open = cpia2_open,
|
||||||
.release = cpia2_close,
|
.release = cpia2_close,
|
||||||
.read = cpia2_v4l_read,
|
.read = cpia2_v4l_read,
|
||||||
.poll = cpia2_v4l_poll,
|
.poll = cpia2_v4l_poll,
|
||||||
.ioctl = cpia2_ioctl,
|
.ioctl = cpia2_ioctl,
|
||||||
.llseek = no_llseek,
|
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.mmap = cpia2_mmap,
|
.mmap = cpia2_mmap,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -552,7 +552,7 @@ void cx18_stop_capture(struct cx18_open_id *id, int gop_end)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int cx18_v4l2_close(struct inode *inode, struct file *filp)
|
int cx18_v4l2_close(struct file *filp)
|
||||||
{
|
{
|
||||||
struct cx18_open_id *id = filp->private_data;
|
struct cx18_open_id *id = filp->private_data;
|
||||||
struct cx18 *cx = id->cx;
|
struct cx18 *cx = id->cx;
|
||||||
|
@ -650,12 +650,12 @@ static int cx18_serialized_open(struct cx18_stream *s, struct file *filp)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cx18_v4l2_open(struct inode *inode, struct file *filp)
|
int cx18_v4l2_open(struct file *filp)
|
||||||
{
|
{
|
||||||
int res, x, y = 0;
|
int res, x, y = 0;
|
||||||
struct cx18 *cx = NULL;
|
struct cx18 *cx = NULL;
|
||||||
struct cx18_stream *s = NULL;
|
struct cx18_stream *s = NULL;
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(filp)->minor;
|
||||||
|
|
||||||
/* Find which card this open was on */
|
/* Find which card this open was on */
|
||||||
spin_lock(&cx18_cards_lock);
|
spin_lock(&cx18_cards_lock);
|
||||||
|
|
|
@ -22,12 +22,12 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Testing/Debugging */
|
/* Testing/Debugging */
|
||||||
int cx18_v4l2_open(struct inode *inode, struct file *filp);
|
int cx18_v4l2_open(struct file *filp);
|
||||||
ssize_t cx18_v4l2_read(struct file *filp, char __user *buf, size_t count,
|
ssize_t cx18_v4l2_read(struct file *filp, char __user *buf, size_t count,
|
||||||
loff_t *pos);
|
loff_t *pos);
|
||||||
ssize_t cx18_v4l2_write(struct file *filp, const char __user *buf, size_t count,
|
ssize_t cx18_v4l2_write(struct file *filp, const char __user *buf, size_t count,
|
||||||
loff_t *pos);
|
loff_t *pos);
|
||||||
int cx18_v4l2_close(struct inode *inode, struct file *filp);
|
int cx18_v4l2_close(struct file *filp);
|
||||||
unsigned int cx18_v4l2_enc_poll(struct file *filp, poll_table *wait);
|
unsigned int cx18_v4l2_enc_poll(struct file *filp, poll_table *wait);
|
||||||
int cx18_start_capture(struct cx18_open_id *id);
|
int cx18_start_capture(struct cx18_open_id *id);
|
||||||
void cx18_stop_capture(struct cx18_open_id *id, int gop_end);
|
void cx18_stop_capture(struct cx18_open_id *id, int gop_end);
|
||||||
|
|
|
@ -783,7 +783,7 @@ static int cx18_default(struct file *file, void *fh, int cmd, void *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cx18_v4l2_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
|
int cx18_v4l2_ioctl(struct file *filp, unsigned int cmd,
|
||||||
unsigned long arg)
|
unsigned long arg)
|
||||||
{
|
{
|
||||||
struct video_device *vfd = video_devdata(filp);
|
struct video_device *vfd = video_devdata(filp);
|
||||||
|
@ -795,7 +795,7 @@ int cx18_v4l2_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
|
||||||
|
|
||||||
if (cx18_debug & CX18_DBGFLG_IOCTL)
|
if (cx18_debug & CX18_DBGFLG_IOCTL)
|
||||||
vfd->debug = V4L2_DEBUG_IOCTL | V4L2_DEBUG_IOCTL_ARG;
|
vfd->debug = V4L2_DEBUG_IOCTL | V4L2_DEBUG_IOCTL_ARG;
|
||||||
res = video_ioctl2(inode, filp, cmd, arg);
|
res = video_ioctl2(filp, cmd, arg);
|
||||||
vfd->debug = 0;
|
vfd->debug = 0;
|
||||||
mutex_unlock(&cx->serialize_lock);
|
mutex_unlock(&cx->serialize_lock);
|
||||||
return res;
|
return res;
|
||||||
|
|
|
@ -29,5 +29,5 @@ void cx18_set_funcs(struct video_device *vdev);
|
||||||
int cx18_s_std(struct file *file, void *fh, v4l2_std_id *std);
|
int cx18_s_std(struct file *file, void *fh, v4l2_std_id *std);
|
||||||
int cx18_s_frequency(struct file *file, void *fh, struct v4l2_frequency *vf);
|
int cx18_s_frequency(struct file *file, void *fh, struct v4l2_frequency *vf);
|
||||||
int cx18_s_input(struct file *file, void *fh, unsigned int inp);
|
int cx18_s_input(struct file *file, void *fh, unsigned int inp);
|
||||||
int cx18_v4l2_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
|
int cx18_v4l2_ioctl(struct file *filp, unsigned int cmd,
|
||||||
unsigned long arg);
|
unsigned long arg);
|
||||||
|
|
|
@ -37,13 +37,12 @@
|
||||||
|
|
||||||
#define CX18_DSP0_INTERRUPT_MASK 0xd0004C
|
#define CX18_DSP0_INTERRUPT_MASK 0xd0004C
|
||||||
|
|
||||||
static struct file_operations cx18_v4l2_enc_fops = {
|
static struct v4l2_file_operations cx18_v4l2_enc_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.read = cx18_v4l2_read,
|
.read = cx18_v4l2_read,
|
||||||
.open = cx18_v4l2_open,
|
.open = cx18_v4l2_open,
|
||||||
/* FIXME change to video_ioctl2 if serialization lock can be removed */
|
/* FIXME change to video_ioctl2 if serialization lock can be removed */
|
||||||
.ioctl = cx18_v4l2_ioctl,
|
.ioctl = cx18_v4l2_ioctl,
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.release = cx18_v4l2_close,
|
.release = cx18_v4l2_close,
|
||||||
.poll = cx18_v4l2_enc_poll,
|
.poll = cx18_v4l2_enc_poll,
|
||||||
};
|
};
|
||||||
|
@ -61,49 +60,41 @@ static struct {
|
||||||
int num_offset;
|
int num_offset;
|
||||||
int dma;
|
int dma;
|
||||||
enum v4l2_buf_type buf_type;
|
enum v4l2_buf_type buf_type;
|
||||||
struct file_operations *fops;
|
|
||||||
} cx18_stream_info[] = {
|
} cx18_stream_info[] = {
|
||||||
{ /* CX18_ENC_STREAM_TYPE_MPG */
|
{ /* CX18_ENC_STREAM_TYPE_MPG */
|
||||||
"encoder MPEG",
|
"encoder MPEG",
|
||||||
VFL_TYPE_GRABBER, 0,
|
VFL_TYPE_GRABBER, 0,
|
||||||
PCI_DMA_FROMDEVICE, V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
PCI_DMA_FROMDEVICE, V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
&cx18_v4l2_enc_fops
|
|
||||||
},
|
},
|
||||||
{ /* CX18_ENC_STREAM_TYPE_TS */
|
{ /* CX18_ENC_STREAM_TYPE_TS */
|
||||||
"TS",
|
"TS",
|
||||||
VFL_TYPE_GRABBER, -1,
|
VFL_TYPE_GRABBER, -1,
|
||||||
PCI_DMA_FROMDEVICE, V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
PCI_DMA_FROMDEVICE, V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
&cx18_v4l2_enc_fops
|
|
||||||
},
|
},
|
||||||
{ /* CX18_ENC_STREAM_TYPE_YUV */
|
{ /* CX18_ENC_STREAM_TYPE_YUV */
|
||||||
"encoder YUV",
|
"encoder YUV",
|
||||||
VFL_TYPE_GRABBER, CX18_V4L2_ENC_YUV_OFFSET,
|
VFL_TYPE_GRABBER, CX18_V4L2_ENC_YUV_OFFSET,
|
||||||
PCI_DMA_FROMDEVICE, V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
PCI_DMA_FROMDEVICE, V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
&cx18_v4l2_enc_fops
|
|
||||||
},
|
},
|
||||||
{ /* CX18_ENC_STREAM_TYPE_VBI */
|
{ /* CX18_ENC_STREAM_TYPE_VBI */
|
||||||
"encoder VBI",
|
"encoder VBI",
|
||||||
VFL_TYPE_VBI, 0,
|
VFL_TYPE_VBI, 0,
|
||||||
PCI_DMA_FROMDEVICE, V4L2_BUF_TYPE_VBI_CAPTURE,
|
PCI_DMA_FROMDEVICE, V4L2_BUF_TYPE_VBI_CAPTURE,
|
||||||
&cx18_v4l2_enc_fops
|
|
||||||
},
|
},
|
||||||
{ /* CX18_ENC_STREAM_TYPE_PCM */
|
{ /* CX18_ENC_STREAM_TYPE_PCM */
|
||||||
"encoder PCM audio",
|
"encoder PCM audio",
|
||||||
VFL_TYPE_GRABBER, CX18_V4L2_ENC_PCM_OFFSET,
|
VFL_TYPE_GRABBER, CX18_V4L2_ENC_PCM_OFFSET,
|
||||||
PCI_DMA_FROMDEVICE, V4L2_BUF_TYPE_PRIVATE,
|
PCI_DMA_FROMDEVICE, V4L2_BUF_TYPE_PRIVATE,
|
||||||
&cx18_v4l2_enc_fops
|
|
||||||
},
|
},
|
||||||
{ /* CX18_ENC_STREAM_TYPE_IDX */
|
{ /* CX18_ENC_STREAM_TYPE_IDX */
|
||||||
"encoder IDX",
|
"encoder IDX",
|
||||||
VFL_TYPE_GRABBER, -1,
|
VFL_TYPE_GRABBER, -1,
|
||||||
PCI_DMA_FROMDEVICE, V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
PCI_DMA_FROMDEVICE, V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
&cx18_v4l2_enc_fops
|
|
||||||
},
|
},
|
||||||
{ /* CX18_ENC_STREAM_TYPE_RAD */
|
{ /* CX18_ENC_STREAM_TYPE_RAD */
|
||||||
"encoder radio",
|
"encoder radio",
|
||||||
VFL_TYPE_RADIO, 0,
|
VFL_TYPE_RADIO, 0,
|
||||||
PCI_DMA_NONE, V4L2_BUF_TYPE_PRIVATE,
|
PCI_DMA_NONE, V4L2_BUF_TYPE_PRIVATE,
|
||||||
&cx18_v4l2_enc_fops
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -184,7 +175,7 @@ static int cx18_prep_dev(struct cx18 *cx, int type)
|
||||||
|
|
||||||
s->v4l2dev->num = num;
|
s->v4l2dev->num = num;
|
||||||
s->v4l2dev->parent = &cx->dev->dev;
|
s->v4l2dev->parent = &cx->dev->dev;
|
||||||
s->v4l2dev->fops = cx18_stream_info[type].fops;
|
s->v4l2dev->fops = &cx18_v4l2_enc_fops;
|
||||||
s->v4l2dev->release = video_device_release;
|
s->v4l2dev->release = video_device_release;
|
||||||
s->v4l2dev->tvnorms = V4L2_STD_ALL;
|
s->v4l2dev->tvnorms = V4L2_STD_ALL;
|
||||||
cx18_set_funcs(s->v4l2dev);
|
cx18_set_funcs(s->v4l2dev);
|
||||||
|
|
|
@ -1573,9 +1573,9 @@ static int vidioc_queryctrl(struct file *file, void *priv,
|
||||||
return cx23885_queryctrl(dev, c);
|
return cx23885_queryctrl(dev, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mpeg_open(struct inode *inode, struct file *file)
|
static int mpeg_open(struct file *file)
|
||||||
{
|
{
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(file)->minor;
|
||||||
struct cx23885_dev *h, *dev = NULL;
|
struct cx23885_dev *h, *dev = NULL;
|
||||||
struct list_head *list;
|
struct list_head *list;
|
||||||
struct cx23885_fh *fh;
|
struct cx23885_fh *fh;
|
||||||
|
@ -1617,7 +1617,7 @@ static int mpeg_open(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mpeg_release(struct inode *inode, struct file *file)
|
static int mpeg_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct cx23885_fh *fh = file->private_data;
|
struct cx23885_fh *fh = file->private_data;
|
||||||
struct cx23885_dev *dev = fh->dev;
|
struct cx23885_dev *dev = fh->dev;
|
||||||
|
@ -1694,15 +1694,13 @@ static int mpeg_mmap(struct file *file, struct vm_area_struct *vma)
|
||||||
return videobuf_mmap_mapper(&fh->mpegq, vma);
|
return videobuf_mmap_mapper(&fh->mpegq, vma);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct file_operations mpeg_fops = {
|
static struct v4l2_file_operations mpeg_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = mpeg_open,
|
.open = mpeg_open,
|
||||||
.release = mpeg_release,
|
.release = mpeg_release,
|
||||||
.read = mpeg_read,
|
.read = mpeg_read,
|
||||||
.poll = mpeg_poll,
|
.poll = mpeg_poll,
|
||||||
.mmap = mpeg_mmap,
|
.mmap = mpeg_mmap,
|
||||||
.ioctl = video_ioctl2,
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops mpeg_ioctl_ops = {
|
static const struct v4l2_ioctl_ops mpeg_ioctl_ops = {
|
||||||
|
|
|
@ -718,9 +718,9 @@ static int get_resource(struct cx23885_fh *fh)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int video_open(struct inode *inode, struct file *file)
|
static int video_open(struct file *file)
|
||||||
{
|
{
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(file)->minor;
|
||||||
struct cx23885_dev *h, *dev = NULL;
|
struct cx23885_dev *h, *dev = NULL;
|
||||||
struct cx23885_fh *fh;
|
struct cx23885_fh *fh;
|
||||||
struct list_head *list;
|
struct list_head *list;
|
||||||
|
@ -834,7 +834,7 @@ static unsigned int video_poll(struct file *file,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int video_release(struct inode *inode, struct file *file)
|
static int video_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct cx23885_fh *fh = file->private_data;
|
struct cx23885_fh *fh = file->private_data;
|
||||||
struct cx23885_dev *dev = fh->dev;
|
struct cx23885_dev *dev = fh->dev;
|
||||||
|
@ -1422,7 +1422,7 @@ int cx23885_video_irq(struct cx23885_dev *dev, u32 status)
|
||||||
/* ----------------------------------------------------------- */
|
/* ----------------------------------------------------------- */
|
||||||
/* exported stuff */
|
/* exported stuff */
|
||||||
|
|
||||||
static const struct file_operations video_fops = {
|
static const struct v4l2_file_operations video_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = video_open,
|
.open = video_open,
|
||||||
.release = video_release,
|
.release = video_release,
|
||||||
|
@ -1430,8 +1430,6 @@ static const struct file_operations video_fops = {
|
||||||
.poll = video_poll,
|
.poll = video_poll,
|
||||||
.mmap = video_mmap,
|
.mmap = video_mmap,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops video_ioctl_ops = {
|
static const struct v4l2_ioctl_ops video_ioctl_ops = {
|
||||||
|
@ -1479,13 +1477,11 @@ static struct video_device cx23885_video_template = {
|
||||||
.current_norm = V4L2_STD_NTSC_M,
|
.current_norm = V4L2_STD_NTSC_M,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct file_operations radio_fops = {
|
static const struct v4l2_file_operations radio_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = video_open,
|
.open = video_open,
|
||||||
.release = video_release,
|
.release = video_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1049,16 +1049,16 @@ static int vidioc_s_std (struct file *file, void *priv, v4l2_std_id *id)
|
||||||
|
|
||||||
/* FIXME: cx88_ioctl_hook not implemented */
|
/* FIXME: cx88_ioctl_hook not implemented */
|
||||||
|
|
||||||
static int mpeg_open(struct inode *inode, struct file *file)
|
static int mpeg_open(struct file *file)
|
||||||
{
|
{
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(file)->minor;
|
||||||
struct cx8802_dev *dev = NULL;
|
struct cx8802_dev *dev = NULL;
|
||||||
struct cx8802_fh *fh;
|
struct cx8802_fh *fh;
|
||||||
struct cx8802_driver *drv = NULL;
|
struct cx8802_driver *drv = NULL;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
lock_kernel();
|
lock_kernel();
|
||||||
dev = cx8802_get_device(inode);
|
dev = cx8802_get_device(minor);
|
||||||
|
|
||||||
dprintk( 1, "%s\n", __func__);
|
dprintk( 1, "%s\n", __func__);
|
||||||
|
|
||||||
|
@ -1114,7 +1114,7 @@ static int mpeg_open(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mpeg_release(struct inode *inode, struct file *file)
|
static int mpeg_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct cx8802_fh *fh = file->private_data;
|
struct cx8802_fh *fh = file->private_data;
|
||||||
struct cx8802_dev *dev = fh->dev;
|
struct cx8802_dev *dev = fh->dev;
|
||||||
|
@ -1132,7 +1132,7 @@ static int mpeg_release(struct inode *inode, struct file *file)
|
||||||
kfree(fh);
|
kfree(fh);
|
||||||
|
|
||||||
/* Make sure we release the hardware */
|
/* Make sure we release the hardware */
|
||||||
dev = cx8802_get_device(inode);
|
dev = cx8802_get_device(video_devdata(file)->minor);
|
||||||
if (dev == NULL)
|
if (dev == NULL)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
|
@ -1178,7 +1178,7 @@ mpeg_mmap(struct file *file, struct vm_area_struct * vma)
|
||||||
return videobuf_mmap_mapper(&fh->mpegq, vma);
|
return videobuf_mmap_mapper(&fh->mpegq, vma);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations mpeg_fops =
|
static const struct v4l2_file_operations mpeg_fops =
|
||||||
{
|
{
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = mpeg_open,
|
.open = mpeg_open,
|
||||||
|
@ -1187,7 +1187,6 @@ static const struct file_operations mpeg_fops =
|
||||||
.poll = mpeg_poll,
|
.poll = mpeg_poll,
|
||||||
.mmap = mpeg_mmap,
|
.mmap = mpeg_mmap,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops mpeg_ioctl_ops = {
|
static const struct v4l2_ioctl_ops mpeg_ioctl_ops = {
|
||||||
|
|
|
@ -578,9 +578,8 @@ static int cx8802_resume_common(struct pci_dev *pci_dev)
|
||||||
|
|
||||||
#if defined(CONFIG_VIDEO_CX88_BLACKBIRD) || \
|
#if defined(CONFIG_VIDEO_CX88_BLACKBIRD) || \
|
||||||
defined(CONFIG_VIDEO_CX88_BLACKBIRD_MODULE)
|
defined(CONFIG_VIDEO_CX88_BLACKBIRD_MODULE)
|
||||||
struct cx8802_dev * cx8802_get_device(struct inode *inode)
|
struct cx8802_dev *cx8802_get_device(int minor)
|
||||||
{
|
{
|
||||||
int minor = iminor(inode);
|
|
||||||
struct cx8802_dev *dev;
|
struct cx8802_dev *dev;
|
||||||
|
|
||||||
list_for_each_entry(dev, &cx8802_devlist, devlist)
|
list_for_each_entry(dev, &cx8802_devlist, devlist)
|
||||||
|
|
|
@ -757,9 +757,9 @@ static int get_ressource(struct cx8800_fh *fh)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int video_open(struct inode *inode, struct file *file)
|
static int video_open(struct file *file)
|
||||||
{
|
{
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(file)->minor;
|
||||||
struct cx8800_dev *h,*dev = NULL;
|
struct cx8800_dev *h,*dev = NULL;
|
||||||
struct cx88_core *core;
|
struct cx88_core *core;
|
||||||
struct cx8800_fh *fh;
|
struct cx8800_fh *fh;
|
||||||
|
@ -904,7 +904,7 @@ video_poll(struct file *file, struct poll_table_struct *wait)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int video_release(struct inode *inode, struct file *file)
|
static int video_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct cx8800_fh *fh = file->private_data;
|
struct cx8800_fh *fh = file->private_data;
|
||||||
struct cx8800_dev *dev = fh->dev;
|
struct cx8800_dev *dev = fh->dev;
|
||||||
|
@ -1693,7 +1693,7 @@ static irqreturn_t cx8800_irq(int irq, void *dev_id)
|
||||||
/* ----------------------------------------------------------- */
|
/* ----------------------------------------------------------- */
|
||||||
/* exported stuff */
|
/* exported stuff */
|
||||||
|
|
||||||
static const struct file_operations video_fops =
|
static const struct v4l2_file_operations video_fops =
|
||||||
{
|
{
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = video_open,
|
.open = video_open,
|
||||||
|
@ -1702,8 +1702,6 @@ static const struct file_operations video_fops =
|
||||||
.poll = video_poll,
|
.poll = video_poll,
|
||||||
.mmap = video_mmap,
|
.mmap = video_mmap,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops video_ioctl_ops = {
|
static const struct v4l2_ioctl_ops video_ioctl_ops = {
|
||||||
|
@ -1752,14 +1750,12 @@ static struct video_device cx8800_video_template = {
|
||||||
.current_norm = V4L2_STD_NTSC_M,
|
.current_norm = V4L2_STD_NTSC_M,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct file_operations radio_fops =
|
static const struct v4l2_file_operations radio_fops =
|
||||||
{
|
{
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = video_open,
|
.open = video_open,
|
||||||
.release = video_release,
|
.release = video_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops radio_ioctl_ops = {
|
static const struct v4l2_ioctl_ops radio_ioctl_ops = {
|
||||||
|
|
|
@ -643,7 +643,7 @@ int cx88_audio_thread(void *data);
|
||||||
|
|
||||||
int cx8802_register_driver(struct cx8802_driver *drv);
|
int cx8802_register_driver(struct cx8802_driver *drv);
|
||||||
int cx8802_unregister_driver(struct cx8802_driver *drv);
|
int cx8802_unregister_driver(struct cx8802_driver *drv);
|
||||||
struct cx8802_dev * cx8802_get_device(struct inode *inode);
|
struct cx8802_dev *cx8802_get_device(int minor);
|
||||||
struct cx8802_driver * cx8802_get_driver(struct cx8802_dev *dev, enum cx88_board_type btype);
|
struct cx8802_driver * cx8802_get_driver(struct cx8802_dev *dev, enum cx88_board_type btype);
|
||||||
|
|
||||||
/* ----------------------------------------------------------- */
|
/* ----------------------------------------------------------- */
|
||||||
|
|
|
@ -1000,12 +1000,11 @@ void em28xx_wake_i2c(struct em28xx *dev)
|
||||||
static LIST_HEAD(em28xx_devlist);
|
static LIST_HEAD(em28xx_devlist);
|
||||||
static DEFINE_MUTEX(em28xx_devlist_mutex);
|
static DEFINE_MUTEX(em28xx_devlist_mutex);
|
||||||
|
|
||||||
struct em28xx *em28xx_get_device(struct inode *inode,
|
struct em28xx *em28xx_get_device(int minor,
|
||||||
enum v4l2_buf_type *fh_type,
|
enum v4l2_buf_type *fh_type,
|
||||||
int *has_radio)
|
int *has_radio)
|
||||||
{
|
{
|
||||||
struct em28xx *h, *dev = NULL;
|
struct em28xx *h, *dev = NULL;
|
||||||
int minor = iminor(inode);
|
|
||||||
|
|
||||||
*fh_type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
*fh_type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
*has_radio = 0;
|
*has_radio = 0;
|
||||||
|
|
|
@ -1582,15 +1582,15 @@ static int radio_queryctrl(struct file *file, void *priv,
|
||||||
* em28xx_v4l2_open()
|
* em28xx_v4l2_open()
|
||||||
* inits the device and starts isoc transfer
|
* inits the device and starts isoc transfer
|
||||||
*/
|
*/
|
||||||
static int em28xx_v4l2_open(struct inode *inode, struct file *filp)
|
static int em28xx_v4l2_open(struct file *filp)
|
||||||
{
|
{
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(filp)->minor;
|
||||||
int errCode = 0, radio;
|
int errCode = 0, radio;
|
||||||
struct em28xx *dev;
|
struct em28xx *dev;
|
||||||
enum v4l2_buf_type fh_type;
|
enum v4l2_buf_type fh_type;
|
||||||
struct em28xx_fh *fh;
|
struct em28xx_fh *fh;
|
||||||
|
|
||||||
dev = em28xx_get_device(inode, &fh_type, &radio);
|
dev = em28xx_get_device(minor, &fh_type, &radio);
|
||||||
|
|
||||||
if (NULL == dev)
|
if (NULL == dev)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
@ -1686,7 +1686,7 @@ void em28xx_release_analog_resources(struct em28xx *dev)
|
||||||
* stops streaming and deallocates all resources allocated by the v4l2
|
* stops streaming and deallocates all resources allocated by the v4l2
|
||||||
* calls and ioctls
|
* calls and ioctls
|
||||||
*/
|
*/
|
||||||
static int em28xx_v4l2_close(struct inode *inode, struct file *filp)
|
static int em28xx_v4l2_close(struct file *filp)
|
||||||
{
|
{
|
||||||
struct em28xx_fh *fh = filp->private_data;
|
struct em28xx_fh *fh = filp->private_data;
|
||||||
struct em28xx *dev = fh->dev;
|
struct em28xx *dev = fh->dev;
|
||||||
|
@ -1826,7 +1826,7 @@ static int em28xx_v4l2_mmap(struct file *filp, struct vm_area_struct *vma)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations em28xx_v4l_fops = {
|
static const struct v4l2_file_operations em28xx_v4l_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = em28xx_v4l2_open,
|
.open = em28xx_v4l2_open,
|
||||||
.release = em28xx_v4l2_close,
|
.release = em28xx_v4l2_close,
|
||||||
|
@ -1834,8 +1834,6 @@ static const struct file_operations em28xx_v4l_fops = {
|
||||||
.poll = em28xx_v4l2_poll,
|
.poll = em28xx_v4l2_poll,
|
||||||
.mmap = em28xx_v4l2_mmap,
|
.mmap = em28xx_v4l2_mmap,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.llseek = no_llseek,
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops video_ioctl_ops = {
|
static const struct v4l2_ioctl_ops video_ioctl_ops = {
|
||||||
|
@ -1890,13 +1888,11 @@ static const struct video_device em28xx_video_template = {
|
||||||
.current_norm = V4L2_STD_PAL,
|
.current_norm = V4L2_STD_PAL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct file_operations radio_fops = {
|
static const struct v4l2_file_operations radio_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = em28xx_v4l2_open,
|
.open = em28xx_v4l2_open,
|
||||||
.release = em28xx_v4l2_close,
|
.release = em28xx_v4l2_close,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops radio_ioctl_ops = {
|
static const struct v4l2_ioctl_ops radio_ioctl_ops = {
|
||||||
|
|
|
@ -583,7 +583,7 @@ int em28xx_gpio_set(struct em28xx *dev, struct em28xx_reg_seq *gpio);
|
||||||
void em28xx_wake_i2c(struct em28xx *dev);
|
void em28xx_wake_i2c(struct em28xx *dev);
|
||||||
void em28xx_remove_from_devlist(struct em28xx *dev);
|
void em28xx_remove_from_devlist(struct em28xx *dev);
|
||||||
void em28xx_add_into_devlist(struct em28xx *dev);
|
void em28xx_add_into_devlist(struct em28xx *dev);
|
||||||
struct em28xx *em28xx_get_device(struct inode *inode,
|
struct em28xx *em28xx_get_device(int minor,
|
||||||
enum v4l2_buf_type *fh_type,
|
enum v4l2_buf_type *fh_type,
|
||||||
int *has_radio);
|
int *has_radio);
|
||||||
int em28xx_register_extension(struct em28xx_ops *dev);
|
int em28xx_register_extension(struct em28xx_ops *dev);
|
||||||
|
|
|
@ -1206,7 +1206,7 @@ static void et61x251_release_resources(struct kref *kref)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int et61x251_open(struct inode* inode, struct file* filp)
|
static int et61x251_open(struct file *filp)
|
||||||
{
|
{
|
||||||
struct et61x251_device* cam;
|
struct et61x251_device* cam;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
@ -1291,7 +1291,7 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int et61x251_release(struct inode* inode, struct file* filp)
|
static int et61x251_release(struct file *filp)
|
||||||
{
|
{
|
||||||
struct et61x251_device* cam;
|
struct et61x251_device* cam;
|
||||||
|
|
||||||
|
@ -2392,8 +2392,8 @@ et61x251_vidioc_s_parm(struct et61x251_device* cam, void __user * arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int et61x251_ioctl_v4l2(struct inode* inode, struct file* filp,
|
static int et61x251_ioctl_v4l2(struct file *filp,
|
||||||
unsigned int cmd, void __user * arg)
|
unsigned int cmd, void __user *arg)
|
||||||
{
|
{
|
||||||
struct et61x251_device *cam = video_drvdata(filp);
|
struct et61x251_device *cam = video_drvdata(filp);
|
||||||
|
|
||||||
|
@ -2487,7 +2487,7 @@ static int et61x251_ioctl_v4l2(struct inode* inode, struct file* filp,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int et61x251_ioctl(struct inode* inode, struct file* filp,
|
static int et61x251_ioctl(struct file *filp,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct et61x251_device *cam = video_drvdata(filp);
|
struct et61x251_device *cam = video_drvdata(filp);
|
||||||
|
@ -2511,7 +2511,7 @@ static int et61x251_ioctl(struct inode* inode, struct file* filp,
|
||||||
|
|
||||||
V4LDBG(3, "et61x251", cmd);
|
V4LDBG(3, "et61x251", cmd);
|
||||||
|
|
||||||
err = et61x251_ioctl_v4l2(inode, filp, cmd, (void __user *)arg);
|
err = et61x251_ioctl_v4l2(filp, cmd, (void __user *)arg);
|
||||||
|
|
||||||
mutex_unlock(&cam->fileop_mutex);
|
mutex_unlock(&cam->fileop_mutex);
|
||||||
|
|
||||||
|
@ -2519,18 +2519,14 @@ static int et61x251_ioctl(struct inode* inode, struct file* filp,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static const struct file_operations et61x251_fops = {
|
static const struct v4l2_file_operations et61x251_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = et61x251_open,
|
.open = et61x251_open,
|
||||||
.release = et61x251_release,
|
.release = et61x251_release,
|
||||||
.ioctl = et61x251_ioctl,
|
.ioctl = et61x251_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.read = et61x251_read,
|
.read = et61x251_read,
|
||||||
.poll = et61x251_poll,
|
.poll = et61x251_poll,
|
||||||
.mmap = et61x251_mmap,
|
.mmap = et61x251_mmap,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -875,7 +875,7 @@ static void gspca_release(struct video_device *vfd)
|
||||||
kfree(gspca_dev);
|
kfree(gspca_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dev_open(struct inode *inode, struct file *file)
|
static int dev_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct gspca_dev *gspca_dev;
|
struct gspca_dev *gspca_dev;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -922,7 +922,7 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dev_close(struct inode *inode, struct file *file)
|
static int dev_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct gspca_dev *gspca_dev = file->private_data;
|
struct gspca_dev *gspca_dev = file->private_data;
|
||||||
|
|
||||||
|
@ -1802,17 +1802,13 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct file_operations dev_fops = {
|
static struct v4l2_file_operations dev_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = dev_open,
|
.open = dev_open,
|
||||||
.release = dev_close,
|
.release = dev_close,
|
||||||
.read = dev_read,
|
.read = dev_read,
|
||||||
.mmap = dev_mmap,
|
.mmap = dev_mmap,
|
||||||
.unlocked_ioctl = __video_ioctl2,
|
.unlocked_ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
.poll = dev_poll,
|
.poll = dev_poll,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -831,7 +831,7 @@ static void ivtv_stop_decoding(struct ivtv_open_id *id, int flags, u64 pts)
|
||||||
ivtv_release_stream(s);
|
ivtv_release_stream(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ivtv_v4l2_close(struct inode *inode, struct file *filp)
|
int ivtv_v4l2_close(struct file *filp)
|
||||||
{
|
{
|
||||||
struct ivtv_open_id *id = filp->private_data;
|
struct ivtv_open_id *id = filp->private_data;
|
||||||
struct ivtv *itv = id->itv;
|
struct ivtv *itv = id->itv;
|
||||||
|
@ -978,7 +978,7 @@ static int ivtv_serialized_open(struct ivtv_stream *s, struct file *filp)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ivtv_v4l2_open(struct inode *inode, struct file *filp)
|
int ivtv_v4l2_open(struct file *filp)
|
||||||
{
|
{
|
||||||
int res;
|
int res;
|
||||||
struct ivtv *itv = NULL;
|
struct ivtv *itv = NULL;
|
||||||
|
|
|
@ -22,12 +22,12 @@
|
||||||
#define IVTV_FILEOPS_H
|
#define IVTV_FILEOPS_H
|
||||||
|
|
||||||
/* Testing/Debugging */
|
/* Testing/Debugging */
|
||||||
int ivtv_v4l2_open(struct inode *inode, struct file *filp);
|
int ivtv_v4l2_open(struct file *filp);
|
||||||
ssize_t ivtv_v4l2_read(struct file *filp, char __user *buf, size_t count,
|
ssize_t ivtv_v4l2_read(struct file *filp, char __user *buf, size_t count,
|
||||||
loff_t * pos);
|
loff_t * pos);
|
||||||
ssize_t ivtv_v4l2_write(struct file *filp, const char __user *buf, size_t count,
|
ssize_t ivtv_v4l2_write(struct file *filp, const char __user *buf, size_t count,
|
||||||
loff_t * pos);
|
loff_t * pos);
|
||||||
int ivtv_v4l2_close(struct inode *inode, struct file *filp);
|
int ivtv_v4l2_close(struct file *filp);
|
||||||
unsigned int ivtv_v4l2_enc_poll(struct file *filp, poll_table * wait);
|
unsigned int ivtv_v4l2_enc_poll(struct file *filp, poll_table * wait);
|
||||||
unsigned int ivtv_v4l2_dec_poll(struct file *filp, poll_table * wait);
|
unsigned int ivtv_v4l2_dec_poll(struct file *filp, poll_table * wait);
|
||||||
int ivtv_start_capture(struct ivtv_open_id *id);
|
int ivtv_start_capture(struct ivtv_open_id *id);
|
||||||
|
|
|
@ -1827,7 +1827,7 @@ static long ivtv_serialized_ioctl(struct ivtv *itv, struct file *filp,
|
||||||
|
|
||||||
if (ivtv_debug & IVTV_DBGFLG_IOCTL)
|
if (ivtv_debug & IVTV_DBGFLG_IOCTL)
|
||||||
vfd->debug = V4L2_DEBUG_IOCTL | V4L2_DEBUG_IOCTL_ARG;
|
vfd->debug = V4L2_DEBUG_IOCTL | V4L2_DEBUG_IOCTL_ARG;
|
||||||
ret = __video_ioctl2(filp, cmd, arg);
|
ret = video_ioctl2(filp, cmd, arg);
|
||||||
vfd->debug = 0;
|
vfd->debug = 0;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,24 +43,22 @@
|
||||||
#include "ivtv-cards.h"
|
#include "ivtv-cards.h"
|
||||||
#include "ivtv-streams.h"
|
#include "ivtv-streams.h"
|
||||||
|
|
||||||
static const struct file_operations ivtv_v4l2_enc_fops = {
|
static const struct v4l2_file_operations ivtv_v4l2_enc_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.read = ivtv_v4l2_read,
|
.read = ivtv_v4l2_read,
|
||||||
.write = ivtv_v4l2_write,
|
.write = ivtv_v4l2_write,
|
||||||
.open = ivtv_v4l2_open,
|
.open = ivtv_v4l2_open,
|
||||||
.unlocked_ioctl = ivtv_v4l2_ioctl,
|
.unlocked_ioctl = ivtv_v4l2_ioctl,
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.release = ivtv_v4l2_close,
|
.release = ivtv_v4l2_close,
|
||||||
.poll = ivtv_v4l2_enc_poll,
|
.poll = ivtv_v4l2_enc_poll,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct file_operations ivtv_v4l2_dec_fops = {
|
static const struct v4l2_file_operations ivtv_v4l2_dec_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.read = ivtv_v4l2_read,
|
.read = ivtv_v4l2_read,
|
||||||
.write = ivtv_v4l2_write,
|
.write = ivtv_v4l2_write,
|
||||||
.open = ivtv_v4l2_open,
|
.open = ivtv_v4l2_open,
|
||||||
.unlocked_ioctl = ivtv_v4l2_ioctl,
|
.unlocked_ioctl = ivtv_v4l2_ioctl,
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.release = ivtv_v4l2_close,
|
.release = ivtv_v4l2_close,
|
||||||
.poll = ivtv_v4l2_dec_poll,
|
.poll = ivtv_v4l2_dec_poll,
|
||||||
};
|
};
|
||||||
|
@ -78,7 +76,7 @@ static struct {
|
||||||
int num_offset;
|
int num_offset;
|
||||||
int dma, pio;
|
int dma, pio;
|
||||||
enum v4l2_buf_type buf_type;
|
enum v4l2_buf_type buf_type;
|
||||||
const struct file_operations *fops;
|
const struct v4l2_file_operations *fops;
|
||||||
} ivtv_stream_info[] = {
|
} ivtv_stream_info[] = {
|
||||||
{ /* IVTV_ENC_STREAM_TYPE_MPG */
|
{ /* IVTV_ENC_STREAM_TYPE_MPG */
|
||||||
"encoder MPG",
|
"encoder MPG",
|
||||||
|
|
|
@ -841,7 +841,7 @@ again:
|
||||||
/* video4linux integration */
|
/* video4linux integration */
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
static int meye_open(struct inode *inode, struct file *file)
|
static int meye_open(struct file *file)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -863,7 +863,7 @@ static int meye_open(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int meye_release(struct inode *inode, struct file *file)
|
static int meye_release(struct file *file)
|
||||||
{
|
{
|
||||||
mchip_hic_stop();
|
mchip_hic_stop();
|
||||||
mchip_dma_free();
|
mchip_dma_free();
|
||||||
|
@ -1684,17 +1684,13 @@ static int meye_mmap(struct file *file, struct vm_area_struct *vma)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations meye_fops = {
|
static const struct v4l2_file_operations meye_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = meye_open,
|
.open = meye_open,
|
||||||
.release = meye_release,
|
.release = meye_release,
|
||||||
.mmap = meye_mmap,
|
.mmap = meye_mmap,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.poll = meye_poll,
|
.poll = meye_poll,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops meye_ioctl_ops = {
|
static const struct v4l2_ioctl_ops meye_ioctl_ops = {
|
||||||
|
|
|
@ -1454,9 +1454,9 @@ static int omap24xxcam_mmap(struct file *file, struct vm_area_struct *vma)
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int omap24xxcam_open(struct inode *inode, struct file *file)
|
static int omap24xxcam_open(struct file *file)
|
||||||
{
|
{
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(file)->minor;
|
||||||
struct omap24xxcam_device *cam = omap24xxcam.priv;
|
struct omap24xxcam_device *cam = omap24xxcam.priv;
|
||||||
struct omap24xxcam_fh *fh;
|
struct omap24xxcam_fh *fh;
|
||||||
struct v4l2_format format;
|
struct v4l2_format format;
|
||||||
|
@ -1511,7 +1511,7 @@ out_try_module_get:
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int omap24xxcam_release(struct inode *inode, struct file *file)
|
static int omap24xxcam_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct omap24xxcam_fh *fh = file->private_data;
|
struct omap24xxcam_fh *fh = file->private_data;
|
||||||
struct omap24xxcam_device *cam = fh->cam;
|
struct omap24xxcam_device *cam = fh->cam;
|
||||||
|
@ -1559,8 +1559,7 @@ static int omap24xxcam_release(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct file_operations omap24xxcam_fops = {
|
static struct v4l2_file_operations omap24xxcam_fops = {
|
||||||
.llseek = no_llseek,
|
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.poll = omap24xxcam_poll,
|
.poll = omap24xxcam_poll,
|
||||||
.mmap = omap24xxcam_mmap,
|
.mmap = omap24xxcam_mmap,
|
||||||
|
|
|
@ -3915,7 +3915,7 @@ ov51x_dealloc(struct usb_ov511 *ov)
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ov51x_v4l1_open(struct inode *inode, struct file *file)
|
ov51x_v4l1_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *vdev = video_devdata(file);
|
struct video_device *vdev = video_devdata(file);
|
||||||
struct usb_ov511 *ov = video_get_drvdata(vdev);
|
struct usb_ov511 *ov = video_get_drvdata(vdev);
|
||||||
|
@ -3972,7 +3972,7 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ov51x_v4l1_close(struct inode *inode, struct file *file)
|
ov51x_v4l1_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *vdev = file->private_data;
|
struct video_device *vdev = file->private_data;
|
||||||
struct usb_ov511 *ov = video_get_drvdata(vdev);
|
struct usb_ov511 *ov = video_get_drvdata(vdev);
|
||||||
|
@ -4450,7 +4450,7 @@ redo:
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ov51x_v4l1_ioctl(struct inode *inode, struct file *file,
|
ov51x_v4l1_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct video_device *vdev = file->private_data;
|
struct video_device *vdev = file->private_data;
|
||||||
|
@ -4661,17 +4661,13 @@ ov51x_v4l1_mmap(struct file *file, struct vm_area_struct *vma)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations ov511_fops = {
|
static const struct v4l2_file_operations ov511_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = ov51x_v4l1_open,
|
.open = ov51x_v4l1_open,
|
||||||
.release = ov51x_v4l1_close,
|
.release = ov51x_v4l1_close,
|
||||||
.read = ov51x_v4l1_read,
|
.read = ov51x_v4l1_read,
|
||||||
.mmap = ov51x_v4l1_mmap,
|
.mmap = ov51x_v4l1_mmap,
|
||||||
.ioctl = ov51x_v4l1_ioctl,
|
.ioctl = ov51x_v4l1_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct video_device vdev_template = {
|
static struct video_device vdev_template = {
|
||||||
|
|
|
@ -862,7 +862,7 @@ static int pms_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pms_ioctl(struct inode *inode, struct file *file,
|
static int pms_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return video_usercopy(file, cmd, arg, pms_do_ioctl);
|
return video_usercopy(file, cmd, arg, pms_do_ioctl);
|
||||||
|
@ -881,7 +881,7 @@ static ssize_t pms_read(struct file *file, char __user *buf,
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pms_exclusive_open(struct inode *inode, struct file *file)
|
static int pms_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *v = video_devdata(file);
|
struct video_device *v = video_devdata(file);
|
||||||
struct pms_device *pd = (struct pms_device *)v;
|
struct pms_device *pd = (struct pms_device *)v;
|
||||||
|
@ -889,7 +889,7 @@ static int pms_exclusive_open(struct inode *inode, struct file *file)
|
||||||
return test_and_set_bit(0, &pd->in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &pd->in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pms_exclusive_release(struct inode *inode, struct file *file)
|
static int pms_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *v = video_devdata(file);
|
struct video_device *v = video_devdata(file);
|
||||||
struct pms_device *pd = (struct pms_device *)v;
|
struct pms_device *pd = (struct pms_device *)v;
|
||||||
|
@ -898,16 +898,12 @@ static int pms_exclusive_release(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations pms_fops = {
|
static const struct v4l2_file_operations pms_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = pms_exclusive_open,
|
.open = pms_exclusive_open,
|
||||||
.release = pms_exclusive_release,
|
.release = pms_exclusive_release,
|
||||||
.ioctl = pms_ioctl,
|
.ioctl = pms_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.read = pms_read,
|
.read = pms_read,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct video_device pms_template=
|
static struct video_device pms_template=
|
||||||
|
|
|
@ -948,7 +948,7 @@ static void pvr2_v4l2_internal_check(struct pvr2_channel *chp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int pvr2_v4l2_ioctl(struct inode *inode, struct file *file,
|
static int pvr2_v4l2_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -960,7 +960,7 @@ static int pvr2_v4l2_ioctl(struct inode *inode, struct file *file,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int pvr2_v4l2_release(struct inode *inode, struct file *file)
|
static int pvr2_v4l2_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct pvr2_v4l2_fh *fhp = file->private_data;
|
struct pvr2_v4l2_fh *fhp = file->private_data;
|
||||||
struct pvr2_v4l2 *vp = fhp->vhead;
|
struct pvr2_v4l2 *vp = fhp->vhead;
|
||||||
|
@ -1008,7 +1008,7 @@ static int pvr2_v4l2_release(struct inode *inode, struct file *file)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int pvr2_v4l2_open(struct inode *inode, struct file *file)
|
static int pvr2_v4l2_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct pvr2_v4l2_dev *dip; /* Our own context pointer */
|
struct pvr2_v4l2_dev *dip; /* Our own context pointer */
|
||||||
struct pvr2_v4l2_fh *fhp;
|
struct pvr2_v4l2_fh *fhp;
|
||||||
|
@ -1235,13 +1235,12 @@ static unsigned int pvr2_v4l2_poll(struct file *file, poll_table *wait)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static const struct file_operations vdev_fops = {
|
static const struct v4l2_file_operations vdev_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = pvr2_v4l2_open,
|
.open = pvr2_v4l2_open,
|
||||||
.release = pvr2_v4l2_release,
|
.release = pvr2_v4l2_release,
|
||||||
.read = pvr2_v4l2_read,
|
.read = pvr2_v4l2_read,
|
||||||
.ioctl = pvr2_v4l2_ioctl,
|
.ioctl = pvr2_v4l2_ioctl,
|
||||||
.llseek = no_llseek,
|
|
||||||
.poll = pvr2_v4l2_poll,
|
.poll = pvr2_v4l2_poll,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -142,16 +142,16 @@ static struct {
|
||||||
|
|
||||||
/***/
|
/***/
|
||||||
|
|
||||||
static int pwc_video_open(struct inode *inode, struct file *file);
|
static int pwc_video_open(struct file *file);
|
||||||
static int pwc_video_close(struct inode *inode, struct file *file);
|
static int pwc_video_close(struct file *file);
|
||||||
static ssize_t pwc_video_read(struct file *file, char __user *buf,
|
static ssize_t pwc_video_read(struct file *file, char __user *buf,
|
||||||
size_t count, loff_t *ppos);
|
size_t count, loff_t *ppos);
|
||||||
static unsigned int pwc_video_poll(struct file *file, poll_table *wait);
|
static unsigned int pwc_video_poll(struct file *file, poll_table *wait);
|
||||||
static int pwc_video_ioctl(struct inode *inode, struct file *file,
|
static int pwc_video_ioctl(struct file *file,
|
||||||
unsigned int ioctlnr, unsigned long arg);
|
unsigned int ioctlnr, unsigned long arg);
|
||||||
static int pwc_video_mmap(struct file *file, struct vm_area_struct *vma);
|
static int pwc_video_mmap(struct file *file, struct vm_area_struct *vma);
|
||||||
|
|
||||||
static const struct file_operations pwc_fops = {
|
static const struct v4l2_file_operations pwc_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = pwc_video_open,
|
.open = pwc_video_open,
|
||||||
.release = pwc_video_close,
|
.release = pwc_video_close,
|
||||||
|
@ -159,10 +159,6 @@ static const struct file_operations pwc_fops = {
|
||||||
.poll = pwc_video_poll,
|
.poll = pwc_video_poll,
|
||||||
.mmap = pwc_video_mmap,
|
.mmap = pwc_video_mmap,
|
||||||
.ioctl = pwc_video_ioctl,
|
.ioctl = pwc_video_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
static struct video_device pwc_template = {
|
static struct video_device pwc_template = {
|
||||||
.name = "Philips Webcam", /* Filled in later */
|
.name = "Philips Webcam", /* Filled in later */
|
||||||
|
@ -1104,7 +1100,7 @@ static const char *pwc_sensor_type_to_string(unsigned int sensor_type)
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
/* Video4Linux functions */
|
/* Video4Linux functions */
|
||||||
|
|
||||||
static int pwc_video_open(struct inode *inode, struct file *file)
|
static int pwc_video_open(struct file *file)
|
||||||
{
|
{
|
||||||
int i, ret;
|
int i, ret;
|
||||||
struct video_device *vdev = video_devdata(file);
|
struct video_device *vdev = video_devdata(file);
|
||||||
|
@ -1224,7 +1220,7 @@ static void pwc_cleanup(struct pwc_device *pdev)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Note that all cleanup is done in the reverse order as in _open */
|
/* Note that all cleanup is done in the reverse order as in _open */
|
||||||
static int pwc_video_close(struct inode *inode, struct file *file)
|
static int pwc_video_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *vdev = file->private_data;
|
struct video_device *vdev = file->private_data;
|
||||||
struct pwc_device *pdev;
|
struct pwc_device *pdev;
|
||||||
|
@ -1399,7 +1395,7 @@ static unsigned int pwc_video_poll(struct file *file, poll_table *wait)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pwc_video_ioctl(struct inode *inode, struct file *file,
|
static int pwc_video_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct video_device *vdev = file->private_data;
|
struct video_device *vdev = file->private_data;
|
||||||
|
|
|
@ -1502,9 +1502,9 @@ static int vidioc_s_jpegcomp(struct file *file, void *priv,
|
||||||
dprintk(2, "setting jpeg quality %d\n", jc->quality);
|
dprintk(2, "setting jpeg quality %d\n", jc->quality);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static int s2255_open(struct inode *inode, struct file *file)
|
static int s2255_open(struct file *file)
|
||||||
{
|
{
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(file)->minor;
|
||||||
struct s2255_dev *h, *dev = NULL;
|
struct s2255_dev *h, *dev = NULL;
|
||||||
struct s2255_fh *fh;
|
struct s2255_fh *fh;
|
||||||
struct list_head *list;
|
struct list_head *list;
|
||||||
|
@ -1711,11 +1711,11 @@ static void s2255_destroy(struct kref *kref)
|
||||||
mutex_unlock(&dev->open_lock);
|
mutex_unlock(&dev->open_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int s2255_close(struct inode *inode, struct file *file)
|
static int s2255_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct s2255_fh *fh = file->private_data;
|
struct s2255_fh *fh = file->private_data;
|
||||||
struct s2255_dev *dev = fh->dev;
|
struct s2255_dev *dev = fh->dev;
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(file)->minor;
|
||||||
if (!dev)
|
if (!dev)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
|
@ -1759,15 +1759,13 @@ static int s2255_mmap_v4l(struct file *file, struct vm_area_struct *vma)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations s2255_fops_v4l = {
|
static const struct v4l2_file_operations s2255_fops_v4l = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = s2255_open,
|
.open = s2255_open,
|
||||||
.release = s2255_close,
|
.release = s2255_close,
|
||||||
.poll = s2255_poll,
|
.poll = s2255_poll,
|
||||||
.ioctl = video_ioctl2, /* V4L2 ioctl handler */
|
.ioctl = video_ioctl2, /* V4L2 ioctl handler */
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.mmap = s2255_mmap_v4l,
|
.mmap = s2255_mmap_v4l,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops s2255_ioctl_ops = {
|
static const struct v4l2_ioctl_ops s2255_ioctl_ops = {
|
||||||
|
|
|
@ -944,7 +944,7 @@ static inline unsigned int vtx_fix_command(unsigned int cmd)
|
||||||
/*
|
/*
|
||||||
* Handle the locking
|
* Handle the locking
|
||||||
*/
|
*/
|
||||||
static int saa5246a_ioctl(struct inode *inode, struct file *file,
|
static int saa5246a_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct saa5246a_device *t = video_drvdata(file);
|
struct saa5246a_device *t = video_drvdata(file);
|
||||||
|
@ -957,7 +957,7 @@ static int saa5246a_ioctl(struct inode *inode, struct file *file,
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int saa5246a_open(struct inode *inode, struct file *file)
|
static int saa5246a_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct saa5246a_device *t = video_drvdata(file);
|
struct saa5246a_device *t = video_drvdata(file);
|
||||||
|
|
||||||
|
@ -999,7 +999,7 @@ static int saa5246a_open(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int saa5246a_release(struct inode *inode, struct file *file)
|
static int saa5246a_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct saa5246a_device *t = video_drvdata(file);
|
struct saa5246a_device *t = video_drvdata(file);
|
||||||
|
|
||||||
|
@ -1018,12 +1018,11 @@ static int saa5246a_release(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations saa_fops = {
|
static const struct v4l2_file_operations saa_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = saa5246a_open,
|
.open = saa5246a_open,
|
||||||
.release = saa5246a_release,
|
.release = saa5246a_release,
|
||||||
.ioctl = saa5246a_ioctl,
|
.ioctl = saa5246a_ioctl,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct video_device saa_template =
|
static struct video_device saa_template =
|
||||||
|
|
|
@ -479,7 +479,7 @@ static inline unsigned int vtx_fix_command(unsigned int cmd)
|
||||||
* Handle the locking
|
* Handle the locking
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int saa5249_ioctl(struct inode *inode, struct file *file,
|
static int saa5249_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct saa5249_device *t = video_drvdata(file);
|
struct saa5249_device *t = video_drvdata(file);
|
||||||
|
@ -492,7 +492,7 @@ static int saa5249_ioctl(struct inode *inode, struct file *file,
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int saa5249_open(struct inode *inode, struct file *file)
|
static int saa5249_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct saa5249_device *t = video_drvdata(file);
|
struct saa5249_device *t = video_drvdata(file);
|
||||||
int pgbuf;
|
int pgbuf;
|
||||||
|
@ -529,7 +529,7 @@ static int saa5249_open(struct inode *inode, struct file *file)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int saa5249_release(struct inode *inode, struct file *file)
|
static int saa5249_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct saa5249_device *t = video_drvdata(file);
|
struct saa5249_device *t = video_drvdata(file);
|
||||||
|
|
||||||
|
@ -539,15 +539,11 @@ static int saa5249_release(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations saa_fops = {
|
static const struct v4l2_file_operations saa_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = saa5249_open,
|
.open = saa5249_open,
|
||||||
.release = saa5249_release,
|
.release = saa5249_release,
|
||||||
.ioctl = saa5249_ioctl,
|
.ioctl = saa5249_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct video_device saa_template =
|
static struct video_device saa_template =
|
||||||
|
|
|
@ -83,9 +83,9 @@ static int ts_init_encoder(struct saa7134_dev* dev)
|
||||||
|
|
||||||
/* ------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------ */
|
||||||
|
|
||||||
static int ts_open(struct inode *inode, struct file *file)
|
static int ts_open(struct file *file)
|
||||||
{
|
{
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(file)->minor;
|
||||||
struct saa7134_dev *dev;
|
struct saa7134_dev *dev;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ done:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ts_release(struct inode *inode, struct file *file)
|
static int ts_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct saa7134_dev *dev = file->private_data;
|
struct saa7134_dev *dev = file->private_data;
|
||||||
|
|
||||||
|
@ -437,7 +437,7 @@ static int empress_g_std(struct file *file, void *priv, v4l2_std_id *id)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations ts_fops =
|
static const struct v4l2_file_operations ts_fops =
|
||||||
{
|
{
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = ts_open,
|
.open = ts_open,
|
||||||
|
@ -446,7 +446,6 @@ static const struct file_operations ts_fops =
|
||||||
.poll = ts_poll,
|
.poll = ts_poll,
|
||||||
.mmap = ts_mmap,
|
.mmap = ts_mmap,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops ts_ioctl_ops = {
|
static const struct v4l2_ioctl_ops ts_ioctl_ops = {
|
||||||
|
|
|
@ -1326,9 +1326,9 @@ static int saa7134_resource(struct saa7134_fh *fh)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int video_open(struct inode *inode, struct file *file)
|
static int video_open(struct file *file)
|
||||||
{
|
{
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(file)->minor;
|
||||||
struct saa7134_dev *dev;
|
struct saa7134_dev *dev;
|
||||||
struct saa7134_fh *fh;
|
struct saa7134_fh *fh;
|
||||||
enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
|
@ -1462,7 +1462,7 @@ err:
|
||||||
return POLLERR;
|
return POLLERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int video_release(struct inode *inode, struct file *file)
|
static int video_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct saa7134_fh *fh = file->private_data;
|
struct saa7134_fh *fh = file->private_data;
|
||||||
struct saa7134_dev *dev = fh->dev;
|
struct saa7134_dev *dev = fh->dev;
|
||||||
|
@ -2377,7 +2377,7 @@ static int radio_queryctrl(struct file *file, void *priv,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations video_fops =
|
static const struct v4l2_file_operations video_fops =
|
||||||
{
|
{
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = video_open,
|
.open = video_open,
|
||||||
|
@ -2386,8 +2386,6 @@ static const struct file_operations video_fops =
|
||||||
.poll = video_poll,
|
.poll = video_poll,
|
||||||
.mmap = video_mmap,
|
.mmap = video_mmap,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops video_ioctl_ops = {
|
static const struct v4l2_ioctl_ops video_ioctl_ops = {
|
||||||
|
@ -2441,13 +2439,11 @@ static const struct v4l2_ioctl_ops video_ioctl_ops = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct file_operations radio_fops = {
|
static const struct v4l2_file_operations radio_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = video_open,
|
.open = video_open,
|
||||||
.release = video_release,
|
.release = video_release,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops radio_ioctl_ops = {
|
static const struct v4l2_ioctl_ops radio_ioctl_ops = {
|
||||||
|
|
|
@ -932,7 +932,7 @@ static void usb_se401_remove_disconnected (struct usb_se401 *se401)
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
static int se401_open(struct inode *inode, struct file *file)
|
static int se401_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *dev = video_devdata(file);
|
struct video_device *dev = video_devdata(file);
|
||||||
struct usb_se401 *se401 = (struct usb_se401 *)dev;
|
struct usb_se401 *se401 = (struct usb_se401 *)dev;
|
||||||
|
@ -954,7 +954,7 @@ static int se401_open(struct inode *inode, struct file *file)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int se401_close(struct inode *inode, struct file *file)
|
static int se401_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *dev = file->private_data;
|
struct video_device *dev = file->private_data;
|
||||||
struct usb_se401 *se401 = (struct usb_se401 *)dev;
|
struct usb_se401 *se401 = (struct usb_se401 *)dev;
|
||||||
|
@ -1138,7 +1138,7 @@ static int se401_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int se401_ioctl(struct inode *inode, struct file *file,
|
static int se401_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return video_usercopy(file, cmd, arg, se401_do_ioctl);
|
return video_usercopy(file, cmd, arg, se401_do_ioctl);
|
||||||
|
@ -1222,17 +1222,13 @@ static int se401_mmap(struct file *file, struct vm_area_struct *vma)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations se401_fops = {
|
static const struct v4l2_file_operations se401_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = se401_open,
|
.open = se401_open,
|
||||||
.release = se401_close,
|
.release = se401_close,
|
||||||
.read = se401_read,
|
.read = se401_read,
|
||||||
.mmap = se401_mmap,
|
.mmap = se401_mmap,
|
||||||
.ioctl = se401_ioctl,
|
.ioctl = se401_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
static struct video_device se401_template = {
|
static struct video_device se401_template = {
|
||||||
.name = "se401 USB camera",
|
.name = "se401 USB camera",
|
||||||
|
|
|
@ -1746,7 +1746,7 @@ static void sn9c102_release_resources(struct kref *kref)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int sn9c102_open(struct inode* inode, struct file* filp)
|
static int sn9c102_open(struct file *filp)
|
||||||
{
|
{
|
||||||
struct sn9c102_device* cam;
|
struct sn9c102_device* cam;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
@ -1857,7 +1857,7 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int sn9c102_release(struct inode* inode, struct file* filp)
|
static int sn9c102_release(struct file *filp)
|
||||||
{
|
{
|
||||||
struct sn9c102_device* cam;
|
struct sn9c102_device* cam;
|
||||||
|
|
||||||
|
@ -3092,8 +3092,8 @@ sn9c102_vidioc_s_audio(struct sn9c102_device* cam, void __user * arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int sn9c102_ioctl_v4l2(struct inode* inode, struct file* filp,
|
static int sn9c102_ioctl_v4l2(struct file *filp,
|
||||||
unsigned int cmd, void __user * arg)
|
unsigned int cmd, void __user *arg)
|
||||||
{
|
{
|
||||||
struct sn9c102_device *cam = video_drvdata(filp);
|
struct sn9c102_device *cam = video_drvdata(filp);
|
||||||
|
|
||||||
|
@ -3196,7 +3196,7 @@ static int sn9c102_ioctl_v4l2(struct inode* inode, struct file* filp,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int sn9c102_ioctl(struct inode* inode, struct file* filp,
|
static int sn9c102_ioctl(struct file *filp,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct sn9c102_device *cam = video_drvdata(filp);
|
struct sn9c102_device *cam = video_drvdata(filp);
|
||||||
|
@ -3220,7 +3220,7 @@ static int sn9c102_ioctl(struct inode* inode, struct file* filp,
|
||||||
|
|
||||||
V4LDBG(3, "sn9c102", cmd);
|
V4LDBG(3, "sn9c102", cmd);
|
||||||
|
|
||||||
err = sn9c102_ioctl_v4l2(inode, filp, cmd, (void __user *)arg);
|
err = sn9c102_ioctl_v4l2(filp, cmd, (void __user *)arg);
|
||||||
|
|
||||||
mutex_unlock(&cam->fileop_mutex);
|
mutex_unlock(&cam->fileop_mutex);
|
||||||
|
|
||||||
|
@ -3229,18 +3229,14 @@ static int sn9c102_ioctl(struct inode* inode, struct file* filp,
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static const struct file_operations sn9c102_fops = {
|
static const struct v4l2_file_operations sn9c102_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = sn9c102_open,
|
.open = sn9c102_open,
|
||||||
.release = sn9c102_release,
|
.release = sn9c102_release,
|
||||||
.ioctl = sn9c102_ioctl,
|
.ioctl = sn9c102_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.read = sn9c102_read,
|
.read = sn9c102_read,
|
||||||
.poll = sn9c102_poll,
|
.poll = sn9c102_poll,
|
||||||
.mmap = sn9c102_mmap,
|
.mmap = sn9c102_mmap,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -256,7 +256,7 @@ static void soc_camera_free_user_formats(struct soc_camera_device *icd)
|
||||||
vfree(icd->user_formats);
|
vfree(icd->user_formats);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int soc_camera_open(struct inode *inode, struct file *file)
|
static int soc_camera_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *vdev;
|
struct video_device *vdev;
|
||||||
struct soc_camera_device *icd;
|
struct soc_camera_device *icd;
|
||||||
|
@ -330,7 +330,7 @@ emgd:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int soc_camera_close(struct inode *inode, struct file *file)
|
static int soc_camera_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct soc_camera_file *icf = file->private_data;
|
struct soc_camera_file *icf = file->private_data;
|
||||||
struct soc_camera_device *icd = icf->icd;
|
struct soc_camera_device *icd = icf->icd;
|
||||||
|
@ -400,7 +400,7 @@ static unsigned int soc_camera_poll(struct file *file, poll_table *pt)
|
||||||
return ici->ops->poll(file, pt);
|
return ici->ops->poll(file, pt);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct file_operations soc_camera_fops = {
|
static struct v4l2_file_operations soc_camera_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = soc_camera_open,
|
.open = soc_camera_open,
|
||||||
.release = soc_camera_close,
|
.release = soc_camera_close,
|
||||||
|
@ -408,7 +408,6 @@ static struct file_operations soc_camera_fops = {
|
||||||
.read = soc_camera_read,
|
.read = soc_camera_read,
|
||||||
.mmap = soc_camera_mmap,
|
.mmap = soc_camera_mmap,
|
||||||
.poll = soc_camera_poll,
|
.poll = soc_camera_poll,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int soc_camera_s_fmt_vid_cap(struct file *file, void *priv,
|
static int soc_camera_s_fmt_vid_cap(struct file *file, void *priv,
|
||||||
|
|
|
@ -664,7 +664,7 @@ static void stk_free_buffers(struct stk_camera *dev)
|
||||||
|
|
||||||
/* v4l file operations */
|
/* v4l file operations */
|
||||||
|
|
||||||
static int v4l_stk_open(struct inode *inode, struct file *fp)
|
static int v4l_stk_open(struct file *fp)
|
||||||
{
|
{
|
||||||
struct stk_camera *dev;
|
struct stk_camera *dev;
|
||||||
struct video_device *vdev;
|
struct video_device *vdev;
|
||||||
|
@ -684,7 +684,7 @@ static int v4l_stk_open(struct inode *inode, struct file *fp)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int v4l_stk_release(struct inode *inode, struct file *fp)
|
static int v4l_stk_release(struct file *fp)
|
||||||
{
|
{
|
||||||
struct stk_camera *dev = fp->private_data;
|
struct stk_camera *dev = fp->private_data;
|
||||||
|
|
||||||
|
@ -1281,7 +1281,7 @@ static int stk_vidioc_enum_framesizes(struct file *filp,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct file_operations v4l_stk_fops = {
|
static struct v4l2_file_operations v4l_stk_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = v4l_stk_open,
|
.open = v4l_stk_open,
|
||||||
.release = v4l_stk_release,
|
.release = v4l_stk_release,
|
||||||
|
@ -1289,10 +1289,6 @@ static struct file_operations v4l_stk_fops = {
|
||||||
.poll = v4l_stk_poll,
|
.poll = v4l_stk_poll,
|
||||||
.mmap = v4l_stk_mmap,
|
.mmap = v4l_stk_mmap,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops v4l_stk_ioctl_ops = {
|
static const struct v4l2_ioctl_ops v4l_stk_ioctl_ops = {
|
||||||
|
|
|
@ -1275,7 +1275,7 @@ static void make_clip_tab(struct saa7146 *saa, struct video_clip *cr, int ncr)
|
||||||
clip_draw_rectangle(clipmap, 0, 0, 1024, -saa->win.y);
|
clip_draw_rectangle(clipmap, 0, 0, 1024, -saa->win.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int saa_ioctl(struct inode *inode, struct file *file,
|
static int saa_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long argl)
|
unsigned int cmd, unsigned long argl)
|
||||||
{
|
{
|
||||||
struct saa7146 *saa = file->private_data;
|
struct saa7146 *saa = file->private_data;
|
||||||
|
@ -1877,7 +1877,7 @@ static ssize_t saa_write(struct file *file, const char __user * buf,
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int saa_open(struct inode *inode, struct file *file)
|
static int saa_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *vdev = video_devdata(file);
|
struct video_device *vdev = video_devdata(file);
|
||||||
struct saa7146 *saa = container_of(vdev, struct saa7146, video_dev);
|
struct saa7146 *saa = container_of(vdev, struct saa7146, video_dev);
|
||||||
|
@ -1895,7 +1895,7 @@ static int saa_open(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int saa_release(struct inode *inode, struct file *file)
|
static int saa_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct saa7146 *saa = file->private_data;
|
struct saa7146 *saa = file->private_data;
|
||||||
saa->user--;
|
saa->user--;
|
||||||
|
@ -1906,16 +1906,12 @@ static int saa_release(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations saa_fops = {
|
static const struct v4l2_file_operations saa_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = saa_open,
|
.open = saa_open,
|
||||||
.release = saa_release,
|
.release = saa_release,
|
||||||
.ioctl = saa_ioctl,
|
.ioctl = saa_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.read = saa_read,
|
.read = saa_read,
|
||||||
.llseek = no_llseek,
|
|
||||||
.write = saa_write,
|
.write = saa_write,
|
||||||
.mmap = saa_mmap,
|
.mmap = saa_mmap,
|
||||||
};
|
};
|
||||||
|
|
|
@ -1080,7 +1080,7 @@ static int stv680_newframe (struct usb_stv *stv680, int framenr)
|
||||||
* Video4Linux
|
* Video4Linux
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
|
||||||
static int stv_open (struct inode *inode, struct file *file)
|
static int stv_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *dev = video_devdata(file);
|
struct video_device *dev = video_devdata(file);
|
||||||
struct usb_stv *stv680 = video_get_drvdata(dev);
|
struct usb_stv *stv680 = video_get_drvdata(dev);
|
||||||
|
@ -1106,7 +1106,7 @@ static int stv_open (struct inode *inode, struct file *file)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int stv_close (struct inode *inode, struct file *file)
|
static int stv_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *dev = file->private_data;
|
struct video_device *dev = file->private_data;
|
||||||
struct usb_stv *stv680 = video_get_drvdata(dev);
|
struct usb_stv *stv680 = video_get_drvdata(dev);
|
||||||
|
@ -1299,7 +1299,7 @@ static int stv680_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int stv680_ioctl(struct inode *inode, struct file *file,
|
static int stv680_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return video_usercopy(file, cmd, arg, stv680_do_ioctl);
|
return video_usercopy(file, cmd, arg, stv680_do_ioctl);
|
||||||
|
@ -1391,17 +1391,13 @@ static ssize_t stv680_read (struct file *file, char __user *buf,
|
||||||
return realcount;
|
return realcount;
|
||||||
} /* stv680_read */
|
} /* stv680_read */
|
||||||
|
|
||||||
static const struct file_operations stv680_fops = {
|
static const struct v4l2_file_operations stv680_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = stv_open,
|
.open = stv_open,
|
||||||
.release = stv_close,
|
.release = stv_close,
|
||||||
.read = stv680_read,
|
.read = stv680_read,
|
||||||
.mmap = stv680_mmap,
|
.mmap = stv680_mmap,
|
||||||
.ioctl = stv680_ioctl,
|
.ioctl = stv680_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
static struct video_device stv680_template = {
|
static struct video_device stv680_template = {
|
||||||
.name = "STV0680 USB camera",
|
.name = "STV0680 USB camera",
|
||||||
|
|
|
@ -41,13 +41,13 @@ module_param(video_nr, int, 0);
|
||||||
static void usbvideo_Disconnect(struct usb_interface *intf);
|
static void usbvideo_Disconnect(struct usb_interface *intf);
|
||||||
static void usbvideo_CameraRelease(struct uvd *uvd);
|
static void usbvideo_CameraRelease(struct uvd *uvd);
|
||||||
|
|
||||||
static int usbvideo_v4l_ioctl(struct inode *inode, struct file *file,
|
static int usbvideo_v4l_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg);
|
unsigned int cmd, unsigned long arg);
|
||||||
static int usbvideo_v4l_mmap(struct file *file, struct vm_area_struct *vma);
|
static int usbvideo_v4l_mmap(struct file *file, struct vm_area_struct *vma);
|
||||||
static int usbvideo_v4l_open(struct inode *inode, struct file *file);
|
static int usbvideo_v4l_open(struct file *file);
|
||||||
static ssize_t usbvideo_v4l_read(struct file *file, char __user *buf,
|
static ssize_t usbvideo_v4l_read(struct file *file, char __user *buf,
|
||||||
size_t count, loff_t *ppos);
|
size_t count, loff_t *ppos);
|
||||||
static int usbvideo_v4l_close(struct inode *inode, struct file *file);
|
static int usbvideo_v4l_close(struct file *file);
|
||||||
|
|
||||||
static int usbvideo_StartDataPump(struct uvd *uvd);
|
static int usbvideo_StartDataPump(struct uvd *uvd);
|
||||||
static void usbvideo_StopDataPump(struct uvd *uvd);
|
static void usbvideo_StopDataPump(struct uvd *uvd);
|
||||||
|
@ -942,17 +942,13 @@ static int usbvideo_find_struct(struct usbvideo *cams)
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations usbvideo_fops = {
|
static const struct v4l2_file_operations usbvideo_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = usbvideo_v4l_open,
|
.open = usbvideo_v4l_open,
|
||||||
.release =usbvideo_v4l_close,
|
.release =usbvideo_v4l_close,
|
||||||
.read = usbvideo_v4l_read,
|
.read = usbvideo_v4l_read,
|
||||||
.mmap = usbvideo_v4l_mmap,
|
.mmap = usbvideo_v4l_mmap,
|
||||||
.ioctl = usbvideo_v4l_ioctl,
|
.ioctl = usbvideo_v4l_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
static const struct video_device usbvideo_template = {
|
static const struct video_device usbvideo_template = {
|
||||||
.fops = &usbvideo_fops,
|
.fops = &usbvideo_fops,
|
||||||
|
@ -1113,7 +1109,7 @@ static int usbvideo_v4l_mmap(struct file *file, struct vm_area_struct *vma)
|
||||||
* 27-Jan-2000 Used USBVIDEO_NUMSBUF as number of URB buffers.
|
* 27-Jan-2000 Used USBVIDEO_NUMSBUF as number of URB buffers.
|
||||||
* 24-May-2000 Corrected to prevent race condition (MOD_xxx_USE_COUNT).
|
* 24-May-2000 Corrected to prevent race condition (MOD_xxx_USE_COUNT).
|
||||||
*/
|
*/
|
||||||
static int usbvideo_v4l_open(struct inode *inode, struct file *file)
|
static int usbvideo_v4l_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *dev = video_devdata(file);
|
struct video_device *dev = video_devdata(file);
|
||||||
struct uvd *uvd = (struct uvd *) dev;
|
struct uvd *uvd = (struct uvd *) dev;
|
||||||
|
@ -1233,7 +1229,7 @@ static int usbvideo_v4l_open(struct inode *inode, struct file *file)
|
||||||
* 27-Jan-2000 Used USBVIDEO_NUMSBUF as number of URB buffers.
|
* 27-Jan-2000 Used USBVIDEO_NUMSBUF as number of URB buffers.
|
||||||
* 24-May-2000 Moved MOD_DEC_USE_COUNT outside of code that can sleep.
|
* 24-May-2000 Moved MOD_DEC_USE_COUNT outside of code that can sleep.
|
||||||
*/
|
*/
|
||||||
static int usbvideo_v4l_close(struct inode *inode, struct file *file)
|
static int usbvideo_v4l_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *dev = file->private_data;
|
struct video_device *dev = file->private_data;
|
||||||
struct uvd *uvd = (struct uvd *) dev;
|
struct uvd *uvd = (struct uvd *) dev;
|
||||||
|
@ -1501,7 +1497,7 @@ static int usbvideo_v4l_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int usbvideo_v4l_ioctl(struct inode *inode, struct file *file,
|
static int usbvideo_v4l_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return video_usercopy(file, cmd, arg, usbvideo_v4l_do_ioctl);
|
return video_usercopy(file, cmd, arg, usbvideo_v4l_do_ioctl);
|
||||||
|
|
|
@ -230,7 +230,7 @@ set_camera_power(struct vicam_camera *cam, int state)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
vicam_ioctl(struct inode *inode, struct file *file, unsigned int ioctlnr, unsigned long arg)
|
vicam_ioctl(struct file *file, unsigned int ioctlnr, unsigned long arg)
|
||||||
{
|
{
|
||||||
void __user *user_arg = (void __user *)arg;
|
void __user *user_arg = (void __user *)arg;
|
||||||
struct vicam_camera *cam = file->private_data;
|
struct vicam_camera *cam = file->private_data;
|
||||||
|
@ -470,7 +470,7 @@ vicam_ioctl(struct inode *inode, struct file *file, unsigned int ioctlnr, unsign
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
vicam_open(struct inode *inode, struct file *file)
|
vicam_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct vicam_camera *cam = video_drvdata(file);
|
struct vicam_camera *cam = video_drvdata(file);
|
||||||
|
|
||||||
|
@ -536,7 +536,7 @@ vicam_open(struct inode *inode, struct file *file)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
vicam_close(struct inode *inode, struct file *file)
|
vicam_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct vicam_camera *cam = file->private_data;
|
struct vicam_camera *cam = file->private_data;
|
||||||
int open_count;
|
int open_count;
|
||||||
|
@ -783,17 +783,13 @@ vicam_mmap(struct file *file, struct vm_area_struct *vma)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations vicam_fops = {
|
static const struct v4l2_file_operations vicam_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = vicam_open,
|
.open = vicam_open,
|
||||||
.release = vicam_close,
|
.release = vicam_close,
|
||||||
.read = vicam_read,
|
.read = vicam_read,
|
||||||
.mmap = vicam_mmap,
|
.mmap = vicam_mmap,
|
||||||
.ioctl = vicam_ioctl,
|
.ioctl = vicam_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct video_device vicam_template = {
|
static struct video_device vicam_template = {
|
||||||
|
|
|
@ -355,7 +355,7 @@ static void usbvision_remove_sysfs(struct video_device *vdev)
|
||||||
* then allocates buffers needed for video processing.
|
* then allocates buffers needed for video processing.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static int usbvision_v4l2_open(struct inode *inode, struct file *file)
|
static int usbvision_v4l2_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct usb_usbvision *usbvision = video_drvdata(file);
|
struct usb_usbvision *usbvision = video_drvdata(file);
|
||||||
int errCode = 0;
|
int errCode = 0;
|
||||||
|
@ -432,7 +432,7 @@ static int usbvision_v4l2_open(struct inode *inode, struct file *file)
|
||||||
* allocated in usbvision_v4l2_open().
|
* allocated in usbvision_v4l2_open().
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static int usbvision_v4l2_close(struct inode *inode, struct file *file)
|
static int usbvision_v4l2_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct usb_usbvision *usbvision = video_drvdata(file);
|
struct usb_usbvision *usbvision = video_drvdata(file);
|
||||||
|
|
||||||
|
@ -1178,7 +1178,7 @@ static int usbvision_v4l2_mmap(struct file *file, struct vm_area_struct *vma)
|
||||||
* Here comes the stuff for radio on usbvision based devices
|
* Here comes the stuff for radio on usbvision based devices
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static int usbvision_radio_open(struct inode *inode, struct file *file)
|
static int usbvision_radio_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct usb_usbvision *usbvision = video_drvdata(file);
|
struct usb_usbvision *usbvision = video_drvdata(file);
|
||||||
int errCode = 0;
|
int errCode = 0;
|
||||||
|
@ -1228,7 +1228,7 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int usbvision_radio_close(struct inode *inode, struct file *file)
|
static int usbvision_radio_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct usb_usbvision *usbvision = video_drvdata(file);
|
struct usb_usbvision *usbvision = video_drvdata(file);
|
||||||
int errCode = 0;
|
int errCode = 0;
|
||||||
|
@ -1266,13 +1266,13 @@ static int usbvision_radio_close(struct inode *inode, struct file *file)
|
||||||
* Here comes the stuff for vbi on usbvision based devices
|
* Here comes the stuff for vbi on usbvision based devices
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static int usbvision_vbi_open(struct inode *inode, struct file *file)
|
static int usbvision_vbi_open(struct file *file)
|
||||||
{
|
{
|
||||||
/* TODO */
|
/* TODO */
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int usbvision_vbi_close(struct inode *inode, struct file *file)
|
static int usbvision_vbi_close(struct file *file)
|
||||||
{
|
{
|
||||||
/* TODO */
|
/* TODO */
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
@ -1285,7 +1285,7 @@ static int usbvision_do_vbi_ioctl(struct file *file,
|
||||||
return -ENOIOCTLCMD;
|
return -ENOIOCTLCMD;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int usbvision_vbi_ioctl(struct inode *inode, struct file *file,
|
static int usbvision_vbi_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return video_usercopy(file, cmd, arg, usbvision_do_vbi_ioctl);
|
return video_usercopy(file, cmd, arg, usbvision_do_vbi_ioctl);
|
||||||
|
@ -1297,16 +1297,14 @@ static int usbvision_vbi_ioctl(struct inode *inode, struct file *file,
|
||||||
//
|
//
|
||||||
|
|
||||||
// Video template
|
// Video template
|
||||||
static const struct file_operations usbvision_fops = {
|
static const struct v4l2_file_operations usbvision_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = usbvision_v4l2_open,
|
.open = usbvision_v4l2_open,
|
||||||
.release = usbvision_v4l2_close,
|
.release = usbvision_v4l2_close,
|
||||||
.read = usbvision_v4l2_read,
|
.read = usbvision_v4l2_read,
|
||||||
.mmap = usbvision_v4l2_mmap,
|
.mmap = usbvision_v4l2_mmap,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.llseek = no_llseek,
|
|
||||||
/* .poll = video_poll, */
|
/* .poll = video_poll, */
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops usbvision_ioctl_ops = {
|
static const struct v4l2_ioctl_ops usbvision_ioctl_ops = {
|
||||||
|
@ -1355,13 +1353,11 @@ static struct video_device usbvision_video_template = {
|
||||||
|
|
||||||
|
|
||||||
// Radio template
|
// Radio template
|
||||||
static const struct file_operations usbvision_radio_fops = {
|
static const struct v4l2_file_operations usbvision_radio_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = usbvision_radio_open,
|
.open = usbvision_radio_open,
|
||||||
.release = usbvision_radio_close,
|
.release = usbvision_radio_close,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.llseek = no_llseek,
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops usbvision_radio_ioctl_ops = {
|
static const struct v4l2_ioctl_ops usbvision_radio_ioctl_ops = {
|
||||||
|
@ -1392,13 +1388,11 @@ static struct video_device usbvision_radio_template = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// vbi template
|
// vbi template
|
||||||
static const struct file_operations usbvision_vbi_fops = {
|
static const struct v4l2_file_operations usbvision_vbi_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = usbvision_vbi_open,
|
.open = usbvision_vbi_open,
|
||||||
.release = usbvision_vbi_close,
|
.release = usbvision_vbi_close,
|
||||||
.ioctl = usbvision_vbi_ioctl,
|
.ioctl = usbvision_vbi_ioctl,
|
||||||
.llseek = no_llseek,
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct video_device usbvision_vbi_template=
|
static struct video_device usbvision_vbi_template=
|
||||||
|
|
|
@ -406,7 +406,7 @@ static int uvc_has_privileges(struct uvc_fh *handle)
|
||||||
* V4L2 file operations
|
* V4L2 file operations
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int uvc_v4l2_open(struct inode *inode, struct file *file)
|
static int uvc_v4l2_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct uvc_video_device *video;
|
struct uvc_video_device *video;
|
||||||
struct uvc_fh *handle;
|
struct uvc_fh *handle;
|
||||||
|
@ -444,7 +444,7 @@ done:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int uvc_v4l2_release(struct inode *inode, struct file *file)
|
static int uvc_v4l2_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct uvc_video_device *video = video_drvdata(file);
|
struct uvc_video_device *video = video_drvdata(file);
|
||||||
struct uvc_fh *handle = (struct uvc_fh *)file->private_data;
|
struct uvc_fh *handle = (struct uvc_fh *)file->private_data;
|
||||||
|
@ -996,7 +996,7 @@ static int uvc_v4l2_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int uvc_v4l2_ioctl(struct inode *inode, struct file *file,
|
static int uvc_v4l2_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
if (uvc_trace_param & UVC_TRACE_IOCTL) {
|
if (uvc_trace_param & UVC_TRACE_IOCTL) {
|
||||||
|
@ -1097,13 +1097,11 @@ static unsigned int uvc_v4l2_poll(struct file *file, poll_table *wait)
|
||||||
return uvc_queue_poll(&video->queue, file, wait);
|
return uvc_queue_poll(&video->queue, file, wait);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct file_operations uvc_fops = {
|
const struct v4l2_file_operations uvc_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = uvc_v4l2_open,
|
.open = uvc_v4l2_open,
|
||||||
.release = uvc_v4l2_release,
|
.release = uvc_v4l2_release,
|
||||||
.ioctl = uvc_v4l2_ioctl,
|
.ioctl = uvc_v4l2_ioctl,
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.llseek = no_llseek,
|
|
||||||
.read = uvc_v4l2_read,
|
.read = uvc_v4l2_read,
|
||||||
.mmap = uvc_v4l2_mmap,
|
.mmap = uvc_v4l2_mmap,
|
||||||
.poll = uvc_v4l2_poll,
|
.poll = uvc_v4l2_poll,
|
||||||
|
|
|
@ -753,7 +753,7 @@ static inline int uvc_queue_streaming(struct uvc_video_queue *queue)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* V4L2 interface */
|
/* V4L2 interface */
|
||||||
extern struct file_operations uvc_fops;
|
extern const struct v4l2_file_operations uvc_fops;
|
||||||
|
|
||||||
/* Video */
|
/* Video */
|
||||||
extern int uvc_video_init(struct uvc_video_device *video);
|
extern int uvc_video_init(struct uvc_video_device *video);
|
||||||
|
|
|
@ -1072,12 +1072,7 @@ long v4l_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg)
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
long v4l_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg)
|
|
||||||
{
|
|
||||||
return -ENOIOCTLCMD;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
EXPORT_SYMBOL_GPL(v4l_compat_ioctl32);
|
EXPORT_SYMBOL_GPL(v4l_compat_ioctl32);
|
||||||
|
#endif
|
||||||
|
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
#include <media/v4l2-common.h>
|
#include <media/v4l2-common.h>
|
||||||
#include <media/v4l2-device.h>
|
#include <media/v4l2-device.h>
|
||||||
|
#include <media/v4l2-ioctl.h>
|
||||||
|
|
||||||
#define VIDEO_NUM_DEVICES 256
|
#define VIDEO_NUM_DEVICES 256
|
||||||
#define VIDEO_NAME "video4linux"
|
#define VIDEO_NAME "video4linux"
|
||||||
|
@ -182,7 +183,7 @@ static int v4l2_ioctl(struct inode *inode, struct file *filp,
|
||||||
return -ENOTTY;
|
return -ENOTTY;
|
||||||
/* Allow ioctl to continue even if the device was unregistered.
|
/* Allow ioctl to continue even if the device was unregistered.
|
||||||
Things like dequeueing buffers might still be useful. */
|
Things like dequeueing buffers might still be useful. */
|
||||||
return vdev->fops->ioctl(inode, filp, cmd, arg);
|
return vdev->fops->ioctl(filp, cmd, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static long v4l2_unlocked_ioctl(struct file *filp,
|
static long v4l2_unlocked_ioctl(struct file *filp,
|
||||||
|
@ -197,20 +198,6 @@ static long v4l2_unlocked_ioctl(struct file *filp,
|
||||||
return vdev->fops->unlocked_ioctl(filp, cmd, arg);
|
return vdev->fops->unlocked_ioctl(filp, cmd, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
static long v4l2_compat_ioctl(struct file *filp,
|
|
||||||
unsigned int cmd, unsigned long arg)
|
|
||||||
{
|
|
||||||
struct video_device *vdev = video_devdata(filp);
|
|
||||||
|
|
||||||
if (!vdev->fops->compat_ioctl)
|
|
||||||
return -ENOIOCTLCMD;
|
|
||||||
/* Allow ioctl to continue even if the device was unregistered.
|
|
||||||
Things like dequeueing buffers might still be useful. */
|
|
||||||
return vdev->fops->compat_ioctl(filp, cmd, arg);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int v4l2_mmap(struct file *filp, struct vm_area_struct *vm)
|
static int v4l2_mmap(struct file *filp, struct vm_area_struct *vm)
|
||||||
{
|
{
|
||||||
struct video_device *vdev = video_devdata(filp);
|
struct video_device *vdev = video_devdata(filp);
|
||||||
|
@ -239,7 +226,7 @@ static int v4l2_open(struct inode *inode, struct file *filp)
|
||||||
/* and increase the device refcount */
|
/* and increase the device refcount */
|
||||||
video_get(vdev);
|
video_get(vdev);
|
||||||
mutex_unlock(&videodev_lock);
|
mutex_unlock(&videodev_lock);
|
||||||
ret = vdev->fops->open(inode, filp);
|
ret = vdev->fops->open(filp);
|
||||||
/* decrease the refcount in case of an error */
|
/* decrease the refcount in case of an error */
|
||||||
if (ret)
|
if (ret)
|
||||||
video_put(vdev);
|
video_put(vdev);
|
||||||
|
@ -250,7 +237,7 @@ static int v4l2_open(struct inode *inode, struct file *filp)
|
||||||
static int v4l2_release(struct inode *inode, struct file *filp)
|
static int v4l2_release(struct inode *inode, struct file *filp)
|
||||||
{
|
{
|
||||||
struct video_device *vdev = video_devdata(filp);
|
struct video_device *vdev = video_devdata(filp);
|
||||||
int ret = vdev->fops->release(inode, filp);
|
int ret = vdev->fops->release(filp);
|
||||||
|
|
||||||
/* decrease the refcount unconditionally since the release()
|
/* decrease the refcount unconditionally since the release()
|
||||||
return value is ignored. */
|
return value is ignored. */
|
||||||
|
@ -266,7 +253,7 @@ static const struct file_operations v4l2_unlocked_fops = {
|
||||||
.mmap = v4l2_mmap,
|
.mmap = v4l2_mmap,
|
||||||
.unlocked_ioctl = v4l2_unlocked_ioctl,
|
.unlocked_ioctl = v4l2_unlocked_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
.compat_ioctl = v4l2_compat_ioctl,
|
.compat_ioctl = v4l_compat_ioctl32,
|
||||||
#endif
|
#endif
|
||||||
.release = v4l2_release,
|
.release = v4l2_release,
|
||||||
.poll = v4l2_poll,
|
.poll = v4l2_poll,
|
||||||
|
@ -281,7 +268,7 @@ static const struct file_operations v4l2_fops = {
|
||||||
.mmap = v4l2_mmap,
|
.mmap = v4l2_mmap,
|
||||||
.ioctl = v4l2_ioctl,
|
.ioctl = v4l2_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
.compat_ioctl = v4l2_compat_ioctl,
|
.compat_ioctl = v4l_compat_ioctl32,
|
||||||
#endif
|
#endif
|
||||||
.release = v4l2_release,
|
.release = v4l2_release,
|
||||||
.poll = v4l2_poll,
|
.poll = v4l2_poll,
|
||||||
|
|
|
@ -1852,7 +1852,7 @@ static int __video_do_ioctl(struct file *file,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
long __video_ioctl2(struct file *file,
|
int video_ioctl2(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
char sbuf[128];
|
char sbuf[128];
|
||||||
|
@ -1944,11 +1944,4 @@ out:
|
||||||
kfree(mbuf);
|
kfree(mbuf);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__video_ioctl2);
|
|
||||||
|
|
||||||
int video_ioctl2(struct inode *inode, struct file *file,
|
|
||||||
unsigned int cmd, unsigned long arg)
|
|
||||||
{
|
|
||||||
return __video_ioctl2(file, cmd, arg);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(video_ioctl2);
|
EXPORT_SYMBOL(video_ioctl2);
|
||||||
|
|
|
@ -4019,7 +4019,7 @@ out:
|
||||||
|
|
||||||
/* File operations */
|
/* File operations */
|
||||||
|
|
||||||
static int vino_open(struct inode *inode, struct file *file)
|
static int vino_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct vino_channel_settings *vcs = video_drvdata(file);
|
struct vino_channel_settings *vcs = video_drvdata(file);
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
@ -4050,7 +4050,7 @@ static int vino_open(struct inode *inode, struct file *file)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vino_close(struct inode *inode, struct file *file)
|
static int vino_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct vino_channel_settings *vcs = video_drvdata(file);
|
struct vino_channel_settings *vcs = video_drvdata(file);
|
||||||
dprintk("close():\n");
|
dprintk("close():\n");
|
||||||
|
@ -4343,7 +4343,7 @@ static int vino_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vino_ioctl(struct inode *inode, struct file *file,
|
static int vino_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct vino_channel_settings *vcs = video_drvdata(file);
|
struct vino_channel_settings *vcs = video_drvdata(file);
|
||||||
|
@ -4364,14 +4364,13 @@ static int vino_ioctl(struct inode *inode, struct file *file,
|
||||||
/* __initdata */
|
/* __initdata */
|
||||||
static int vino_init_stage;
|
static int vino_init_stage;
|
||||||
|
|
||||||
static const struct file_operations vino_fops = {
|
static const struct v4l2_file_operations vino_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = vino_open,
|
.open = vino_open,
|
||||||
.release = vino_close,
|
.release = vino_close,
|
||||||
.ioctl = vino_ioctl,
|
.ioctl = vino_ioctl,
|
||||||
.mmap = vino_mmap,
|
.mmap = vino_mmap,
|
||||||
.poll = vino_poll,
|
.poll = vino_poll,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct video_device v4l_device_template = {
|
static struct video_device v4l_device_template = {
|
||||||
|
|
|
@ -1024,9 +1024,9 @@ static int vidioc_s_ctrl(struct file *file, void *priv,
|
||||||
File operations for the device
|
File operations for the device
|
||||||
------------------------------------------------------------------*/
|
------------------------------------------------------------------*/
|
||||||
|
|
||||||
static int vivi_open(struct inode *inode, struct file *file)
|
static int vivi_open(struct file *file)
|
||||||
{
|
{
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(file)->minor;
|
||||||
struct vivi_dev *dev;
|
struct vivi_dev *dev;
|
||||||
struct vivi_fh *fh = NULL;
|
struct vivi_fh *fh = NULL;
|
||||||
int i;
|
int i;
|
||||||
|
@ -1127,13 +1127,13 @@ vivi_poll(struct file *file, struct poll_table_struct *wait)
|
||||||
return videobuf_poll_stream(file, q, wait);
|
return videobuf_poll_stream(file, q, wait);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vivi_close(struct inode *inode, struct file *file)
|
static int vivi_close(struct file *file)
|
||||||
{
|
{
|
||||||
struct vivi_fh *fh = file->private_data;
|
struct vivi_fh *fh = file->private_data;
|
||||||
struct vivi_dev *dev = fh->dev;
|
struct vivi_dev *dev = fh->dev;
|
||||||
struct vivi_dmaqueue *vidq = &dev->vidq;
|
struct vivi_dmaqueue *vidq = &dev->vidq;
|
||||||
|
|
||||||
int minor = iminor(inode);
|
int minor = video_devdata(file)->minor;
|
||||||
|
|
||||||
vivi_stop_thread(vidq);
|
vivi_stop_thread(vidq);
|
||||||
videobuf_stop(&fh->vb_vidq);
|
videobuf_stop(&fh->vb_vidq);
|
||||||
|
@ -1195,16 +1195,14 @@ static int vivi_mmap(struct file *file, struct vm_area_struct *vma)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations vivi_fops = {
|
static const struct v4l2_file_operations vivi_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = vivi_open,
|
.open = vivi_open,
|
||||||
.release = vivi_close,
|
.release = vivi_close,
|
||||||
.read = vivi_read,
|
.read = vivi_read,
|
||||||
.poll = vivi_poll,
|
.poll = vivi_poll,
|
||||||
.ioctl = video_ioctl2, /* V4L2 ioctl handler */
|
.ioctl = video_ioctl2, /* V4L2 ioctl handler */
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
.mmap = vivi_mmap,
|
.mmap = vivi_mmap,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops vivi_ioctl_ops = {
|
static const struct v4l2_ioctl_ops vivi_ioctl_ops = {
|
||||||
|
|
|
@ -180,19 +180,19 @@ static int w9966_i2c_wbyte(struct w9966_dev* cam, int data);
|
||||||
static int w9966_i2c_rbyte(struct w9966_dev* cam);
|
static int w9966_i2c_rbyte(struct w9966_dev* cam);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int w9966_v4l_ioctl(struct inode *inode, struct file *file,
|
static int w9966_v4l_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg);
|
unsigned int cmd, unsigned long arg);
|
||||||
static ssize_t w9966_v4l_read(struct file *file, char __user *buf,
|
static ssize_t w9966_v4l_read(struct file *file, char __user *buf,
|
||||||
size_t count, loff_t *ppos);
|
size_t count, loff_t *ppos);
|
||||||
|
|
||||||
static int w9966_exclusive_open(struct inode *inode, struct file *file)
|
static int w9966_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct w9966_dev *cam = video_drvdata(file);
|
struct w9966_dev *cam = video_drvdata(file);
|
||||||
|
|
||||||
return test_and_set_bit(0, &cam->in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &cam->in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int w9966_exclusive_release(struct inode *inode, struct file *file)
|
static int w9966_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct w9966_dev *cam = video_drvdata(file);
|
struct w9966_dev *cam = video_drvdata(file);
|
||||||
|
|
||||||
|
@ -200,16 +200,12 @@ static int w9966_exclusive_release(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations w9966_fops = {
|
static const struct v4l2_file_operations w9966_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = w9966_exclusive_open,
|
.open = w9966_exclusive_open,
|
||||||
.release = w9966_exclusive_release,
|
.release = w9966_exclusive_release,
|
||||||
.ioctl = w9966_v4l_ioctl,
|
.ioctl = w9966_v4l_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.read = w9966_v4l_read,
|
.read = w9966_v4l_read,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
static struct video_device w9966_template = {
|
static struct video_device w9966_template = {
|
||||||
.name = W9966_DRIVERNAME,
|
.name = W9966_DRIVERNAME,
|
||||||
|
@ -877,7 +873,7 @@ static int w9966_v4l_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int w9966_v4l_ioctl(struct inode *inode, struct file *file,
|
static int w9966_v4l_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return video_usercopy(file, cmd, arg, w9966_v4l_do_ioctl);
|
return video_usercopy(file, cmd, arg, w9966_v4l_do_ioctl);
|
||||||
|
|
|
@ -399,13 +399,13 @@ MODULE_PARM_DESC(specific_debug,
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/* Video4linux interface */
|
/* Video4linux interface */
|
||||||
static const struct file_operations w9968cf_fops;
|
static const struct v4l2_file_operations w9968cf_fops;
|
||||||
static int w9968cf_open(struct inode*, struct file*);
|
static int w9968cf_open(struct file *);
|
||||||
static int w9968cf_release(struct inode*, struct file*);
|
static int w9968cf_release(struct file *);
|
||||||
static int w9968cf_mmap(struct file*, struct vm_area_struct*);
|
static int w9968cf_mmap(struct file *, struct vm_area_struct *);
|
||||||
static int w9968cf_ioctl(struct inode*, struct file*, unsigned, unsigned long);
|
static int w9968cf_ioctl(struct file *, unsigned, unsigned long);
|
||||||
static ssize_t w9968cf_read(struct file*, char __user *, size_t, loff_t*);
|
static ssize_t w9968cf_read(struct file *, char __user *, size_t, loff_t *);
|
||||||
static int w9968cf_v4l_ioctl(struct inode*, struct file*, unsigned int,
|
static int w9968cf_v4l_ioctl(struct file *, unsigned int,
|
||||||
void __user *);
|
void __user *);
|
||||||
|
|
||||||
/* USB-specific */
|
/* USB-specific */
|
||||||
|
@ -2662,7 +2662,7 @@ static void w9968cf_release_resources(struct w9968cf_device* cam)
|
||||||
* Video4Linux interface *
|
* Video4Linux interface *
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static int w9968cf_open(struct inode* inode, struct file* filp)
|
static int w9968cf_open(struct file *filp)
|
||||||
{
|
{
|
||||||
struct w9968cf_device* cam;
|
struct w9968cf_device* cam;
|
||||||
int err;
|
int err;
|
||||||
|
@ -2748,7 +2748,7 @@ deallocate_memory:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int w9968cf_release(struct inode* inode, struct file* filp)
|
static int w9968cf_release(struct file *filp)
|
||||||
{
|
{
|
||||||
struct w9968cf_device* cam;
|
struct w9968cf_device* cam;
|
||||||
|
|
||||||
|
@ -2886,7 +2886,7 @@ static int w9968cf_mmap(struct file* filp, struct vm_area_struct *vma)
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
w9968cf_ioctl(struct inode* inode, struct file* filp,
|
w9968cf_ioctl(struct file *filp,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct w9968cf_device* cam;
|
struct w9968cf_device* cam;
|
||||||
|
@ -2909,15 +2909,15 @@ w9968cf_ioctl(struct inode* inode, struct file* filp,
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = w9968cf_v4l_ioctl(inode, filp, cmd, (void __user *)arg);
|
err = w9968cf_v4l_ioctl(filp, cmd, (void __user *)arg);
|
||||||
|
|
||||||
mutex_unlock(&cam->fileop_mutex);
|
mutex_unlock(&cam->fileop_mutex);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int w9968cf_v4l_ioctl(struct inode* inode, struct file* filp,
|
static int w9968cf_v4l_ioctl(struct file *filp,
|
||||||
unsigned int cmd, void __user * arg)
|
unsigned int cmd, void __user *arg)
|
||||||
{
|
{
|
||||||
struct w9968cf_device* cam;
|
struct w9968cf_device* cam;
|
||||||
const char* v4l1_ioctls[] = {
|
const char* v4l1_ioctls[] = {
|
||||||
|
@ -3456,17 +3456,13 @@ ioctl_fail:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static const struct file_operations w9968cf_fops = {
|
static const struct v4l2_file_operations w9968cf_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = w9968cf_open,
|
.open = w9968cf_open,
|
||||||
.release = w9968cf_release,
|
.release = w9968cf_release,
|
||||||
.read = w9968cf_read,
|
.read = w9968cf_read,
|
||||||
.ioctl = w9968cf_ioctl,
|
.ioctl = w9968cf_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.mmap = w9968cf_mmap,
|
.mmap = w9968cf_mmap,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -649,7 +649,7 @@ static void zc0301_release_resources(struct kref *kref)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int zc0301_open(struct inode* inode, struct file* filp)
|
static int zc0301_open(struct file *filp)
|
||||||
{
|
{
|
||||||
struct zc0301_device* cam;
|
struct zc0301_device* cam;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
@ -733,7 +733,7 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int zc0301_release(struct inode* inode, struct file* filp)
|
static int zc0301_release(struct file *filp)
|
||||||
{
|
{
|
||||||
struct zc0301_device* cam;
|
struct zc0301_device* cam;
|
||||||
|
|
||||||
|
@ -1793,8 +1793,8 @@ zc0301_vidioc_s_parm(struct zc0301_device* cam, void __user * arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int zc0301_ioctl_v4l2(struct inode* inode, struct file* filp,
|
static int zc0301_ioctl_v4l2(struct file *filp,
|
||||||
unsigned int cmd, void __user * arg)
|
unsigned int cmd, void __user *arg)
|
||||||
{
|
{
|
||||||
struct zc0301_device *cam = video_drvdata(filp);
|
struct zc0301_device *cam = video_drvdata(filp);
|
||||||
|
|
||||||
|
@ -1888,7 +1888,7 @@ static int zc0301_ioctl_v4l2(struct inode* inode, struct file* filp,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int zc0301_ioctl(struct inode* inode, struct file* filp,
|
static int zc0301_ioctl(struct file *filp,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct zc0301_device *cam = video_drvdata(filp);
|
struct zc0301_device *cam = video_drvdata(filp);
|
||||||
|
@ -1912,7 +1912,7 @@ static int zc0301_ioctl(struct inode* inode, struct file* filp,
|
||||||
|
|
||||||
V4LDBG(3, "zc0301", cmd);
|
V4LDBG(3, "zc0301", cmd);
|
||||||
|
|
||||||
err = zc0301_ioctl_v4l2(inode, filp, cmd, (void __user *)arg);
|
err = zc0301_ioctl_v4l2(filp, cmd, (void __user *)arg);
|
||||||
|
|
||||||
mutex_unlock(&cam->fileop_mutex);
|
mutex_unlock(&cam->fileop_mutex);
|
||||||
|
|
||||||
|
@ -1920,18 +1920,14 @@ static int zc0301_ioctl(struct inode* inode, struct file* filp,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static const struct file_operations zc0301_fops = {
|
static const struct v4l2_file_operations zc0301_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = zc0301_open,
|
.open = zc0301_open,
|
||||||
.release = zc0301_release,
|
.release = zc0301_release,
|
||||||
.ioctl = zc0301_ioctl,
|
.ioctl = zc0301_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.read = zc0301_read,
|
.read = zc0301_read,
|
||||||
.poll = zc0301_poll,
|
.poll = zc0301_poll,
|
||||||
.mmap = zc0301_mmap,
|
.mmap = zc0301_mmap,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -1197,10 +1197,9 @@ zoran_close_end_session (struct file *file)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int
|
static int
|
||||||
zoran_open (struct inode *inode,
|
zoran_open(struct file *file)
|
||||||
struct file *file)
|
|
||||||
{
|
{
|
||||||
unsigned int minor = iminor(inode);
|
unsigned int minor = video_devdata(file)->minor;
|
||||||
struct zoran *zr = NULL;
|
struct zoran *zr = NULL;
|
||||||
struct zoran_fh *fh;
|
struct zoran_fh *fh;
|
||||||
int i, res, first_open = 0, have_module_locks = 0;
|
int i, res, first_open = 0, have_module_locks = 0;
|
||||||
|
@ -1340,8 +1339,7 @@ open_unlock_and_return:
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
zoran_close (struct inode *inode,
|
zoran_close(struct file *file)
|
||||||
struct file *file)
|
|
||||||
{
|
{
|
||||||
struct zoran_fh *fh = file->private_data;
|
struct zoran_fh *fh = file->private_data;
|
||||||
struct zoran *zr = fh->zr;
|
struct zoran *zr = fh->zr;
|
||||||
|
@ -4192,10 +4190,9 @@ static int zoran_do_ioctl(struct file *file, unsigned int cmd, void *arg)
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
zoran_ioctl (struct inode *inode,
|
zoran_ioctl(struct file *file,
|
||||||
struct file *file,
|
unsigned int cmd,
|
||||||
unsigned int cmd,
|
unsigned long arg)
|
||||||
unsigned long arg)
|
|
||||||
{
|
{
|
||||||
return video_usercopy(file, cmd, arg, zoran_do_ioctl);
|
return video_usercopy(file, cmd, arg, zoran_do_ioctl);
|
||||||
}
|
}
|
||||||
|
@ -4620,15 +4617,11 @@ zoran_mmap (struct file *file,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations zoran_fops = {
|
static const struct v4l2_file_operations zoran_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = zoran_open,
|
.open = zoran_open,
|
||||||
.release = zoran_close,
|
.release = zoran_close,
|
||||||
.ioctl = zoran_ioctl,
|
.ioctl = zoran_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
.compat_ioctl = v4l_compat_ioctl32,
|
|
||||||
#endif
|
|
||||||
.llseek = no_llseek,
|
|
||||||
.read = zoran_read,
|
.read = zoran_read,
|
||||||
.write = zoran_write,
|
.write = zoran_write,
|
||||||
.mmap = zoran_mmap,
|
.mmap = zoran_mmap,
|
||||||
|
|
|
@ -634,7 +634,7 @@ static int zr364xx_vidioc_streamoff(struct file *file, void *priv,
|
||||||
|
|
||||||
|
|
||||||
/* open the camera */
|
/* open the camera */
|
||||||
static int zr364xx_open(struct inode *inode, struct file *file)
|
static int zr364xx_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *vdev = video_devdata(file);
|
struct video_device *vdev = video_devdata(file);
|
||||||
struct zr364xx_camera *cam = video_get_drvdata(vdev);
|
struct zr364xx_camera *cam = video_get_drvdata(vdev);
|
||||||
|
@ -688,7 +688,7 @@ out:
|
||||||
|
|
||||||
|
|
||||||
/* release the camera */
|
/* release the camera */
|
||||||
static int zr364xx_release(struct inode *inode, struct file *file)
|
static int zr364xx_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct video_device *vdev = video_devdata(file);
|
struct video_device *vdev = video_devdata(file);
|
||||||
struct zr364xx_camera *cam;
|
struct zr364xx_camera *cam;
|
||||||
|
@ -761,14 +761,13 @@ static int zr364xx_mmap(struct file *file, struct vm_area_struct *vma)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static const struct file_operations zr364xx_fops = {
|
static const struct v4l2_file_operations zr364xx_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = zr364xx_open,
|
.open = zr364xx_open,
|
||||||
.release = zr364xx_release,
|
.release = zr364xx_release,
|
||||||
.read = zr364xx_read,
|
.read = zr364xx_read,
|
||||||
.mmap = zr364xx_mmap,
|
.mmap = zr364xx_mmap,
|
||||||
.ioctl = video_ioctl2,
|
.ioctl = video_ioctl2,
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_ioctl_ops zr364xx_ioctl_ops = {
|
static const struct v4l2_ioctl_ops zr364xx_ioctl_ops = {
|
||||||
|
|
|
@ -179,7 +179,7 @@ struct saa7146_ext_vv
|
||||||
struct saa7146_extension_ioctls *ioctls;
|
struct saa7146_extension_ioctls *ioctls;
|
||||||
int (*ioctl)(struct saa7146_fh*, unsigned int cmd, void *arg);
|
int (*ioctl)(struct saa7146_fh*, unsigned int cmd, void *arg);
|
||||||
|
|
||||||
struct file_operations vbi_fops;
|
struct v4l2_file_operations vbi_fops;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct saa7146_use_ops {
|
struct saa7146_use_ops {
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#define VFL_TYPE_MAX 4
|
#define VFL_TYPE_MAX 4
|
||||||
|
|
||||||
struct v4l2_ioctl_callbacks;
|
struct v4l2_ioctl_callbacks;
|
||||||
|
struct video_device;
|
||||||
struct v4l2_device;
|
struct v4l2_device;
|
||||||
|
|
||||||
/* Flag to mark the video_device struct as unregistered.
|
/* Flag to mark the video_device struct as unregistered.
|
||||||
|
@ -32,6 +33,18 @@ struct v4l2_device;
|
||||||
device access. It is set by video_unregister_device. */
|
device access. It is set by video_unregister_device. */
|
||||||
#define V4L2_FL_UNREGISTERED (0)
|
#define V4L2_FL_UNREGISTERED (0)
|
||||||
|
|
||||||
|
struct v4l2_file_operations {
|
||||||
|
struct module *owner;
|
||||||
|
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
|
||||||
|
ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
|
||||||
|
unsigned int (*poll) (struct file *, struct poll_table_struct *);
|
||||||
|
int (*ioctl) (struct file *, unsigned int, unsigned long);
|
||||||
|
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
|
||||||
|
int (*mmap) (struct file *, struct vm_area_struct *);
|
||||||
|
int (*open) (struct file *);
|
||||||
|
int (*release) (struct file *);
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Newer version of video_device, handled by videodev2.c
|
* Newer version of video_device, handled by videodev2.c
|
||||||
* This version moves redundant code from video device code to
|
* This version moves redundant code from video device code to
|
||||||
|
@ -41,7 +54,7 @@ struct v4l2_device;
|
||||||
struct video_device
|
struct video_device
|
||||||
{
|
{
|
||||||
/* device ops */
|
/* device ops */
|
||||||
const struct file_operations *fops;
|
const struct v4l2_file_operations *fops;
|
||||||
|
|
||||||
/* sysfs */
|
/* sysfs */
|
||||||
struct device dev; /* v4l device */
|
struct device dev; /* v4l device */
|
||||||
|
|
|
@ -286,27 +286,18 @@ int v4l_compat_translate_ioctl(struct file *file,
|
||||||
#define v4l_compat_translate_ioctl(file, cmd, arg, ioctl) (-EINVAL)
|
#define v4l_compat_translate_ioctl(file, cmd, arg, ioctl) (-EINVAL)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_COMPAT
|
||||||
/* 32 Bits compatibility layer for 64 bits processors */
|
/* 32 Bits compatibility layer for 64 bits processors */
|
||||||
extern long v4l_compat_ioctl32(struct file *file, unsigned int cmd,
|
extern long v4l_compat_ioctl32(struct file *file, unsigned int cmd,
|
||||||
unsigned long arg);
|
unsigned long arg);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Include support for obsoleted stuff */
|
/* Include support for obsoleted stuff */
|
||||||
extern int video_usercopy(struct file *file, unsigned int cmd,
|
extern int video_usercopy(struct file *file, unsigned int cmd,
|
||||||
unsigned long arg, v4l2_kioctl func);
|
unsigned long arg, v4l2_kioctl func);
|
||||||
|
|
||||||
/* Standard handlers for V4L ioctl's */
|
/* Standard handlers for V4L ioctl's */
|
||||||
|
extern int video_ioctl2(struct file *file,
|
||||||
/* This prototype is used on fops.unlocked_ioctl */
|
|
||||||
extern long __video_ioctl2(struct file *file,
|
|
||||||
unsigned int cmd, unsigned long arg);
|
|
||||||
|
|
||||||
/* This prototype is used on fops.ioctl
|
|
||||||
* Since fops.ioctl enables Kernel Big Lock, it is preferred
|
|
||||||
* to use __video_ioctl2 instead.
|
|
||||||
* It should be noticed that there's no lock code inside
|
|
||||||
* video_ioctl2().
|
|
||||||
*/
|
|
||||||
extern int video_ioctl2(struct inode *inode, struct file *file,
|
|
||||||
unsigned int cmd, unsigned long arg);
|
unsigned int cmd, unsigned long arg);
|
||||||
|
|
||||||
#endif /* _V4L2_IOCTL_H */
|
#endif /* _V4L2_IOCTL_H */
|
||||||
|
|
|
@ -36,7 +36,7 @@ struct snd_tea575x_ops {
|
||||||
struct snd_tea575x {
|
struct snd_tea575x {
|
||||||
struct snd_card *card;
|
struct snd_card *card;
|
||||||
struct video_device vd; /* video device */
|
struct video_device vd; /* video device */
|
||||||
struct file_operations fops;
|
struct v4l2_file_operations fops;
|
||||||
int dev_nr; /* requested device number + 1 */
|
int dev_nr; /* requested device number + 1 */
|
||||||
int vd_registered; /* video device is registered */
|
int vd_registered; /* video device is registered */
|
||||||
int tea5759; /* 5759 chip is present */
|
int tea5759; /* 5759 chip is present */
|
||||||
|
|
|
@ -84,7 +84,7 @@ static void snd_tea575x_set_freq(struct snd_tea575x *tea)
|
||||||
* Linux Video interface
|
* Linux Video interface
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int snd_tea575x_ioctl(struct inode *inode, struct file *file,
|
static int snd_tea575x_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long data)
|
unsigned int cmd, unsigned long data)
|
||||||
{
|
{
|
||||||
struct snd_tea575x *tea = video_drvdata(file);
|
struct snd_tea575x *tea = video_drvdata(file);
|
||||||
|
@ -174,14 +174,14 @@ static void snd_tea575x_release(struct video_device *vfd)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static int snd_tea575x_exclusive_open(struct inode *inode, struct file *file)
|
static int snd_tea575x_exclusive_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct snd_tea575x *tea = video_drvdata(file);
|
struct snd_tea575x *tea = video_drvdata(file);
|
||||||
|
|
||||||
return test_and_set_bit(0, &tea->in_use) ? -EBUSY : 0;
|
return test_and_set_bit(0, &tea->in_use) ? -EBUSY : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int snd_tea575x_exclusive_release(struct inode *inode, struct file *file)
|
static int snd_tea575x_exclusive_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct snd_tea575x *tea = video_drvdata(file);
|
struct snd_tea575x *tea = video_drvdata(file);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue