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>
This commit is contained in:
parent
f907c02079
commit
3e01084519
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue