From 214ce3faacafa3cca2fdd340d18ff35cfe463c2b Mon Sep 17 00:00:00 2001 From: Steven Toth Date: Wed, 6 Oct 2010 21:52:22 -0300 Subject: [PATCH] [media] saa7164: Removed use of the BKL Remove usage of the BKL and instead used video_set_drvdata() during open fops. Signed-off-by: Steven Toth Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/saa7164/saa7164-encoder.c | 50 ++++--------------- drivers/media/video/saa7164/saa7164-vbi.c | 50 ++++--------------- 2 files changed, 20 insertions(+), 80 deletions(-) diff --git a/drivers/media/video/saa7164/saa7164-encoder.c b/drivers/media/video/saa7164/saa7164-encoder.c index d02682e24c20..cbb53d0ee979 100644 --- a/drivers/media/video/saa7164/saa7164-encoder.c +++ b/drivers/media/video/saa7164/saa7164-encoder.c @@ -1054,57 +1054,26 @@ static int saa7164_encoder_start_streaming(struct saa7164_port *port) static int fops_open(struct file *file) { - struct saa7164_dev *h, *dev = NULL; - struct saa7164_port *port = NULL; - struct saa7164_port *portc = NULL; - struct saa7164_port *portd = NULL; + struct saa7164_dev *dev; + struct saa7164_port *port; struct saa7164_encoder_fh *fh; - struct list_head *list; - int minor = video_devdata(file)->minor; + + port = (struct saa7164_port *)video_get_drvdata(video_devdata(file)); + if (!port) + return -ENODEV; + + dev = port->dev; dprintk(DBGLVL_ENC, "%s()\n", __func__); - /* TODO: Really, the BKL? - remove this */ - lock_kernel(); - list_for_each(list, &saa7164_devlist) { - h = list_entry(list, struct saa7164_dev, devlist); - - portc = &h->ports[SAA7164_PORT_ENC1]; - portd = &h->ports[SAA7164_PORT_ENC2]; - - if (portc->v4l_device && - portc->v4l_device->minor == minor) { - dev = h; - port = portc; - break; - } - - if (portd->v4l_device && - portd->v4l_device->minor == minor) { - dev = h; - port = portd; - break; - } - - } - - if (port == NULL) { - unlock_kernel(); - return -ENODEV; - } - /* allocate + initialize per filehandle data */ fh = kzalloc(sizeof(*fh), GFP_KERNEL); - if (NULL == fh) { - unlock_kernel(); + if (NULL == fh) return -ENOMEM; - } file->private_data = fh; fh->port = port; - unlock_kernel(); - return 0; } @@ -1474,6 +1443,7 @@ int saa7164_encoder_register(struct saa7164_port *port) goto failed; } + video_set_drvdata(port->v4l_device, port); result = video_register_device(port->v4l_device, VFL_TYPE_GRABBER, -1); if (result < 0) { diff --git a/drivers/media/video/saa7164/saa7164-vbi.c b/drivers/media/video/saa7164/saa7164-vbi.c index a4bcf989a194..323c7cdca37b 100644 --- a/drivers/media/video/saa7164/saa7164-vbi.c +++ b/drivers/media/video/saa7164/saa7164-vbi.c @@ -1001,57 +1001,26 @@ int saa7164_vbi_fmt(struct file *file, void *priv, struct v4l2_format *f) static int fops_open(struct file *file) { - struct saa7164_dev *h, *dev = NULL; - struct saa7164_port *port = NULL; - struct saa7164_port *porte = NULL; - struct saa7164_port *portf = NULL; + struct saa7164_dev *dev; + struct saa7164_port *port; struct saa7164_vbi_fh *fh; - struct list_head *list; - int minor = video_devdata(file)->minor; + + port = (struct saa7164_port *)video_get_drvdata(video_devdata(file)); + if (!port) + return -ENODEV; + + dev = port->dev; dprintk(DBGLVL_VBI, "%s()\n", __func__); - /* TODO: Really, the BKL? - remove this */ - lock_kernel(); - list_for_each(list, &saa7164_devlist) { - h = list_entry(list, struct saa7164_dev, devlist); - - porte = &h->ports[SAA7164_PORT_VBI1]; - portf = &h->ports[SAA7164_PORT_VBI2]; - - if (porte->v4l_device && - porte->v4l_device->minor == minor) { - dev = h; - port = porte; - break; - } - - if (portf->v4l_device && - portf->v4l_device->minor == minor) { - dev = h; - port = portf; - break; - } - - } - - if (port == NULL) { - unlock_kernel(); - return -ENODEV; - } - /* allocate + initialize per filehandle data */ fh = kzalloc(sizeof(*fh), GFP_KERNEL); - if (NULL == fh) { - unlock_kernel(); + if (NULL == fh) return -ENOMEM; - } file->private_data = fh; fh->port = port; - unlock_kernel(); - return 0; } @@ -1363,6 +1332,7 @@ int saa7164_vbi_register(struct saa7164_port *port) goto failed; } + video_set_drvdata(port->v4l_device, port); result = video_register_device(port->v4l_device, VFL_TYPE_VBI, -1); if (result < 0) {