aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx88
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2010-09-15 08:23:20 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-10-20 23:06:13 -0400
commitda497e30c161963c413e259438b1b54672055b11 (patch)
treeb2efa90e97f14051fc72bdcce2b8c9a81b9ebe2b /drivers/media/video/cx88
parent8979e9d42b87648fd89bcc5d8b3157a8f3f4dfdb (diff)
V4L/DVB: cx88: Remove BKL
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/cx88')
-rw-r--r--drivers/media/video/cx88/cx88-blackbird.c14
-rw-r--r--drivers/media/video/cx88/cx88-video.c17
2 files changed, 16 insertions, 15 deletions
diff --git a/drivers/media/video/cx88/cx88-blackbird.c b/drivers/media/video/cx88/cx88-blackbird.c
index e46e1ceef72c..ec3299585434 100644
--- a/drivers/media/video/cx88/cx88-blackbird.c
+++ b/drivers/media/video/cx88/cx88-blackbird.c
@@ -1057,7 +1057,7 @@ static int mpeg_open(struct file *file)
1057 1057
1058 dprintk( 1, "%s\n", __func__); 1058 dprintk( 1, "%s\n", __func__);
1059 1059
1060 lock_kernel(); 1060 mutex_lock(&dev->core->lock);
1061 1061
1062 /* Make sure we can acquire the hardware */ 1062 /* Make sure we can acquire the hardware */
1063 drv = cx8802_get_driver(dev, CX88_MPEG_BLACKBIRD); 1063 drv = cx8802_get_driver(dev, CX88_MPEG_BLACKBIRD);
@@ -1065,7 +1065,7 @@ static int mpeg_open(struct file *file)
1065 err = drv->request_acquire(drv); 1065 err = drv->request_acquire(drv);
1066 if(err != 0) { 1066 if(err != 0) {
1067 dprintk(1,"%s: Unable to acquire hardware, %d\n", __func__, err); 1067 dprintk(1,"%s: Unable to acquire hardware, %d\n", __func__, err);
1068 unlock_kernel(); 1068 mutex_unlock(&dev->core->lock);;
1069 return err; 1069 return err;
1070 } 1070 }
1071 } 1071 }
@@ -1073,7 +1073,7 @@ static int mpeg_open(struct file *file)
1073 if (!atomic_read(&dev->core->mpeg_users) && blackbird_initialize_codec(dev) < 0) { 1073 if (!atomic_read(&dev->core->mpeg_users) && blackbird_initialize_codec(dev) < 0) {
1074 if (drv) 1074 if (drv)
1075 drv->request_release(drv); 1075 drv->request_release(drv);
1076 unlock_kernel(); 1076 mutex_unlock(&dev->core->lock);
1077 return -EINVAL; 1077 return -EINVAL;
1078 } 1078 }
1079 dprintk(1, "open dev=%s\n", video_device_node_name(vdev)); 1079 dprintk(1, "open dev=%s\n", video_device_node_name(vdev));
@@ -1083,7 +1083,7 @@ static int mpeg_open(struct file *file)
1083 if (NULL == fh) { 1083 if (NULL == fh) {
1084 if (drv) 1084 if (drv)
1085 drv->request_release(drv); 1085 drv->request_release(drv);
1086 unlock_kernel(); 1086 mutex_unlock(&dev->core->lock);
1087 return -ENOMEM; 1087 return -ENOMEM;
1088 } 1088 }
1089 file->private_data = fh; 1089 file->private_data = fh;
@@ -1099,10 +1099,9 @@ static int mpeg_open(struct file *file)
1099 /* FIXME: locking against other video device */ 1099 /* FIXME: locking against other video device */
1100 cx88_set_scale(dev->core, dev->width, dev->height, 1100 cx88_set_scale(dev->core, dev->width, dev->height,
1101 fh->mpegq.field); 1101 fh->mpegq.field);
1102 unlock_kernel();
1103 1102
1104 atomic_inc(&dev->core->mpeg_users); 1103 atomic_inc(&dev->core->mpeg_users);
1105 1104 mutex_unlock(&dev->core->lock);
1106 return 0; 1105 return 0;
1107} 1106}
1108 1107
@@ -1120,8 +1119,11 @@ static int mpeg_release(struct file *file)
1120 videobuf_stop(&fh->mpegq); 1119 videobuf_stop(&fh->mpegq);
1121 1120
1122 videobuf_mmap_free(&fh->mpegq); 1121 videobuf_mmap_free(&fh->mpegq);
1122
1123 mutex_lock(&dev->core->lock);
1123 file->private_data = NULL; 1124 file->private_data = NULL;
1124 kfree(fh); 1125 kfree(fh);
1126 mutex_unlock(&dev->core->lock);
1125 1127
1126 /* Make sure we release the hardware */ 1128 /* Make sure we release the hardware */
1127 drv = cx8802_get_driver(dev, CX88_MPEG_BLACKBIRD); 1129 drv = cx8802_get_driver(dev, CX88_MPEG_BLACKBIRD);
diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c
index b755bf100a2b..2da9117b138e 100644
--- a/drivers/media/video/cx88/cx88-video.c
+++ b/drivers/media/video/cx88/cx88-video.c
@@ -769,19 +769,14 @@ static int video_open(struct file *file)
769 break; 769 break;
770 } 770 }
771 771
772 lock_kernel();
773
774 core = dev->core;
775
776 dprintk(1, "open dev=%s radio=%d type=%s\n", 772 dprintk(1, "open dev=%s radio=%d type=%s\n",
777 video_device_node_name(vdev), radio, v4l2_type_names[type]); 773 video_device_node_name(vdev), radio, v4l2_type_names[type]);
778 774
779 /* allocate + initialize per filehandle data */ 775 /* allocate + initialize per filehandle data */
780 fh = kzalloc(sizeof(*fh),GFP_KERNEL); 776 fh = kzalloc(sizeof(*fh),GFP_KERNEL);
781 if (NULL == fh) { 777 if (unlikely(!fh))
782 unlock_kernel();
783 return -ENOMEM; 778 return -ENOMEM;
784 } 779
785 file->private_data = fh; 780 file->private_data = fh;
786 fh->dev = dev; 781 fh->dev = dev;
787 fh->radio = radio; 782 fh->radio = radio;
@@ -790,6 +785,9 @@ static int video_open(struct file *file)
790 fh->height = 240; 785 fh->height = 240;
791 fh->fmt = format_by_fourcc(V4L2_PIX_FMT_BGR24); 786 fh->fmt = format_by_fourcc(V4L2_PIX_FMT_BGR24);
792 787
788 mutex_lock(&core->lock);
789 core = dev->core;
790
793 videobuf_queue_sg_init(&fh->vidq, &cx8800_video_qops, 791 videobuf_queue_sg_init(&fh->vidq, &cx8800_video_qops,
794 &dev->pci->dev, &dev->slock, 792 &dev->pci->dev, &dev->slock,
795 V4L2_BUF_TYPE_VIDEO_CAPTURE, 793 V4L2_BUF_TYPE_VIDEO_CAPTURE,
@@ -826,9 +824,9 @@ static int video_open(struct file *file)
826 } 824 }
827 call_all(core, tuner, s_radio); 825 call_all(core, tuner, s_radio);
828 } 826 }
829 unlock_kernel();
830 827
831 atomic_inc(&core->users); 828 atomic_inc(&core->users);
829 mutex_unlock(&core->lock);
832 830
833 return 0; 831 return 0;
834} 832}
@@ -920,10 +918,11 @@ static int video_release(struct file *file)
920 918
921 videobuf_mmap_free(&fh->vidq); 919 videobuf_mmap_free(&fh->vidq);
922 videobuf_mmap_free(&fh->vbiq); 920 videobuf_mmap_free(&fh->vbiq);
921
922 mutex_lock(&dev->core->lock);
923 file->private_data = NULL; 923 file->private_data = NULL;
924 kfree(fh); 924 kfree(fh);
925 925
926 mutex_lock(&dev->core->lock);
927 if(atomic_dec_and_test(&dev->core->users)) 926 if(atomic_dec_and_test(&dev->core->users))
928 call_all(dev->core, core, s_power, 0); 927 call_all(dev->core, core, s_power, 0);
929 mutex_unlock(&dev->core->lock); 928 mutex_unlock(&dev->core->lock);