From 6dd9e57a397fa0b51b8366d6a36b380b299a3729 Mon Sep 17 00:00:00 2001 From: Darron Broad Date: Thu, 25 Sep 2008 16:51:11 -0300 Subject: [PATCH] --- yaml --- r: 114020 b: refs/heads/master c: 3e01084519a678b410df247581a51eeb1bbf11d5 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/media/video/cx88/cx88-video.c | 5 ++++- trunk/drivers/media/video/cx88/cx88.h | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 3a71def80dbf..7e1e2c11ebc3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f907c0207924dd598db37092d331738e3fcb9fbd +refs/heads/master: 3e01084519a678b410df247581a51eeb1bbf11d5 diff --git a/trunk/drivers/media/video/cx88/cx88-video.c b/trunk/drivers/media/video/cx88/cx88-video.c index 61e03d4703f6..be45955dff68 100644 --- a/trunk/drivers/media/video/cx88/cx88-video.c +++ b/trunk/drivers/media/video/cx88/cx88-video.c @@ -839,6 +839,8 @@ static int video_open(struct inode *inode, struct file *file) } unlock_kernel(); + atomic_inc(&core->users); + return 0; } @@ -926,7 +928,8 @@ static int video_release(struct inode *inode, struct file *file) file->private_data = NULL; kfree(fh); - cx88_call_i2c_clients (dev->core, TUNER_SET_STANDBY, NULL); + if(atomic_dec_and_test(&dev->core->users)) + cx88_call_i2c_clients (dev->core, TUNER_SET_STANDBY, NULL); return 0; } diff --git a/trunk/drivers/media/video/cx88/cx88.h b/trunk/drivers/media/video/cx88/cx88.h index 6420fb7615b1..dce7d36edb42 100644 --- a/trunk/drivers/media/video/cx88/cx88.h +++ b/trunk/drivers/media/video/cx88/cx88.h @@ -349,6 +349,7 @@ struct cx88_core { struct mutex lock; /* various v4l controls */ u32 freq; + atomic_t users; /* cx88-video needs to access cx8802 for hybrid tuner pll access. */ struct cx8802_dev *dvbdev;