Commit 2bd49a75 authored by Stelian Pop's avatar Stelian Pop Committed by Linus Torvalds

[PATCH] meye driver update

This implements the needed 'release' callback in order to make
videodev/sysfs happy again.
parent aced1802
...@@ -920,7 +920,7 @@ static int meye_do_ioctl(struct inode *inode, struct file *file, ...@@ -920,7 +920,7 @@ static int meye_do_ioctl(struct inode *inode, struct file *file,
case VIDIOCGCAP: { case VIDIOCGCAP: {
struct video_capability *b = arg; struct video_capability *b = arg;
strcpy(b->name,meye.video_dev.name); strcpy(b->name,meye.video_dev->name);
b->type = VID_TYPE_CAPTURE; b->type = VID_TYPE_CAPTURE;
b->channels = 1; b->channels = 1;
b->audios = 0; b->audios = 0;
...@@ -1225,6 +1225,8 @@ static struct video_device meye_template = { ...@@ -1225,6 +1225,8 @@ static struct video_device meye_template = {
.type = VID_TYPE_CAPTURE, .type = VID_TYPE_CAPTURE,
.hardware = VID_HARDWARE_MEYE, .hardware = VID_HARDWARE_MEYE,
.fops = &meye_fops, .fops = &meye_fops,
.release = video_device_release,
.minor = -1,
}; };
#ifdef CONFIG_PM #ifdef CONFIG_PM
...@@ -1275,10 +1277,17 @@ static int __devinit meye_probe(struct pci_dev *pcidev, ...@@ -1275,10 +1277,17 @@ static int __devinit meye_probe(struct pci_dev *pcidev,
goto out1; goto out1;
} }
sonypi_camera_command(SONYPI_COMMAND_SETCAMERA, 1);
meye.mchip_dev = pcidev; meye.mchip_dev = pcidev;
memcpy(&meye.video_dev, &meye_template, sizeof(meye_template)); meye.video_dev = video_device_alloc();
if (!meye.video_dev) {
printk(KERN_ERR "meye: video_device_alloc() failed!\n");
ret = -EBUSY;
goto out1;
}
memcpy(meye.video_dev, &meye_template, sizeof(meye_template));
meye.video_dev->dev = &meye.mchip_dev->dev;
sonypi_camera_command(SONYPI_COMMAND_SETCAMERA, 1);
if ((ret = pci_enable_device(meye.mchip_dev))) { if ((ret = pci_enable_device(meye.mchip_dev))) {
printk(KERN_ERR "meye: pci_enable_device failed\n"); printk(KERN_ERR "meye: pci_enable_device failed\n");
...@@ -1335,7 +1344,7 @@ static int __devinit meye_probe(struct pci_dev *pcidev, ...@@ -1335,7 +1344,7 @@ static int __devinit meye_probe(struct pci_dev *pcidev,
wait_ms(1); wait_ms(1);
mchip_set(MCHIP_MM_INTA, MCHIP_MM_INTA_HIC_1_MASK); mchip_set(MCHIP_MM_INTA, MCHIP_MM_INTA_HIC_1_MASK);
if (video_register_device(&meye.video_dev, VFL_TYPE_GRABBER, video_nr) < 0) { if (video_register_device(meye.video_dev, VFL_TYPE_GRABBER, video_nr) < 0) {
printk(KERN_ERR "meye: video_register_device failed\n"); printk(KERN_ERR "meye: video_register_device failed\n");
ret = -EIO; ret = -EIO;
...@@ -1383,6 +1392,9 @@ static int __devinit meye_probe(struct pci_dev *pcidev, ...@@ -1383,6 +1392,9 @@ static int __devinit meye_probe(struct pci_dev *pcidev,
out3: out3:
pci_disable_device(meye.mchip_dev); pci_disable_device(meye.mchip_dev);
out2: out2:
video_device_release(meye.video_dev);
meye.video_dev = NULL;
sonypi_camera_command(SONYPI_COMMAND_SETCAMERA, 0); sonypi_camera_command(SONYPI_COMMAND_SETCAMERA, 0);
out1: out1:
return ret; return ret;
...@@ -1390,7 +1402,7 @@ static int __devinit meye_probe(struct pci_dev *pcidev, ...@@ -1390,7 +1402,7 @@ static int __devinit meye_probe(struct pci_dev *pcidev,
static void __devexit meye_remove(struct pci_dev *pcidev) { static void __devexit meye_remove(struct pci_dev *pcidev) {
video_unregister_device(&meye.video_dev); video_unregister_device(meye.video_dev);
mchip_hic_stop(); mchip_hic_stop();
......
...@@ -312,7 +312,7 @@ struct meye { ...@@ -312,7 +312,7 @@ struct meye {
struct meye_queue grabq; /* queue for buffers to be grabbed */ struct meye_queue grabq; /* queue for buffers to be grabbed */
struct video_device video_dev; /* video device parameters */ struct video_device *video_dev; /* video device parameters */
struct video_picture picture; /* video picture parameters */ struct video_picture picture; /* video picture parameters */
struct meye_params params; /* additional parameters */ struct meye_params params; /* additional parameters */
#ifdef CONFIG_PM #ifdef CONFIG_PM
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment