diff mbox series

[1/4] ALSA: hda/hdmi: Reduce hda_jack_tbl lookup at unsol event handling

Message ID 20200206162804.4734-2-tiwai@suse.de (mailing list archive)
State New, archived
Headers show
Series ALSA: hda/hdmi: Clean up jack handling | expand

Commit Message

Takashi Iwai Feb. 6, 2020, 4:28 p.m. UTC
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.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/pci/hda/patch_hdmi.c | 18 +++---------------
 1 file changed, 3 insertions(+), 15 deletions(-)

Comments

Nikhil Mahale Feb. 10, 2020, 3:39 a.m. UTC | #1
Looks good to me.

Reviewed-by: Nikhil Mahale <nmahale@nvidia.com>

On 2/6/20 9:58 PM, Takashi Iwai wrote:
> External email: Use caution opening links or attachments
> 
> 
> 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.
> 
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> ---
>  sound/pci/hda/patch_hdmi.c | 18 +++---------------
>  1 file changed, 3 insertions(+), 15 deletions(-)
> 
> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
> index 5119a9ae3d8a..c65d16dea08c 100644
> --- a/sound/pci/hda/patch_hdmi.c
> +++ b/sound/pci/hda/patch_hdmi.c
> @@ -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);
>  }
> --
> 2.16.4
> 

-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information.  Any unauthorized review, use, disclosure or distribution
is prohibited.  If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
diff mbox series

Patch

diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
index 5119a9ae3d8a..c65d16dea08c 100644
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -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);
 }