mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
ALSA: hda/hdmi: Reduce hda_jack_tbl lookup at unsol event handling
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>
This commit is contained in:
parent
bb6d3fb354
commit
165c0946a8
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user