Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 138082
b: refs/heads/master
c: 2895963
h: refs/heads/master
v: v3
  • Loading branch information
Hans Verkuil authored and Mauro Carvalho Chehab committed Mar 30, 2009
1 parent 6907383 commit c656dc1
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8340ff43c49fe8e0cd049b65fbd2156bd651697e
refs/heads/master: 289596382e6aca005ca53ef20bbc44b9886cb0e0
33 changes: 22 additions & 11 deletions trunk/drivers/media/video/vino.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
#include <linux/i2c-algo-sgi.h>

#include <linux/videodev2.h>
#include <media/v4l2-common.h>
#include <media/v4l2-device.h>
#include <media/v4l2-ioctl.h>
#include <linux/mutex.h>

Expand Down Expand Up @@ -295,6 +295,7 @@ struct vino_client {
};

struct vino_settings {
struct v4l2_device v4l2_dev;
struct vino_channel_settings a;
struct vino_channel_settings b;

Expand Down Expand Up @@ -3995,7 +3996,6 @@ static unsigned int vino_poll(struct file *file, poll_table *pt)
ret = POLLIN | POLLRDNORM;

error:

return ret;
}

Expand Down Expand Up @@ -4052,7 +4052,7 @@ static const struct v4l2_file_operations vino_fops = {
.owner = THIS_MODULE,
.open = vino_open,
.release = vino_close,
.ioctl = vino_ioctl,
.unlocked_ioctl = vino_ioctl,
.mmap = vino_mmap,
.poll = vino_poll,
};
Expand All @@ -4068,27 +4068,27 @@ static struct video_device vdev_template = {
static void vino_module_cleanup(int stage)
{
switch(stage) {
case 10:
case 11:
video_unregister_device(vino_drvdata->b.vdev);
vino_drvdata->b.vdev = NULL;
case 9:
case 10:
video_unregister_device(vino_drvdata->a.vdev);
vino_drvdata->a.vdev = NULL;
case 8:
case 9:
vino_i2c_del_bus();
case 7:
case 8:
free_irq(SGI_VINO_IRQ, NULL);
case 6:
case 7:
if (vino_drvdata->b.vdev) {
video_device_release(vino_drvdata->b.vdev);
vino_drvdata->b.vdev = NULL;
}
case 5:
case 6:
if (vino_drvdata->a.vdev) {
video_device_release(vino_drvdata->a.vdev);
vino_drvdata->a.vdev = NULL;
}
case 4:
case 5:
/* all entries in dma_cpu dummy table have the same address */
dma_unmap_single(NULL,
vino_drvdata->dummy_desc_table.dma_cpu[0],
Expand All @@ -4098,8 +4098,10 @@ static void vino_module_cleanup(int stage)
(void *)vino_drvdata->
dummy_desc_table.dma_cpu,
vino_drvdata->dummy_desc_table.dma);
case 3:
case 4:
free_page(vino_drvdata->dummy_page);
case 3:
v4l2_device_unregister(&vino_drvdata->v4l2_dev);
case 2:
kfree(vino_drvdata);
case 1:
Expand Down Expand Up @@ -4154,6 +4156,7 @@ static int vino_probe(void)
static int vino_init(void)
{
dma_addr_t dma_dummy_address;
int err;
int i;

vino_drvdata = kzalloc(sizeof(struct vino_settings), GFP_KERNEL);
Expand All @@ -4162,6 +4165,12 @@ static int vino_init(void)
return -ENOMEM;
}
vino_init_stage++;
strlcpy(vino_drvdata->v4l2_dev.name, "vino",
sizeof(vino_drvdata->v4l2_dev.name));
err = v4l2_device_register(NULL, &vino_drvdata->v4l2_dev);
if (err)
return err;
vino_init_stage++;

/* create a dummy dma descriptor */
vino_drvdata->dummy_page = get_zeroed_page(GFP_KERNEL | GFP_DMA);
Expand Down Expand Up @@ -4239,6 +4248,7 @@ static int vino_init_channel_settings(struct vino_channel_settings *vcs,
sizeof(struct video_device));
strcpy(vcs->vdev->name, name);
vcs->vdev->release = video_device_release;
vcs->vdev->v4l2_dev = &vino_drvdata->v4l2_dev;

video_set_drvdata(vcs->vdev, vcs);

Expand Down Expand Up @@ -4293,6 +4303,7 @@ static int __init vino_module_init(void)
vino_module_cleanup(vino_init_stage);
return ret;
}
i2c_set_adapdata(&vino_i2c_adapter, &vino_drvdata->v4l2_dev);
vino_init_stage++;

ret = video_register_device(vino_drvdata->a.vdev,
Expand Down

0 comments on commit c656dc1

Please sign in to comment.