diff options
Diffstat (limited to 'drivers/media/radio/radio-terratec.c')
-rw-r--r-- | drivers/media/radio/radio-terratec.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/media/radio/radio-terratec.c b/drivers/media/radio/radio-terratec.c index 0876fecc5f27..eed14972a940 100644 --- a/drivers/media/radio/radio-terratec.c +++ b/drivers/media/radio/radio-terratec.c | |||
@@ -79,6 +79,7 @@ static spinlock_t lock; | |||
79 | 79 | ||
80 | struct tt_device | 80 | struct tt_device |
81 | { | 81 | { |
82 | unsigned long in_use; | ||
82 | int port; | 83 | int port; |
83 | int curvol; | 84 | int curvol; |
84 | unsigned long curfreq; | 85 | unsigned long curfreq; |
@@ -356,10 +357,21 @@ static int vidioc_s_audio(struct file *file, void *priv, | |||
356 | 357 | ||
357 | static struct tt_device terratec_unit; | 358 | static struct tt_device terratec_unit; |
358 | 359 | ||
360 | static int terratec_exclusive_open(struct inode *inode, struct file *file) | ||
361 | { | ||
362 | return test_and_set_bit(0, &terratec_unit.in_use) ? -EBUSY : 0; | ||
363 | } | ||
364 | |||
365 | static int terratec_exclusive_release(struct inode *inode, struct file *file) | ||
366 | { | ||
367 | clear_bit(0, &terratec_unit.in_use); | ||
368 | return 0; | ||
369 | } | ||
370 | |||
359 | static const struct file_operations terratec_fops = { | 371 | static const struct file_operations terratec_fops = { |
360 | .owner = THIS_MODULE, | 372 | .owner = THIS_MODULE, |
361 | .open = video_exclusive_open, | 373 | .open = terratec_exclusive_open, |
362 | .release = video_exclusive_release, | 374 | .release = terratec_exclusive_release, |
363 | .ioctl = video_ioctl2, | 375 | .ioctl = video_ioctl2, |
364 | #ifdef CONFIG_COMPAT | 376 | #ifdef CONFIG_COMPAT |
365 | .compat_ioctl = v4l_compat_ioctl32, | 377 | .compat_ioctl = v4l_compat_ioctl32, |