ALSA: virtuoso: add one more headphone impedance setting
authorClemens Ladisch <clemens@ladisch.de>
Sun, 7 Sep 2014 19:45:59 +0000 (21:45 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 8 Sep 2014 08:57:14 +0000 (10:57 +0200)
Add one more option to the "Headphones Impedance" control to synchronize
with recent versions of the Windows driver.

Tested-by: fugazzi® <fugazzi99@gmail.com>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/oxygen/xonar_pcm179x.c

index e0260593166936a70c15f5e12cd0829e519fbbb1..3c0a679c4539b53f381258b3031b88c5cb1086bd 100644 (file)
@@ -795,11 +795,11 @@ static int st_output_switch_put(struct snd_kcontrol *ctl,
 static int st_hp_volume_offset_info(struct snd_kcontrol *ctl,
                                    struct snd_ctl_elem_info *info)
 {
-       static const char *const names[3] = {
-               "< 64 ohms", "64-300 ohms", "300-600 ohms"
+       static const char *const names[4] = {
+               "< 32 ohms", "32-64 ohms", "64-300 ohms", "300-600 ohms"
        };
 
-       return snd_ctl_enum_info(info, 1, 3, names);
+       return snd_ctl_enum_info(info, 1, 4, names);
 }
 
 static int st_hp_volume_offset_get(struct snd_kcontrol *ctl,
@@ -809,12 +809,14 @@ static int st_hp_volume_offset_get(struct snd_kcontrol *ctl,
        struct xonar_pcm179x *data = chip->model_data;
 
        mutex_lock(&chip->mutex);
-       if (data->hp_gain_offset < 2*-6)
+       if (data->hp_gain_offset < 2*-12)
                value->value.enumerated.item[0] = 0;
-       else if (data->hp_gain_offset < 0)
+       else if (data->hp_gain_offset < 2*-6)
                value->value.enumerated.item[0] = 1;
-       else
+       else if (data->hp_gain_offset < 0)
                value->value.enumerated.item[0] = 2;
+       else
+               value->value.enumerated.item[0] = 3;
        mutex_unlock(&chip->mutex);
        return 0;
 }
@@ -823,13 +825,13 @@ static int st_hp_volume_offset_get(struct snd_kcontrol *ctl,
 static int st_hp_volume_offset_put(struct snd_kcontrol *ctl,
                                   struct snd_ctl_elem_value *value)
 {
-       static const s8 offsets[] = { 2*-18, 2*-6, 0 };
+       static const s8 offsets[] = { 2*-18, 2*-12, 2*-6, 0 };
        struct oxygen *chip = ctl->private_data;
        struct xonar_pcm179x *data = chip->model_data;
        s8 offset;
        int changed;
 
-       if (value->value.enumerated.item[0] > 2)
+       if (value->value.enumerated.item[0] > 3)
                return -EINVAL;
        offset = offsets[value->value.enumerated.item[0]];
        mutex_lock(&chip->mutex);
This page took 0.026235 seconds and 5 git commands to generate.