Commit dd38dc1a authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Takashi Iwai

ALSA: virtuoso: add one more headphone impedance setting

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: default avatarClemens Ladisch <clemens@ladisch.de>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 49f4b4d1
...@@ -795,11 +795,11 @@ static int st_output_switch_put(struct snd_kcontrol *ctl, ...@@ -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, static int st_hp_volume_offset_info(struct snd_kcontrol *ctl,
struct snd_ctl_elem_info *info) struct snd_ctl_elem_info *info)
{ {
static const char *const names[3] = { static const char *const names[4] = {
"< 64 ohms", "64-300 ohms", "300-600 ohms" "< 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, 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, ...@@ -809,12 +809,14 @@ static int st_hp_volume_offset_get(struct snd_kcontrol *ctl,
struct xonar_pcm179x *data = chip->model_data; struct xonar_pcm179x *data = chip->model_data;
mutex_lock(&chip->mutex); mutex_lock(&chip->mutex);
if (data->hp_gain_offset < 2*-6) if (data->hp_gain_offset < 2*-12)
value->value.enumerated.item[0] = 0; 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; value->value.enumerated.item[0] = 1;
else else if (data->hp_gain_offset < 0)
value->value.enumerated.item[0] = 2; value->value.enumerated.item[0] = 2;
else
value->value.enumerated.item[0] = 3;
mutex_unlock(&chip->mutex); mutex_unlock(&chip->mutex);
return 0; return 0;
} }
...@@ -823,13 +825,13 @@ static int st_hp_volume_offset_get(struct snd_kcontrol *ctl, ...@@ -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, static int st_hp_volume_offset_put(struct snd_kcontrol *ctl,
struct snd_ctl_elem_value *value) 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 oxygen *chip = ctl->private_data;
struct xonar_pcm179x *data = chip->model_data; struct xonar_pcm179x *data = chip->model_data;
s8 offset; s8 offset;
int changed; int changed;
if (value->value.enumerated.item[0] > 2) if (value->value.enumerated.item[0] > 3)
return -EINVAL; return -EINVAL;
offset = offsets[value->value.enumerated.item[0]]; offset = offsets[value->value.enumerated.item[0]];
mutex_lock(&chip->mutex); mutex_lock(&chip->mutex);
......
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