Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1457846

[PATCH 2/2] ASoC: da7218: Improve driver efficiency with regards to MCLK usage

Path csiph.com!aioe.org!bofh.it!news.nic.it!robomod
From Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Newsgroups linux.kernel
Subject [PATCH 2/2] ASoC: da7218: Improve driver efficiency with regards to MCLK usage
Date Mon, 08 Aug 2016 16:50:02 +0200
Message-ID <s3U2m-2BY-9@gated-at.bofh.it> (permalink)
References <s3TSF-2yD-1@gated-at.bofh.it>
X-Greylist delayed 414 seconds by postgrey-1.27 at vger.kernel.org; Mon, 08 Aug 2016 10:42:22 EDT
X-Brightmail-Tracker H4sIAAAAAAAAA+NgFnrCIsWRWlGSWpSXmKPExsUSt3Opse7aGSv CDW7dV7K4cvEQk8XUh0/YLL5d6WCyuLxrDptF565+VosN39cyOrB5bPjcxOaxc9Zddo9NqzrZ PPa9XcbmsX7LVRaPz5vkAtiiWDPzkvIrElgzply4wFqwXqCiecIPlgbGbbxdjFwcQgLrGCWW/ e5i6WLkBHIqJE4eWcsGYvMKZEpMWjCVHcTmFHCXWP1zC1MXIwdQjZvEt3OlIGE2AQuJyScegJ WzCKhIvH50gQ2kRFggQuLXFi+Q8SICXYwSq189BhvDLFAuseXTRGaI8YISJ2c+YYGIS0gcfPG CGeIEA4nTCxrB4hIC9hLT319lBpkpIaAv0XgsFiJsKPF91jeoEnOJpUv3MU5gFJyFZOosJFMX MDKtYlQvTi0qSy3StdBLKspMzyjJTczM0TU0MNPLTS0uTkxPzUlMKtZLzs/dxAgMfQYg2ME4+ 7L/IUZJDiYlUV75qSvChfiS8lMqMxKLM+KLSnNSiw8xynBwKEnwRk4HygkWpaanVqRl5gCjEC YtwcGjJMI7ESTNW1yQmFucmQ6ROsWoKCXOqwySEABJZJTmwbXBIv8So6yUMC8j0CFCPAWpRbm ZJajyrxjFORiVhHnng0zhycwrgZv+CmgxE9DiJFWwxSWJCCmpBsYDr5dVbOl679+5fNXPYOty 329OTFf3yderN7bPEJtu/n+twjGdG4W1ezlW7XUK4dUsjy5en7LJeucU+Z/Rt2RFWrd//On2z LV/xsR5pmIsk+dXcwQ35p39H7gy2qcg6tn7U4f1PTJ1ztZsOKNuctnC8fXyzf19Hr9Wad14cm PLpbLzQvsW+ZQpsRRnJBpqMRcVJwIAxOrCT/cCAAA=
X-Env-Sender Adam.Thomson.Opensource@diasemi.com
X-Msg-Ref server-6.tower-193.messagelabs.com!1470666925!47724985!1
X-Originating-IP [94.185.165.51]
X-Starscan-Version 8.77; banners=-,-,-
X-Viruschecked Checked
MIME-Version 1.0
Content-Type text/plain
X-Kse-Attachmentfiltering-Interceptor-Info protection disabled
X-Kse-Serverinfo sw-ex-cashub01.diasemi.com, 9
X-Kse-Antivirus-Interceptor-Info scan successful
X-Kse-Antivirus-Info Clean, bases: 08/08/2016 08:46:00
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 68
Organization linux.* mail to news gateway
X-Original-Cc Support Opensource <support.opensource@diasemi.com>, <alsa-devel@alsa-project.org>, <linux-kernel@vger.kernel.org>
X-Original-Date Mon, 8 Aug 2016 15:35:24 +0100
X-Original-Message-ID <aa06fd28f210387a6d7eb19fca9790022c01f72a.1470665013.git.Adam.Thomson.Opensource@diasemi.com>
X-Original-References <cover.1470665013.git.Adam.Thomson.Opensource@diasemi.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1457846

Show key headers only | View raw


Currently MCLK remains enabled during bias STANDBY state, and this
is not necessary. This patch updates the code to handle enabling
and disabling of MCLK, if provided, when moving between STANDBY
and PREPARE states, therefore saving power when no active streams
present.

Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
---
 sound/soc/codecs/da7218.c | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/sound/soc/codecs/da7218.c b/sound/soc/codecs/da7218.c
index f443519..e7f3e4c 100644
--- a/sound/soc/codecs/da7218.c
+++ b/sound/soc/codecs/da7218.c
@@ -2583,20 +2583,22 @@ static int da7218_set_bias_level(struct snd_soc_codec *codec,
 
 	switch (level) {
 	case SND_SOC_BIAS_ON:
-	case SND_SOC_BIAS_PREPARE:
 		break;
-	case SND_SOC_BIAS_STANDBY:
-		if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
-			/* MCLK */
+	case SND_SOC_BIAS_PREPARE:
+		/* Enable MCLK for transition to ON state */
+		if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_STANDBY) {
 			if (da7218->mclk) {
 				ret = clk_prepare_enable(da7218->mclk);
 				if (ret) {
-					dev_err(codec->dev,
-						"Failed to enable mclk\n");
+					dev_err(codec->dev, "Failed to enable mclk\n");
 					return ret;
 				}
 			}
+		}
 
+		break;
+	case SND_SOC_BIAS_STANDBY:
+		if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
 			/* Master bias */
 			snd_soc_update_bits(codec, DA7218_REFERENCES,
 					    DA7218_BIAS_EN_MASK,
@@ -2606,6 +2608,10 @@ static int da7218_set_bias_level(struct snd_soc_codec *codec,
 			snd_soc_update_bits(codec, DA7218_LDO_CTRL,
 					    DA7218_LDO_EN_MASK,
 					    DA7218_LDO_EN_MASK);
+		} else {
+			/* Remove MCLK */
+			if (da7218->mclk)
+				clk_disable_unprepare(da7218->mclk);
 		}
 		break;
 	case SND_SOC_BIAS_OFF:
@@ -2619,10 +2625,6 @@ static int da7218_set_bias_level(struct snd_soc_codec *codec,
 			snd_soc_update_bits(codec, DA7218_REFERENCES,
 					    DA7218_BIAS_EN_MASK, 0);
 		}
-
-		/* MCLK */
-		if (da7218->mclk)
-			clk_disable_unprepare(da7218->mclk);
 		break;
 	}
 
-- 
1.9.3

Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread


Thread

[PATCH 0/2] ASoC: da7218: Small clocking related updates for driver Adam Thomson <Adam.Thomson.Opensource@diasemi.com> - 2016-08-08 16:40 +0200
  [PATCH 1/2] ASoC: da7218: Remove 32KHz PLL mode from driver Adam Thomson <Adam.Thomson.Opensource@diasemi.com> - 2016-08-08 16:50 +0200
  [PATCH 2/2] ASoC: da7218: Improve driver efficiency with regards to  MCLK usage Adam Thomson <Adam.Thomson.Opensource@diasemi.com> - 2016-08-08 16:50 +0200

csiph-web