All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Brown <broonie@kernel.org>
To: Jeeja KP <jeeja.kp@intel.com>
Cc: alsa-devel@alsa-project.org, Vinod Koul <vinod.koul@intel.com>,
	patches.audio@intel.com, tiwai@suse.de, broonie@kernel.org,
	liam.r.girdwood@intel.com
Subject: Applied "ASoC: hdac_hdmi: Handle MST pin jack detection at boot/resume" to the asoc tree
Date: Thu, 16 Feb 2017 19:04:45 +0000	[thread overview]
Message-ID: <E1ceRMD-0007f8-63@debutante> (raw)
In-Reply-To: <1484589477-7630-16-git-send-email-jeeja.kp@intel.com>

The patch

   ASoC: hdac_hdmi: Handle MST pin jack detection at boot/resume

has been applied to the asoc tree at

   git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git 

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.  

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

>From a9ce96bcd9c4d0c1ffd3d37c000bcee470b2535b Mon Sep 17 00:00:00 2001
From: Jeeja KP <jeeja.kp@intel.com>
Date: Tue, 7 Feb 2017 19:09:46 +0530
Subject: [PATCH] ASoC: hdac_hdmi: Handle MST pin jack detection at boot/resume

The ELD notification can be received asynchronously from the graphics
side and this may happen just at the moment the sound driver is
initializing and notification will be missed. Similarly at system
resume, the notification is ignored as the  ELD and connection states
are updated in anyway at the end of the resume.
So check the jack status in boot/resume by querying the port presence
based on pin caps and report the jack status.

Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
 sound/soc/codecs/hdac_hdmi.c | 41 +++++++++++++++++++++++++++++------------
 1 file changed, 29 insertions(+), 12 deletions(-)

diff --git a/sound/soc/codecs/hdac_hdmi.c b/sound/soc/codecs/hdac_hdmi.c
index 84b7d6cd7c37..c5527e81a490 100644
--- a/sound/soc/codecs/hdac_hdmi.c
+++ b/sound/soc/codecs/hdac_hdmi.c
@@ -1551,15 +1551,38 @@ int hdac_hdmi_jack_init(struct snd_soc_dai *dai, int device)
 }
 EXPORT_SYMBOL_GPL(hdac_hdmi_jack_init);
 
+static void hdac_hdmi_present_sense_all_pins(struct hdac_ext_device *edev,
+			struct hdac_hdmi_priv *hdmi, bool detect_pin_caps)
+{
+	int i;
+	struct hdac_hdmi_pin *pin;
+
+	list_for_each_entry(pin, &hdmi->pin_list, head) {
+		if (detect_pin_caps) {
+
+			if (hdac_hdmi_get_port_len(edev, pin->nid)  == 0)
+				pin->mst_capable = false;
+			else
+				pin->mst_capable = true;
+		}
+
+		for (i = 0; i < pin->num_ports; i++) {
+			if (!pin->mst_capable && i > 0)
+				continue;
+
+			hdac_hdmi_present_sense(pin, &pin->ports[i]);
+		}
+	}
+}
+
 static int hdmi_codec_probe(struct snd_soc_codec *codec)
 {
 	struct hdac_ext_device *edev = snd_soc_codec_get_drvdata(codec);
 	struct hdac_hdmi_priv *hdmi = edev->private_data;
 	struct snd_soc_dapm_context *dapm =
 		snd_soc_component_get_dapm(&codec->component);
-	struct hdac_hdmi_pin *pin;
 	struct hdac_ext_link *hlink = NULL;
-	int ret, i;
+	int ret;
 
 	edev->scodec = codec;
 
@@ -1587,10 +1610,7 @@ static int hdmi_codec_probe(struct snd_soc_codec *codec)
 		return ret;
 	}
 
-	list_for_each_entry(pin, &hdmi->pin_list, head)
-		for (i = 0; i < pin->num_ports; i++)
-			hdac_hdmi_present_sense(pin, &pin->ports[i]);
-
+	hdac_hdmi_present_sense_all_pins(edev, hdmi, true);
 	/* Imp: Store the card pointer in hda_codec */
 	edev->card = dapm->card->snd_card;
 
