ALSA: hda/hdmi: Reduce hda_jack_tbl lookup at unsol event handling
authorTakashi Iwai <tiwai@suse.de>
Thu, 6 Feb 2020 16:28:01 +0000 (17:28 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 10 Feb 2020 07:22:33 +0000 (08:22 +0100)
Pass hda_jack_tbl object to hdmi_intrinsic_event() along with res from
hdmi_unsol_event() so that we can reduce the lookup of the same
hda_jack_tbl object again.

Minor code refactoring.

Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Nikhil Mahale <nmahale@nvidia.com>
Link: https://lore.kernel.org/r/20200206162804.4734-2-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_hdmi.c

index 5119a9a..c65d16d 100644 (file)
@@ -779,21 +779,9 @@ static void jack_callback(struct hda_codec *codec,
        check_presence_and_report(codec, jack->nid, jack->dev_id);
 }
 
-static void hdmi_intrinsic_event(struct hda_codec *codec, unsigned int res)
+static void hdmi_intrinsic_event(struct hda_codec *codec, unsigned int res,
+                                struct hda_jack_tbl *jack)
 {
-       int tag = res >> AC_UNSOL_RES_TAG_SHIFT;
-       struct hda_jack_tbl *jack;
-
-       if (codec->dp_mst) {
-               int dev_entry =
-                       (res & AC_UNSOL_RES_DE) >> AC_UNSOL_RES_DE_SHIFT;
-
-               jack = snd_hda_jack_tbl_get_from_tag(codec, tag, dev_entry);
-       } else {
-               jack = snd_hda_jack_tbl_get_from_tag(codec, tag, 0);
-       }
-       if (!jack)
-               return;
        jack->jack_dirty = 1;
 
        codec_dbg(codec,
@@ -853,7 +841,7 @@ static void hdmi_unsol_event(struct hda_codec *codec, unsigned int res)
        }
 
        if (subtag == 0)
-               hdmi_intrinsic_event(codec, res);
+               hdmi_intrinsic_event(codec, res, jack);
        else
                hdmi_non_intrinsic_event(codec, res);
 }