aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/vx222/vx222_ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/vx222/vx222_ops.c')
-rw-r--r--sound/pci/vx222/vx222_ops.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/sound/pci/vx222/vx222_ops.c b/sound/pci/vx222/vx222_ops.c
index c705af409b0f..9b6d345b83a6 100644
--- a/sound/pci/vx222/vx222_ops.c
+++ b/sound/pci/vx222/vx222_ops.c
@@ -24,6 +24,8 @@
24#include <linux/delay.h> 24#include <linux/delay.h>
25#include <linux/device.h> 25#include <linux/device.h>
26#include <linux/firmware.h> 26#include <linux/firmware.h>
27#include <linux/mutex.h>
28
27#include <sound/core.h> 29#include <sound/core.h>
28#include <sound/control.h> 30#include <sound/control.h>
29#include <asm/io.h> 31#include <asm/io.h>
@@ -861,10 +863,10 @@ static int vx_input_level_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem
861{ 863{
862 struct vx_core *_chip = snd_kcontrol_chip(kcontrol); 864 struct vx_core *_chip = snd_kcontrol_chip(kcontrol);
863 struct snd_vx222 *chip = (struct snd_vx222 *)_chip; 865 struct snd_vx222 *chip = (struct snd_vx222 *)_chip;
864 down(&_chip->mixer_mutex); 866 mutex_lock(&_chip->mixer_mutex);
865 ucontrol->value.integer.value[0] = chip->input_level[0]; 867 ucontrol->value.integer.value[0] = chip->input_level[0];
866 ucontrol->value.integer.value[1] = chip->input_level[1]; 868 ucontrol->value.integer.value[1] = chip->input_level[1];
867 up(&_chip->mixer_mutex); 869 mutex_unlock(&_chip->mixer_mutex);
868 return 0; 870 return 0;
869} 871}
870 872
@@ -872,16 +874,16 @@ static int vx_input_level_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem
872{ 874{
873 struct vx_core *_chip = snd_kcontrol_chip(kcontrol); 875 struct vx_core *_chip = snd_kcontrol_chip(kcontrol);
874 struct snd_vx222 *chip = (struct snd_vx222 *)_chip; 876 struct snd_vx222 *chip = (struct snd_vx222 *)_chip;
875 down(&_chip->mixer_mutex); 877 mutex_lock(&_chip->mixer_mutex);
876 if (chip->input_level[0] != ucontrol->value.integer.value[0] || 878 if (chip->input_level[0] != ucontrol->value.integer.value[0] ||
877 chip->input_level[1] != ucontrol->value.integer.value[1]) { 879 chip->input_level[1] != ucontrol->value.integer.value[1]) {
878 chip->input_level[0] = ucontrol->value.integer.value[0]; 880 chip->input_level[0] = ucontrol->value.integer.value[0];
879 chip->input_level[1] = ucontrol->value.integer.value[1]; 881 chip->input_level[1] = ucontrol->value.integer.value[1];
880 vx2_set_input_level(chip); 882 vx2_set_input_level(chip);
881 up(&_chip->mixer_mutex); 883 mutex_unlock(&_chip->mixer_mutex);
882 return 1; 884 return 1;
883 } 885 }
884 up(&_chip->mixer_mutex); 886 mutex_unlock(&_chip->mixer_mutex);
885 return 0; 887 return 0;
886} 888}
887 889
@@ -907,14 +909,14 @@ static int vx_mic_level_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_v
907{ 909{
908 struct vx_core *_chip = snd_kcontrol_chip(kcontrol); 910 struct vx_core *_chip = snd_kcontrol_chip(kcontrol);
909 struct snd_vx222 *chip = (struct snd_vx222 *)_chip; 911 struct snd_vx222 *chip = (struct snd_vx222 *)_chip;
910 down(&_chip->mixer_mutex); 912 mutex_lock(&_chip->mixer_mutex);
911 if (chip->mic_level != ucontrol->value.integer.value[0]) { 913 if (chip->mic_level != ucontrol->value.integer.value[0]) {
912 chip->mic_level = ucontrol->value.integer.value[0]; 914 chip->mic_level = ucontrol->value.integer.value[0];
913 vx2_set_input_level(chip); 915 vx2_set_input_level(chip);
914 up(&_chip->mixer_mutex); 916 mutex_unlock(&_chip->mixer_mutex);
915 return 1; 917 return 1;
916 } 918 }
917 up(&_chip->mixer_mutex); 919 mutex_unlock(&_chip->mixer_mutex);
918 return 0; 920 return 0;
919} 921}
920 922