diff options
Diffstat (limited to 'sound/pci/hda/hda_codec.c')
-rw-r--r-- | sound/pci/hda/hda_codec.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index c2c65f63bf06..684307372d73 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
@@ -1759,7 +1759,11 @@ static void put_vol_mute(struct hda_codec *codec, struct hda_amp_info *info, | |||
1759 | parm = ch ? AC_AMP_SET_RIGHT : AC_AMP_SET_LEFT; | 1759 | parm = ch ? AC_AMP_SET_RIGHT : AC_AMP_SET_LEFT; |
1760 | parm |= direction == HDA_OUTPUT ? AC_AMP_SET_OUTPUT : AC_AMP_SET_INPUT; | 1760 | parm |= direction == HDA_OUTPUT ? AC_AMP_SET_OUTPUT : AC_AMP_SET_INPUT; |
1761 | parm |= index << AC_AMP_SET_INDEX_SHIFT; | 1761 | parm |= index << AC_AMP_SET_INDEX_SHIFT; |
1762 | parm |= val; | 1762 | if ((val & HDA_AMP_MUTE) && !(info->amp_caps & AC_AMPCAP_MUTE) && |
1763 | (info->amp_caps & AC_AMPCAP_MIN_MUTE)) | ||
1764 | ; /* set the zero value as a fake mute */ | ||
1765 | else | ||
1766 | parm |= val; | ||
1763 | snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_AMP_GAIN_MUTE, parm); | 1767 | snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_AMP_GAIN_MUTE, parm); |
1764 | info->vol[ch] = val; | 1768 | info->vol[ch] = val; |
1765 | } | 1769 | } |
@@ -2026,7 +2030,7 @@ int snd_hda_mixer_amp_tlv(struct snd_kcontrol *kcontrol, int op_flag, | |||
2026 | val1 = -((caps & AC_AMPCAP_OFFSET) >> AC_AMPCAP_OFFSET_SHIFT); | 2030 | val1 = -((caps & AC_AMPCAP_OFFSET) >> AC_AMPCAP_OFFSET_SHIFT); |
2027 | val1 += ofs; | 2031 | val1 += ofs; |
2028 | val1 = ((int)val1) * ((int)val2); | 2032 | val1 = ((int)val1) * ((int)val2); |
2029 | if (min_mute) | 2033 | if (min_mute || (caps & AC_AMPCAP_MIN_MUTE)) |
2030 | val2 |= TLV_DB_SCALE_MUTE; | 2034 | val2 |= TLV_DB_SCALE_MUTE; |
2031 | if (put_user(SNDRV_CTL_TLVT_DB_SCALE, _tlv)) | 2035 | if (put_user(SNDRV_CTL_TLVT_DB_SCALE, _tlv)) |
2032 | return -EFAULT; | 2036 | return -EFAULT; |
@@ -5114,7 +5118,7 @@ static int fill_audio_out_name(struct hda_codec *codec, hda_nid_t nid, | |||
5114 | const char *pfx = "", *sfx = ""; | 5118 | const char *pfx = "", *sfx = ""; |
5115 | 5119 | ||
5116 | /* handle as a speaker if it's a fixed line-out */ | 5120 | /* handle as a speaker if it's a fixed line-out */ |
5117 | if (!strcmp(name, "Line-Out") && attr == INPUT_PIN_ATTR_INT) | 5121 | if (!strcmp(name, "Line Out") && attr == INPUT_PIN_ATTR_INT) |
5118 | name = "Speaker"; | 5122 | name = "Speaker"; |
5119 | /* check the location */ | 5123 | /* check the location */ |
5120 | switch (attr) { | 5124 | switch (attr) { |
@@ -5173,7 +5177,7 @@ int snd_hda_get_pin_label(struct hda_codec *codec, hda_nid_t nid, | |||
5173 | 5177 | ||
5174 | switch (get_defcfg_device(def_conf)) { | 5178 | switch (get_defcfg_device(def_conf)) { |
5175 | case AC_JACK_LINE_OUT: | 5179 | case AC_JACK_LINE_OUT: |
5176 | return fill_audio_out_name(codec, nid, cfg, "Line-Out", | 5180 | return fill_audio_out_name(codec, nid, cfg, "Line Out", |
5177 | label, maxlen, indexp); | 5181 | label, maxlen, indexp); |
5178 | case AC_JACK_SPEAKER: | 5182 | case AC_JACK_SPEAKER: |
5179 | return fill_audio_out_name(codec, nid, cfg, "Speaker", | 5183 | return fill_audio_out_name(codec, nid, cfg, "Speaker", |