Merge tag 'asoc-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound...
[linux-2.6-microblaze.git] / sound / pci / hda / hda_auto_parser.c
index 18e6546..2c6d2be 100644 (file)
@@ -884,7 +884,8 @@ 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,
-                            const struct hda_pintbl *pins)
+                            const struct hda_pintbl *pins,
+                            bool match_all_pins)
 {
        const struct hda_pincfg *pin;
        int i;
@@ -908,7 +909,8 @@ static bool pin_config_match(struct hda_codec *codec,
                                        return false;
                        }
                }
-               if (!found && (cfg & 0xf0000000) != 0x40000000)
+               if (match_all_pins &&
+                   !found && (cfg & 0xf0000000) != 0x40000000)
                        return false;
        }
 
@@ -920,10 +922,12 @@ static bool pin_config_match(struct hda_codec *codec,
  * @codec: the HDA codec
  * @pin_quirk: zero-terminated pin quirk list
  * @fixlist: the fixup list
+ * @match_all_pins: all valid pins must match with the table entries
  */
 void snd_hda_pick_pin_fixup(struct hda_codec *codec,
                            const struct snd_hda_pin_quirk *pin_quirk,
-                           const struct hda_fixup *fixlist)
+                           const struct hda_fixup *fixlist,
+                           bool match_all_pins)
 {
        const struct snd_hda_pin_quirk *pq;
 
@@ -935,7 +939,7 @@ void snd_hda_pick_pin_fixup(struct hda_codec *codec,
                        continue;
                if (codec->core.vendor_id != pq->codec)
                        continue;
-               if (pin_config_match(codec, pq->pins)) {
+               if (pin_config_match(codec, pq->pins, match_all_pins)) {
                        codec->fixup_id = pq->value;
 #ifdef CONFIG_SND_DEBUG_VERBOSE
                        codec->fixup_name = pq->name;