@@ -1638,9 +1658,7 @@ static void hdmi_codec_complete(struct device *dev)
 {
 	struct hdac_ext_device *edev = to_hda_ext_device(dev);
 	struct hdac_hdmi_priv *hdmi = edev->private_data;
-	struct hdac_hdmi_pin *pin;
 	struct hdac_device *hdac = &edev->hdac;
-	int i;
 
 	/* Power up afg */
 	snd_hdac_codec_read(hdac, hdac->afg, 0,	AC_VERB_SET_POWER_STATE,
@@ -1652,11 +1670,10 @@ static void hdmi_codec_complete(struct device *dev)
 	/*
 	 * As the ELD notify callback request is not entertained while the
 	 * device is in suspend state. Need to manually check detection of
-	 * all pins here.
+	 * all pins here. pin capablity change is not support, so use the
+	 * already set pin caps.
 	 */
-	list_for_each_entry(pin, &hdmi->pin_list, head)
-		for (i = 0; i < pin->num_ports; i++)
-			hdac_hdmi_present_sense(pin, &pin->ports[i]);
+	hdac_hdmi_present_sense_all_pins(edev, hdmi, false);
 
 	pm_runtime_put_sync(&edev->hdac.dev);
 }
-- 
2.11.0

  reply	other threads:[~2017-02-16 19:04 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-16 17:57 [PATCH 00/30] ASoC: hdac_hdmi: Add support to enable MST audio jeeja.kp
2017-01-16 17:57 ` [PATCH 01/30] ASoC: hdac_hdmi: use audio component framework to read ELD jeeja.kp
2017-01-20 13:37   ` Applied "ASoC: hdac_hdmi: use audio component framework to read ELD" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 02/30] ASoC: hdac_hdmi: Register widget event handlers jeeja.kp
2017-01-16 17:57 ` [PATCH 03/30] ASoC: Intel: Skylake: Use set_tdm_slot to set the dma channel jeeja.kp
2017-01-24 18:40   ` Applied "ASoC: Intel: Skylake: Use set_tdm_slot to set the dma channel" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 04/30] ASoC: hdac_hdmi: Move channel info from pin to PCM structure jeeja.kp
2017-02-04 12:12   ` Applied "ASoC: hdac_hdmi: Move channel info from pin to PCM structure" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 05/30] ASoC: Intel: bxt: add channel map support in rt298 machine jeeja.kp
2017-02-04 12:12   ` Applied "ASoC: Intel: bxt: add channel map support in rt298 machine" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 06/30] ASoC: Intel: bxt: add channel map support in bxt_da7219_max98357a machine jeeja.kp
2017-02-04 12:12   ` Applied "ASoC: Intel: bxt: add channel map support in bxt_da7219_max98357a machine" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 07/30] ASoC: hdac_hdmi: Begin to add support for DP Multi-stream audio jeeja.kp
2017-01-16 17:57 ` [PATCH 08/30] ASoC: Intel: Skylake: Add route change to rt286 machine jeeja.kp
2017-01-16 17:57 ` [PATCH 09/30] ASoC: Intel: Skylake: Add route change to nau88l25_max98357a machine jeeja.kp
2017-01-16 17:57 ` [PATCH 10/30] ASoC: Intel: Skylake: Add route change to nau88l25_ssm4567 machine jeeja.kp
2017-01-16 17:57 ` [PATCH 11/30] ASoC: Intel: bxt: Add route change to rt298 machine jeeja.kp
2017-01-16 17:57 ` [PATCH 12/30] ASoC: Intel: bxt: Add route change to da7219_max98357a machine jeeja.kp
2017-01-16 17:57 ` [PATCH 13/30] ASoC: hdac_hdmi: Add support to handle MST capable pin jeeja.kp
2017-01-16 17:57 ` [PATCH 14/30] ASoC: hdac_hdmi: Add MST verb support jeeja.kp
2017-02-16 19:04   ` Applied "ASoC: hdac_hdmi: Add MST verb support" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 15/30] ASoC: hdac_hdmi: Handle MST pin jack detection at boot/resume jeeja.kp
2017-02-16 19:04   ` Mark Brown [this message]
2017-01-16 17:57 ` [PATCH 16/30] ASoc: hdac_hdmi: Configure pin verbs for MST jeeja.kp
2017-02-16 19:04   ` Applied "ASoc: hdac_hdmi: Configure pin verbs for MST" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 17/30] ASoC: hdac_hdmi: Add support for multiple ports to a PCM jeeja.kp
2017-02-16 19:04   ` Applied "ASoC: hdac_hdmi: Add support for multiple ports to a PCM" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 18/30] ASoC: hdac_hdmi: Use ASoC jack instead of snd_jack jeeja.kp
2017-02-16 19:04   ` Applied "ASoC: hdac_hdmi: Use ASoC jack instead of snd_jack" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 19/30] ASoC: Intel: Skylake: Create ASoC jack for hdmi in rt286 machine jeeja.kp
2017-02-16 19:04   ` Applied "ASoC: Intel: Skylake: Create ASoC jack for hdmi in rt286 machine" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 20/30] ASoC: Intel: Skylake: Create ASoC jack for hdmi in skl_nau88l25_max98357a machine jeeja.kp
2017-02-16 19:04   ` Applied "ASoC: Intel: Skylake: Create ASoC jack for hdmi in skl_nau88l25_max98357a machine" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 21/30] ASoC: Intel: Skylake: Create ASoC jack for hdmi in skl_nau88l25_ssm4567 machine jeeja.kp
2017-02-16 19:04   ` Applied "ASoC: Intel: Skylake: Create ASoC jack for hdmi in nau88l25_ssm4567 machine" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 22/30] ASoC: Intel: bxt: Create ASoC jack for hdmi in bxt_rt298 machine jeeja.kp
2017-02-16 19:04   ` Applied "ASoC: Intel: bxt: Create ASoC jack for hdmi in bxt_rt298 machine" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 23/30] ASoC: Intel: bxt: Create ASoC jack for hdmi in bxt_da7219_max98357 machine jeeja.kp
2017-02-16 19:04   ` Applied "ASoC: Intel: bxt: Create ASoC jack for hdmi in bxt_da7219_max98357 machine" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 24/30] ASoC: hdac_hdmi: Add machine pin widget for each port jeeja.kp
2017-02-16 19:04   ` Applied "ASoC: hdac_hdmi: Add machine pin widget for each port" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 25/30] ASoC: Intel: Skylake: Add jack port initialize in rt286 machine jeeja.kp
2017-02-16 19:04   ` Applied "ASoC: Intel: Skylake: Add jack port initialize in rt286 machine" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 26/30] ASoC: Intel: Skylake: Add jack port initialize in skl_nau88l25_max98357a machine jeeja.kp
2017-02-16 19:04   ` Applied "ASoC: Intel: Skylake: Add jack port initialize in nau88l25_max98357a machine" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 27/30] ASoC: Intel: Skylake: Add jack port initialize in skl_nau88l25_ssm4567 machine jeeja.kp
2017-02-16 19:04   ` Applied "ASoC: Intel: Skylake: Add jack port initialize in nau88l25_ssm4567 machine" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 28/30] ASoC: Intel: Skylake: Add jack port initialize in bxt_rt298 machine jeeja.kp
2017-02-17 13:22   ` Applied "ASoC: Intel: bxt: Add jack port initialize in bxt_rt298 machine" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 29/30] ASoC: Intel: Skylake: Add jack port initialize in bxt_da7219_max98357a machine jeeja.kp
2017-02-16 19:04   ` Applied "ASoC: Intel: bxt: Add jack port initialize in da7219_max98357a machine" to the asoc tree Mark Brown
2017-01-16 17:57 ` [PATCH 30/30] ASoC: Intel: Skylake: Fix to delete DSP pipe after stopping pipe jeeja.kp
2017-03-15 18:13   ` Applied "ASoC: Intel: Skylake: Fix to delete DSP pipe after stopping pipe" to the asoc tree Mark Brown
2017-01-17 17:54 ` [PATCH 00/30] ASoC: hdac_hdmi: Add support to enable MST audio Mark Brown
2017-01-18 12:44   ` Jeeja KP

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E1ceRMD-0007f8-63@debutante \
    --to=broonie@kernel.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=jeeja.kp@intel.com \
    --cc=liam.r.girdwood@intel.com \
    --cc=patches.audio@intel.com \
    --cc=tiwai@suse.de \
    --cc=vinod.koul@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.