Commit bd5f0ac9 authored by Ingo Molnar's avatar Ingo Molnar Committed by Mauro Carvalho Chehab

V4L/DVB (3354e): bttv semaphore to mutex conversion

Semaphore to mutex conversion.

The conversion was generated via scripts, and the result was validated
automatically via a script as well.

build-tested.
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 9b565eb7
...@@ -684,16 +684,16 @@ int check_alloc_btres(struct bttv *btv, struct bttv_fh *fh, int bit) ...@@ -684,16 +684,16 @@ int check_alloc_btres(struct bttv *btv, struct bttv_fh *fh, int bit)
return 1; return 1;
/* is it free? */ /* is it free? */
down(&btv->reslock); mutex_lock(&btv->reslock);
if (btv->resources & bit) { if (btv->resources & bit) {
/* no, someone else uses it */ /* no, someone else uses it */
up(&btv->reslock); mutex_unlock(&btv->reslock);
return 0; return 0;
} }
/* it's free, grab it */ /* it's free, grab it */
fh->resources |= bit; fh->resources |= bit;
btv->resources |= bit; btv->resources |= bit;
up(&btv->reslock); mutex_unlock(&btv->reslock);
return 1; return 1;
} }
...@@ -716,10 +716,10 @@ void free_btres(struct bttv *btv, struct bttv_fh *fh, int bits) ...@@ -716,10 +716,10 @@ void free_btres(struct bttv *btv, struct bttv_fh *fh, int bits)
/* trying to free ressources not allocated by us ... */ /* trying to free ressources not allocated by us ... */
printk("bttv: BUG! (btres)\n"); printk("bttv: BUG! (btres)\n");
} }
down(&btv->reslock); mutex_lock(&btv->reslock);
fh->resources &= ~bits; fh->resources &= ~bits;
btv->resources &= ~bits; btv->resources &= ~bits;
up(&btv->reslock); mutex_unlock(&btv->reslock);
} }
/* ----------------------------------------------------------------------- */ /* ----------------------------------------------------------------------- */
...@@ -1536,12 +1536,12 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) ...@@ -1536,12 +1536,12 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
case VIDIOCSFREQ: case VIDIOCSFREQ:
{ {
unsigned long *freq = arg; unsigned long *freq = arg;
down(&btv->lock); mutex_lock(&btv->lock);
btv->freq=*freq; btv->freq=*freq;
bttv_call_i2c_clients(btv,VIDIOCSFREQ,freq); bttv_call_i2c_clients(btv,VIDIOCSFREQ,freq);
if (btv->has_matchbox && btv->radio_user) if (btv->has_matchbox && btv->radio_user)
tea5757_set_freq(btv,*freq); tea5757_set_freq(btv,*freq);
up(&btv->lock); mutex_unlock(&btv->lock);
return 0; return 0;
} }
...@@ -1571,10 +1571,10 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) ...@@ -1571,10 +1571,10 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
if (v->mode >= BTTV_TVNORMS) if (v->mode >= BTTV_TVNORMS)
return -EINVAL; return -EINVAL;
down(&btv->lock); mutex_lock(&btv->lock);
set_tvnorm(btv,v->mode); set_tvnorm(btv,v->mode);
bttv_call_i2c_clients(btv,cmd,v); bttv_call_i2c_clients(btv,cmd,v);
up(&btv->lock); mutex_unlock(&btv->lock);
return 0; return 0;
} }
...@@ -1611,17 +1611,17 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) ...@@ -1611,17 +1611,17 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
if (v->norm >= BTTV_TVNORMS) if (v->norm >= BTTV_TVNORMS)
return -EINVAL; return -EINVAL;
down(&btv->lock); mutex_lock(&btv->lock);
if (channel == btv->input && if (channel == btv->input &&
v->norm == btv->tvnorm) { v->norm == btv->tvnorm) {
/* nothing to do */ /* nothing to do */
up(&btv->lock); mutex_unlock(&btv->lock);
return 0; return 0;
} }
btv->tvnorm = v->norm; btv->tvnorm = v->norm;
set_input(btv,v->channel); set_input(btv,v->channel);
up(&btv->lock); mutex_unlock(&btv->lock);
return 0; return 0;
} }
...@@ -1634,14 +1634,14 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) ...@@ -1634,14 +1634,14 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
v->flags |= VIDEO_AUDIO_MUTABLE; v->flags |= VIDEO_AUDIO_MUTABLE;
v->mode = VIDEO_SOUND_MONO; v->mode = VIDEO_SOUND_MONO;
down(&btv->lock); mutex_lock(&btv->lock);
bttv_call_i2c_clients(btv,cmd,v); bttv_call_i2c_clients(btv,cmd,v);
/* card specific hooks */ /* card specific hooks */
if (btv->audio_hook) if (btv->audio_hook)
btv->audio_hook(btv,v,0); btv->audio_hook(btv,v,0);
up(&btv->lock); mutex_unlock(&btv->lock);
return 0; return 0;
} }
case VIDIOCSAUDIO: case VIDIOCSAUDIO:
...@@ -1652,7 +1652,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) ...@@ -1652,7 +1652,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
if (audio >= bttv_tvcards[btv->c.type].audio_inputs) if (audio >= bttv_tvcards[btv->c.type].audio_inputs)
return -EINVAL; return -EINVAL;
down(&btv->lock); mutex_lock(&btv->lock);
audio_mux(btv, (v->flags&VIDEO_AUDIO_MUTE) ? AUDIO_MUTE : AUDIO_UNMUTE); audio_mux(btv, (v->flags&VIDEO_AUDIO_MUTE) ? AUDIO_MUTE : AUDIO_UNMUTE);
bttv_call_i2c_clients(btv,cmd,v); bttv_call_i2c_clients(btv,cmd,v);
...@@ -1660,7 +1660,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) ...@@ -1660,7 +1660,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
if (btv->audio_hook) if (btv->audio_hook)
btv->audio_hook(btv,v,1); btv->audio_hook(btv,v,1);
up(&btv->lock); mutex_unlock(&btv->lock);
return 0; return 0;
} }
...@@ -1694,10 +1694,10 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) ...@@ -1694,10 +1694,10 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
if (i == BTTV_TVNORMS) if (i == BTTV_TVNORMS)
return -EINVAL; return -EINVAL;
down(&btv->lock); mutex_lock(&btv->lock);
set_tvnorm(btv,i); set_tvnorm(btv,i);
i2c_vidiocschan(btv); i2c_vidiocschan(btv);
up(&btv->lock); mutex_unlock(&btv->lock);
return 0; return 0;
} }
case VIDIOC_QUERYSTD: case VIDIOC_QUERYSTD:
...@@ -1755,9 +1755,9 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) ...@@ -1755,9 +1755,9 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
if (*i > bttv_tvcards[btv->c.type].video_inputs) if (*i > bttv_tvcards[btv->c.type].video_inputs)
return -EINVAL; return -EINVAL;
down(&btv->lock); mutex_lock(&btv->lock);
set_input(btv,*i); set_input(btv,*i);
up(&btv->lock); mutex_unlock(&btv->lock);
return 0; return 0;
} }
...@@ -1769,7 +1769,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) ...@@ -1769,7 +1769,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
return -EINVAL; return -EINVAL;
if (0 != t->index) if (0 != t->index)
return -EINVAL; return -EINVAL;
down(&btv->lock); mutex_lock(&btv->lock);
memset(t,0,sizeof(*t)); memset(t,0,sizeof(*t));
strcpy(t->name, "Television"); strcpy(t->name, "Television");
t->type = V4L2_TUNER_ANALOG_TV; t->type = V4L2_TUNER_ANALOG_TV;
...@@ -1804,7 +1804,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) ...@@ -1804,7 +1804,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
} }
} }
/* FIXME: fill capability+audmode */ /* FIXME: fill capability+audmode */
up(&btv->lock); mutex_unlock(&btv->lock);
return 0; return 0;
} }
case VIDIOC_S_TUNER: case VIDIOC_S_TUNER:
...@@ -1815,7 +1815,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) ...@@ -1815,7 +1815,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
return -EINVAL; return -EINVAL;
if (0 != t->index) if (0 != t->index)
return -EINVAL; return -EINVAL;
down(&btv->lock); mutex_lock(&btv->lock);
{ {
struct video_audio va; struct video_audio va;
memset(&va, 0, sizeof(struct video_audio)); memset(&va, 0, sizeof(struct video_audio));
...@@ -1832,7 +1832,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) ...@@ -1832,7 +1832,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
if (btv->audio_hook) if (btv->audio_hook)
btv->audio_hook(btv,&va,1); btv->audio_hook(btv,&va,1);
} }
up(&btv->lock); mutex_unlock(&btv->lock);
return 0; return 0;
} }
...@@ -1853,12 +1853,12 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) ...@@ -1853,12 +1853,12 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
return -EINVAL; return -EINVAL;
if (unlikely (f->type != V4L2_TUNER_ANALOG_TV)) if (unlikely (f->type != V4L2_TUNER_ANALOG_TV))
return -EINVAL; return -EINVAL;
down(&btv->lock); mutex_lock(&btv->lock);
btv->freq = f->frequency; btv->freq = f->frequency;
bttv_call_i2c_clients(btv,VIDIOCSFREQ,&btv->freq); bttv_call_i2c_clients(btv,VIDIOCSFREQ,&btv->freq);
if (btv->has_matchbox && btv->radio_user) if (btv->has_matchbox && btv->radio_user)
tea5757_set_freq(btv,btv->freq); tea5757_set_freq(btv,btv->freq);
up(&btv->lock); mutex_unlock(&btv->lock);
return 0; return 0;
} }
case VIDIOC_LOG_STATUS: case VIDIOC_LOG_STATUS:
...@@ -3156,7 +3156,7 @@ static int radio_open(struct inode *inode, struct file *file) ...@@ -3156,7 +3156,7 @@ static int radio_open(struct inode *inode, struct file *file)
return -ENODEV; return -ENODEV;
dprintk("bttv%d: open called (radio)\n",btv->c.nr); dprintk("bttv%d: open called (radio)\n",btv->c.nr);
down(&btv->lock); mutex_lock(&btv->lock);
btv->radio_user++; btv->radio_user++;
...@@ -3165,7 +3165,7 @@ static int radio_open(struct inode *inode, struct file *file) ...@@ -3165,7 +3165,7 @@ static int radio_open(struct inode *inode, struct file *file)
bttv_call_i2c_clients(btv,AUDC_SET_RADIO,&btv->tuner_type); bttv_call_i2c_clients(btv,AUDC_SET_RADIO,&btv->tuner_type);
audio_mux(btv,AUDIO_RADIO); audio_mux(btv,AUDIO_RADIO);
up(&btv->lock); mutex_unlock(&btv->lock);
return 0; return 0;
} }
...@@ -3920,8 +3920,8 @@ static int __devinit bttv_probe(struct pci_dev *dev, ...@@ -3920,8 +3920,8 @@ static int __devinit bttv_probe(struct pci_dev *dev,
sprintf(btv->c.name,"bttv%d",btv->c.nr); sprintf(btv->c.name,"bttv%d",btv->c.nr);
/* initialize structs / fill in defaults */ /* initialize structs / fill in defaults */
init_MUTEX(&btv->lock); mutex_init(&btv->lock);
init_MUTEX(&btv->reslock); mutex_init(&btv->reslock);
spin_lock_init(&btv->s_lock); spin_lock_init(&btv->s_lock);
spin_lock_init(&btv->gpio_lock); spin_lock_init(&btv->gpio_lock);
init_waitqueue_head(&btv->gpioq); init_waitqueue_head(&btv->gpioq);
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include <linux/videodev.h> #include <linux/videodev.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/mutex.h>
#include <asm/scatterlist.h> #include <asm/scatterlist.h>
#include <asm/io.h> #include <asm/io.h>
...@@ -309,9 +310,9 @@ struct bttv { ...@@ -309,9 +310,9 @@ struct bttv {
/* locking */ /* locking */
spinlock_t s_lock; spinlock_t s_lock;
struct semaphore lock; struct mutex lock;
int resources; int resources;
struct semaphore reslock; struct mutex reslock;
#ifdef VIDIOC_G_PRIORITY #ifdef VIDIOC_G_PRIORITY
struct v4l2_prio_state prio; struct v4l2_prio_state prio;
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment