diff options
Diffstat (limited to 'drivers/media/radio/radio-aztech.c')
-rw-r--r-- | drivers/media/radio/radio-aztech.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/media/radio/radio-aztech.c b/drivers/media/radio/radio-aztech.c index 628c689e3ffe..ae18a7cf0d59 100644 --- a/drivers/media/radio/radio-aztech.c +++ b/drivers/media/radio/radio-aztech.c | |||
@@ -70,6 +70,7 @@ static struct mutex lock; | |||
70 | 70 | ||
71 | struct az_device | 71 | struct az_device |
72 | { | 72 | { |
73 | unsigned long in_use; | ||
73 | int curvol; | 74 | int curvol; |
74 | unsigned long curfreq; | 75 | unsigned long curfreq; |
75 | int stereo; | 76 | int stereo; |
@@ -342,10 +343,21 @@ static int vidioc_s_ctrl (struct file *file, void *priv, | |||
342 | 343 | ||
343 | static struct az_device aztech_unit; | 344 | static struct az_device aztech_unit; |
344 | 345 | ||
346 | static int aztech_exclusive_open(struct inode *inode, struct file *file) | ||
347 | { | ||
348 | return test_and_set_bit(0, &aztech_unit.in_use) ? -EBUSY : 0; | ||
349 | } | ||
350 | |||
351 | static int aztech_exclusive_release(struct inode *inode, struct file *file) | ||
352 | { | ||
353 | clear_bit(0, &aztech_unit.in_use); | ||
354 | return 0; | ||
355 | } | ||
356 | |||
345 | static const struct file_operations aztech_fops = { | 357 | static const struct file_operations aztech_fops = { |
346 | .owner = THIS_MODULE, | 358 | .owner = THIS_MODULE, |
347 | .open = video_exclusive_open, | 359 | .open = aztech_exclusive_open, |
348 | .release = video_exclusive_release, | 360 | .release = aztech_exclusive_release, |
349 | .ioctl = video_ioctl2, | 361 | .ioctl = video_ioctl2, |
350 | #ifdef CONFIG_COMPAT | 362 | #ifdef CONFIG_COMPAT |
351 | .compat_ioctl = v4l_compat_ioctl32, | 363 | .compat_ioctl = v4l_compat_ioctl32, |