Commit e8d04167 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

V4L/DVB (13554a): v4l: Use the video_drvdata function in drivers

Fix all device drivers to use the video_drvdata function instead of
maintaining a local list of minor to private data mappings. Call
video_set_drvdata to register the driver private pointer when not
already done.

Where applicable, the local list of mappings is completely removed when
it becomes unused.

[mchehab.redhat.com: patch broke into two. This one changes just tm6000]
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 6b46c397
...@@ -791,7 +791,6 @@ static int tm6000_usb_probe(struct usb_interface *interface, ...@@ -791,7 +791,6 @@ static int tm6000_usb_probe(struct usb_interface *interface,
if ((card[nr] >= 0) && (card[nr] < ARRAY_SIZE(tm6000_boards))) if ((card[nr] >= 0) && (card[nr] < ARRAY_SIZE(tm6000_boards)))
dev->model = card[nr]; dev->model = card[nr];
INIT_LIST_HEAD(&dev->tm6000_corelist);
dev->udev = usbdev; dev->udev = usbdev;
dev->devno = nr; dev->devno = nr;
......
...@@ -116,8 +116,6 @@ static struct tm6000_fmt format[] = { ...@@ -116,8 +116,6 @@ static struct tm6000_fmt format[] = {
} }
}; };
static LIST_HEAD(tm6000_corelist);
/* ------------------------------------------------------------------ /* ------------------------------------------------------------------
DMA and thread functions DMA and thread functions
------------------------------------------------------------------*/ ------------------------------------------------------------------*/
...@@ -1321,8 +1319,7 @@ static int tm6000_open(struct file *file) ...@@ -1321,8 +1319,7 @@ static int tm6000_open(struct file *file)
struct video_device *vdev = video_devdata(file); struct video_device *vdev = video_devdata(file);
struct tm6000_core *dev = video_drvdata(file); struct tm6000_core *dev = video_drvdata(file);
struct tm6000_fh *fh; struct tm6000_fh *fh;
struct list_head *list; enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
enum v4l2_buf_type type = 0;
int i,rc; int i,rc;
printk(KERN_INFO "tm6000: open called (dev=%s)\n", printk(KERN_INFO "tm6000: open called (dev=%s)\n",
...@@ -1331,16 +1328,6 @@ static int tm6000_open(struct file *file) ...@@ -1331,16 +1328,6 @@ static int tm6000_open(struct file *file)
dprintk(dev, V4L2_DEBUG_OPEN, "tm6000: open called (dev=%s)\n", dprintk(dev, V4L2_DEBUG_OPEN, "tm6000: open called (dev=%s)\n",
video_device_node_name(vdev)); video_device_node_name(vdev));
list_for_each(list,&tm6000_corelist) {
h = list_entry(list, struct tm6000_core, tm6000_corelist);
if (h->vfd->minor == minor) {
dev = h;
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
}
}
if (NULL == dev)
return -ENODEV;
/* If more than one user, mutex should be added */ /* If more than one user, mutex should be added */
dev->users++; dev->users++;
...@@ -1533,8 +1520,6 @@ int tm6000_v4l2_register(struct tm6000_core *dev) ...@@ -1533,8 +1520,6 @@ int tm6000_v4l2_register(struct tm6000_core *dev)
} }
dev->vfd = vfd; dev->vfd = vfd;
list_add_tail(&dev->tm6000_corelist,&tm6000_corelist);
/* init video dma queues */ /* init video dma queues */
INIT_LIST_HEAD(&dev->vidq.active); INIT_LIST_HEAD(&dev->vidq.active);
INIT_LIST_HEAD(&dev->vidq.queued); INIT_LIST_HEAD(&dev->vidq.queued);
...@@ -1542,6 +1527,7 @@ int tm6000_v4l2_register(struct tm6000_core *dev) ...@@ -1542,6 +1527,7 @@ int tm6000_v4l2_register(struct tm6000_core *dev)
memcpy (dev->vfd, &tm6000_template, sizeof(*(dev->vfd))); memcpy (dev->vfd, &tm6000_template, sizeof(*(dev->vfd)));
dev->vfd->debug=tm6000_debug; dev->vfd->debug=tm6000_debug;
vfd->v4l2_dev = &dev->v4l2_dev; vfd->v4l2_dev = &dev->v4l2_dev;
video_set_drvdata(vfd, dev);
ret = video_register_device(dev->vfd, VFL_TYPE_GRABBER, video_nr); ret = video_register_device(dev->vfd, VFL_TYPE_GRABBER, video_nr);
printk(KERN_INFO "Trident TVMaster TM5600/TM6000/TM6010 USB2 board (Load status: %d)\n", ret); printk(KERN_INFO "Trident TVMaster TM5600/TM6000/TM6010 USB2 board (Load status: %d)\n", ret);
...@@ -1550,18 +1536,8 @@ int tm6000_v4l2_register(struct tm6000_core *dev) ...@@ -1550,18 +1536,8 @@ int tm6000_v4l2_register(struct tm6000_core *dev)
int tm6000_v4l2_unregister(struct tm6000_core *dev) int tm6000_v4l2_unregister(struct tm6000_core *dev)
{ {
struct tm6000_core *h;
struct list_head *pos, *tmp;
video_unregister_device(dev->vfd); video_unregister_device(dev->vfd);
list_for_each_safe(pos, tmp, &tm6000_corelist) {
h = list_entry(pos, struct tm6000_core, tm6000_corelist);
if (h == dev) {
list_del(pos);
}
}
return 0; return 0;
} }
......
...@@ -169,7 +169,6 @@ struct tm6000_core { ...@@ -169,7 +169,6 @@ struct tm6000_core {
struct i2c_client i2c_client; struct i2c_client i2c_client;
/* video for linux */ /* video for linux */
struct list_head tm6000_corelist;
int users; int users;
/* various device info */ /* various device info */
......
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