diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/video/cx18/cx18-alsa-mixer.c | 24 | ||||
-rw-r--r-- | drivers/media/video/cx18/cx18-alsa.h | 16 |
2 files changed, 20 insertions, 20 deletions
diff --git a/drivers/media/video/cx18/cx18-alsa-mixer.c b/drivers/media/video/cx18/cx18-alsa-mixer.c index 4251a72f11a..ef21114309f 100644 --- a/drivers/media/video/cx18/cx18-alsa-mixer.c +++ b/drivers/media/video/cx18/cx18-alsa-mixer.c @@ -36,22 +36,6 @@ #include "cx18-driver.h" /* - * Mixer manipulations are like v4l2 ioctl() calls to manipulate controls, - * just use the same lock we use for ioctl()s for now - */ -static inline void snd_cx18_mixer_lock(struct snd_cx18_card *cxsc) -{ - struct cx18 *cx = to_cx18(cxsc->v4l2_dev); - mutex_lock(&cx->serialize_lock); -} - -static inline void snd_cx18_mixer_unlock(struct snd_cx18_card *cxsc) -{ - struct cx18 *cx = to_cx18(cxsc->v4l2_dev); - mutex_unlock(&cx->serialize_lock); -} - -/* * Note the cx18-av-core volume scale is funny, due to the alignment of the * scale with another chip's range: * @@ -108,9 +92,9 @@ static int snd_cx18_mixer_tv_vol_get(struct snd_kcontrol *kctl, vctrl.id = V4L2_CID_AUDIO_VOLUME; vctrl.value = dB_to_cx18_av_vol(uctl->value.integer.value[0]); - snd_cx18_mixer_lock(cxsc); + snd_cx18_lock(cxsc); ret = v4l2_subdev_call(cx->sd_av, core, g_ctrl, &vctrl); - snd_cx18_mixer_unlock(cxsc); + snd_cx18_unlock(cxsc); if (!ret) uctl->value.integer.value[0] = cx18_av_vol_to_dB(vctrl.value); @@ -128,7 +112,7 @@ static int snd_cx18_mixer_tv_vol_put(struct snd_kcontrol *kctl, vctrl.id = V4L2_CID_AUDIO_VOLUME; vctrl.value = dB_to_cx18_av_vol(uctl->value.integer.value[0]); - snd_cx18_mixer_lock(cxsc); + snd_cx18_lock(cxsc); /* Fetch current state */ ret = v4l2_subdev_call(cx->sd_av, core, g_ctrl, &vctrl); @@ -142,7 +126,7 @@ static int snd_cx18_mixer_tv_vol_put(struct snd_kcontrol *kctl, if (!ret) ret = 1; /* Indicate control was changed w/o error */ } - snd_cx18_mixer_unlock(cxsc); + snd_cx18_unlock(cxsc); return ret; } diff --git a/drivers/media/video/cx18/cx18-alsa.h b/drivers/media/video/cx18/cx18-alsa.h index 2546779b731..88a1cde7540 100644 --- a/drivers/media/video/cx18/cx18-alsa.h +++ b/drivers/media/video/cx18/cx18-alsa.h @@ -32,6 +32,22 @@ struct snd_cx18_card { extern int cx18_alsa_debug; +/* + * File operations that manipulate the encoder or video or audio subdevices + * need to be serialized. Use the same lock we use for v4l2 file ops. + */ +static inline void snd_cx18_lock(struct snd_cx18_card *cxsc) +{ + struct cx18 *cx = to_cx18(cxsc->v4l2_dev); + mutex_lock(&cx->serialize_lock); +} + +static inline void snd_cx18_unlock(struct snd_cx18_card *cxsc) +{ + struct cx18 *cx = to_cx18(cxsc->v4l2_dev); + mutex_unlock(&cx->serialize_lock); +} + #define CX18_ALSA_DBGFLG_WARN (1 << 0) #define CX18_ALSA_DBGFLG_WARN (1 << 0) #define CX18_ALSA_DBGFLG_INFO (1 << 1) |