mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
ALSA: hda: when comparing pin configurations, ignore assoc in addition to seq
commit5e0ad0d874upstream. Commit [64047d7f49ALSA: hda - ignore the assoc and seq when comparing pin configurations] intented to ignore both seq and assoc at pin comparing, but it only ignored seq. So that commit may still fail to match pins on some machines. Change the bitmask to also ignore assoc. v2: Use macro to do bit masking. Thanks to Hui Wang for the analysis. Fixes:64047d7f49("ALSA: hda - ignore the assoc and seq when comparing...") Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> 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
e029ef3a9c
commit
0ce4f00087
@@ -884,6 +884,8 @@ void snd_hda_apply_fixup(struct hda_codec *codec, int action)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(snd_hda_apply_fixup);
|
EXPORT_SYMBOL_GPL(snd_hda_apply_fixup);
|
||||||
|
|
||||||
|
#define IGNORE_SEQ_ASSOC (~(AC_DEFCFG_SEQUENCE | AC_DEFCFG_DEF_ASSOC))
|
||||||
|
|
||||||
static bool pin_config_match(struct hda_codec *codec,
|
static bool pin_config_match(struct hda_codec *codec,
|
||||||
const struct hda_pintbl *pins)
|
const struct hda_pintbl *pins)
|
||||||
{
|
{
|
||||||
@@ -901,7 +903,7 @@ static bool pin_config_match(struct hda_codec *codec,
|
|||||||
for (; t_pins->nid; t_pins++) {
|
for (; t_pins->nid; t_pins++) {
|
||||||
if (t_pins->nid == nid) {
|
if (t_pins->nid == nid) {
|
||||||
found = 1;
|
found = 1;
|
||||||
if ((t_pins->val & 0xfffffff0) == (cfg & 0xfffffff0))
|
if ((t_pins->val & IGNORE_SEQ_ASSOC) == (cfg & IGNORE_SEQ_ASSOC))
|
||||||
break;
|
break;
|
||||||
else if ((cfg & 0xf0000000) == 0x40000000 && (t_pins->val & 0xf0000000) == 0x40000000)
|
else if ((cfg & 0xf0000000) == 0x40000000 && (t_pins->val & 0xf0000000) == 0x40000000)
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user