diff mbox

ASoC: Intel: Add suspend_pre and resume_post for Braswell snd_soc_card

Message ID 1426045713-1738-1-git-send-email-yao.jin@linux.intel.com (mailing list archive)
State Accepted
Commit 066d7b87fa11213d7eca7af8fdd8447e1c62117b
Headers show

Commit Message

Jin, Yao March 11, 2015, 3:48 a.m. UTC
On Braswell, we need to add some machine specific setting before suspend
and after resume. For example, disable/enable jack detection in codec so
use snd_soc_card suspend_pre and resume_post ops for this purpose.

Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
---
 sound/soc/intel/cht_bsw_rt5672.c | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

Comments

Mark Brown March 11, 2015, 11:50 a.m. UTC | #1
On Wed, Mar 11, 2015 at 11:48:33AM +0800, Jin Yao wrote:
> On Braswell, we need to add some machine specific setting before suspend
> and after resume. For example, disable/enable jack detection in codec so
> use snd_soc_card suspend_pre and resume_post ops for this purpose.

Applied, thanks.
Mark Brown March 11, 2015, 12:50 p.m. UTC | #2
On Wed, Mar 11, 2015 at 11:48:33AM +0800, Jin Yao wrote:
> On Braswell, we need to add some machine specific setting before suspend
> and after resume. For example, disable/enable jack detection in codec so
> use snd_soc_card suspend_pre and resume_post ops for this purpose.

Reverted since it doesn't build!
diff mbox

Patch

diff --git a/sound/soc/intel/cht_bsw_rt5672.c b/sound/soc/intel/cht_bsw_rt5672.c
index 279df4c..c41fae3 100644
--- a/sound/soc/intel/cht_bsw_rt5672.c
+++ b/sound/soc/intel/cht_bsw_rt5672.c
@@ -267,6 +267,35 @@  static struct snd_soc_dai_link cht_dailink[] = {
 	},
 };
 
+static int cht_suspend_pre(struct snd_soc_card *card)
+{
+	struct snd_soc_codec *codec;
+
+	list_for_each_entry(codec, &card->codec_dev_list, card_list) {
+		if (!strcmp(codec->component.name, "i2c-10EC5670:00")) {
+			dev_dbg(codec->dev, "disabling jack detect before going to suspend.\n");
+			rt5670_jack_suspend(codec);
+			break;
+		}
+	}
+	return 0;
+}
+
+static int cht_resume_post(struct snd_soc_card *card)
+{
+	struct snd_soc_codec *codec;
+
+	list_for_each_entry(codec, &card->codec_dev_list, card_list) {
+		if (!strcmp(codec->component.name, "i2c-10EC5670:00")) {
+			dev_dbg(codec->dev, "enabling jack detect for resume.\n");
+			rt5670_jack_resume(codec);
+			break;
+		}
+	}
+
+	return 0;
+}
+
 /* SoC card */
 static struct snd_soc_card snd_soc_card_cht = {
 	.name = "cherrytrailcraudio",
@@ -278,6 +307,8 @@  static struct snd_soc_card snd_soc_card_cht = {
 	.num_dapm_routes = ARRAY_SIZE(cht_audio_map),
 	.controls = cht_mc_controls,
 	.num_controls = ARRAY_SIZE(cht_mc_controls),
+	.suspend_pre = cht_suspend_pre,
+	.resume_post = cht_resume_post,
 };
 
 static int snd_cht_mc_probe(struct platform_device *pdev)