mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-04 10:12:16 +09:00
ALSA: hda - Fix missing mute controls for CX5051
commitf69910ddbdupstream. We've added a fake mute control (setting the amp volume to zero) for CX5051 at commit [3868137e: ALSA: hda - Add a fake mute feature], but this feature was overlooked in the generic parser implementation. Now the driver lacks of mute controls on these codecs. The fix is just to check both AC_AMPCAP_MUTE and AC_AMPCAP_MIN_MUTE bits in each place checking the amp capabilities. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=59001 Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
39d165aba3
commit
b32bd480ca
@@ -519,7 +519,7 @@ static bool same_amp_caps(struct hda_codec *codec, hda_nid_t nid1,
|
||||
}
|
||||
|
||||
#define nid_has_mute(codec, nid, dir) \
|
||||
check_amp_caps(codec, nid, dir, AC_AMPCAP_MUTE)
|
||||
check_amp_caps(codec, nid, dir, (AC_AMPCAP_MUTE | AC_AMPCAP_MIN_MUTE))
|
||||
#define nid_has_volume(codec, nid, dir) \
|
||||
check_amp_caps(codec, nid, dir, AC_AMPCAP_NUM_STEPS)
|
||||
|
||||
@@ -621,7 +621,7 @@ static int get_amp_val_to_activate(struct hda_codec *codec, hda_nid_t nid,
|
||||
if (enable)
|
||||
val = (caps & AC_AMPCAP_OFFSET) >> AC_AMPCAP_OFFSET_SHIFT;
|
||||
}
|
||||
if (caps & AC_AMPCAP_MUTE) {
|
||||
if (caps & (AC_AMPCAP_MUTE | AC_AMPCAP_MIN_MUTE)) {
|
||||
if (!enable)
|
||||
val |= HDA_AMP_MUTE;
|
||||
}
|
||||
@@ -645,7 +645,7 @@ static unsigned int get_amp_mask_to_modify(struct hda_codec *codec,
|
||||
{
|
||||
unsigned int mask = 0xff;
|
||||
|
||||
if (caps & AC_AMPCAP_MUTE) {
|
||||
if (caps & (AC_AMPCAP_MUTE | AC_AMPCAP_MIN_MUTE)) {
|
||||
if (is_ctl_associated(codec, nid, dir, idx, NID_PATH_MUTE_CTL))
|
||||
mask &= ~0x80;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user