summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2020-02-06 17:28:03 +0100
committerTakashi Iwai <tiwai@suse.de>2020-02-10 08:23:58 +0100
commitae47e2ec5b4504cd91968e97ce2dab4ccd346fb6 (patch)
tree5a8d8b4795d5d96e94941e538dce8cc741cb524a
parentALSA: hda/hdmi: Don't use standard hda_jack for generic HDMI jacks (diff)
downloadlinux-ae47e2ec5b4504cd91968e97ce2dab4ccd346fb6.tar.xz
linux-ae47e2ec5b4504cd91968e97ce2dab4ccd346fb6.zip
ALSA: hda/hdmi: Move runtime PM resume into hdmi_present_sense_via_verbs()
For improving the readability, move the runtime PM handling code from hdmi_present_sense() to hdmi_present_sense_via_verbs(). Now hdmi_present_sense() became symmetric for both audio-component and legacy cases. Just a 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-4-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/hda/patch_hdmi.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
index 98a8c4f97d6b..437177294d78 100644
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -1587,6 +1587,11 @@ static void hdmi_present_sense_via_verbs(struct hdmi_spec_per_pin *per_pin,
*/
int present;
bool do_repoll = false;
+ int ret;
+
+ ret = snd_hda_power_up_pm(codec);
+ if (ret < 0 && pm_runtime_suspended(hda_codec_dev(codec)))
+ goto out;
present = snd_hda_jack_pin_sense(codec, pin_nid, dev_id);
@@ -1620,6 +1625,8 @@ static void hdmi_present_sense_via_verbs(struct hdmi_spec_per_pin *per_pin,
do_update_eld(codec, per_pin, eld);
mutex_unlock(&per_pin->lock);
+ out:
+ snd_hda_power_down_pm(codec);
}
/* update ELD and jack state via audio component */
@@ -1657,20 +1664,11 @@ static void sync_eld_via_acomp(struct hda_codec *codec,
static void hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll)
{
struct hda_codec *codec = per_pin->codec;
- int ret;
- /* no temporary power up/down needed for component notifier */
- if (!codec_has_acomp(codec)) {
- ret = snd_hda_power_up_pm(codec);
- if (ret < 0 && pm_runtime_suspended(hda_codec_dev(codec))) {
- snd_hda_power_down_pm(codec);
- return;
- }
+ if (!codec_has_acomp(codec))
hdmi_present_sense_via_verbs(per_pin, repoll);
- snd_hda_power_down_pm(codec);
- } else {
+ else
sync_eld_via_acomp(codec, per_pin);
- }
}
static void hdmi_repoll_eld(struct work_struct *work)