aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx88/cx88-video.c
diff options
context:
space:
mode:
authorDarron Broad <darron@kewl.org>2008-09-25 15:51:11 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2008-10-12 07:37:11 -0400
commit3e01084519a678b410df247581a51eeb1bbf11d5 (patch)
tree92f06fdab9d0570a2569a27eabc67d95626df8e5 /drivers/media/video/cx88/cx88-video.c
parentf907c0207924dd598db37092d331738e3fcb9fbd (diff)
V4L/DVB (9069): cx88: Bugfix: all client disconnects put the frontend to sleep.
From the author: "This fixes the problem where previously all client disconnects put the analogue frontend into standby. In the following example, the first command is succesfully watching TV but the second command which returns EBUSY detunes the receiver by entering it into the standby state. tvtime -d /dev/video0 & cat /dev/video0 " Signed-off-by: Steven Toth <stoth@linuxtv.org> Signed-off-by: Darron Broad <darron@kewl.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/cx88/cx88-video.c')
-rw-r--r--drivers/media/video/cx88/cx88-video.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c
index 61e03d4703f6..be45955dff68 100644
--- a/drivers/media/video/cx88/cx88-video.c
+++ b/drivers/media/video/cx88/cx88-video.c
@@ -839,6 +839,8 @@ static int video_open(struct inode *inode, struct file *file)
839 } 839 }
840 unlock_kernel(); 840 unlock_kernel();
841 841
842 atomic_inc(&core->users);
843
842 return 0; 844 return 0;
843} 845}
844 846
@@ -926,7 +928,8 @@ static int video_release(struct inode *inode, struct file *file)
926 file->private_data = NULL; 928 file->private_data = NULL;
927 kfree(fh); 929 kfree(fh);
928 930
929 cx88_call_i2c_clients (dev->core, TUNER_SET_STANDBY, NULL); 931 if(atomic_dec_and_test(&dev->core->users))
932 cx88_call_i2c_clients (dev->core, TUNER_SET_STANDBY, NULL);
930 933
931 return 0; 934 return 0;
932} 935}