From patchwork Thu Mar 12 02:49:39 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Inha Song X-Patchwork-Id: 5989781 Return-Path: X-Original-To: patchwork-alsa-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 031819F380 for ; Thu, 12 Mar 2015 02:51:15 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 199D120379 for ; Thu, 12 Mar 2015 02:51:14 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id E42AF203A0 for ; Thu, 12 Mar 2015 02:51:12 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id 880E62654EF; Thu, 12 Mar 2015 03:51:11 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 Received: from alsa0.perex.cz (localhost [IPv6:::1]) by alsa0.perex.cz (Postfix) with ESMTP id D2EE82654BE; Thu, 12 Mar 2015 03:51:02 +0100 (CET) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 1E4692654BF; Thu, 12 Mar 2015 03:51:02 +0100 (CET) Received: from mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by alsa0.perex.cz (Postfix) with ESMTP id C2BF72654AD for ; Thu, 12 Mar 2015 03:50:54 +0100 (CET) Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0NL20047CVWSUI70@mailout1.samsung.com> for alsa-devel@alsa-project.org; Thu, 12 Mar 2015 11:50:52 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.116]) by epcpsbgr2.samsung.com (EPCPMTA) with SMTP id 89.FA.11124.C0FF0055; Thu, 12 Mar 2015 11:50:52 +0900 (KST) X-AuditID: cbfee68e-f79b46d000002b74-fa-5500ff0c6829 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 09.57.09430.B0FF0055; Thu, 12 Mar 2015 11:50:52 +0900 (KST) Received: from songinha-Samsung-DeskTop-System.10.32.193.11 ([10.252.81.136]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0NL200HW2VW7TST0@mmp2.samsung.com>; Thu, 12 Mar 2015 11:50:51 +0900 (KST) From: Inha Song To: broonie@kernel.org, alsa-devel@alsa-project.org Date: Thu, 12 Mar 2015 11:49:39 +0900 Message-id: <1426128580-18320-1-git-send-email-ideal.song@samsung.com> X-Mailer: git-send-email 2.0.0.390.gcb682f8 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrHLMWRmVeSWpSXmKPExsWyRsSkRJfnP0OowfzXfBZXLh5ispj68Amb xb8pN9gtrn95zmqx6+99Roslk+ezWny70sFk0Xmhg9Xi8q45bBZ/zmtaLH/7n82ic1c/q8WV S6fYLF5ufsPkwOex4XMTm8e/w/1MHjtn3WX32LSqk81jyZtDrB4vJ/5m89j3dhmbR9+WVYwe m09Xe3zeJBfAFcVlk5Kak1mWWqRvl8CV0dgwj7mgWbxi3b+ZbA2MX4S6GDk5JARMJGZ9/8AO YYtJXLi3nq2LkYtDSGApo8SP1Z8ZYYoOremGSkxnlJiw+jsLhDOHSeL64gWsIFVsAhoS3z9v ZgaxRQSMJW5+3skMUsQscIJJ4sHdj0wgCWGBAIlHJ9YAjeXgYBFQlTj/PRskzCvgJrFlRSsz xDZtiX0NM8G2SQhcY5f4dXUj2AIWAQGJb5MPsYD0SgjISmw6AFUvKXFwxQ2WCYyCCxgZVjGK phYkFxQnpRcZ6RUn5haX5qXrJefnbmIERsvpf8/6djDePGB9iFGAg1GJh7fiK0OoEGtiWXFl 7iFGU6ANE5mlRJPzgTGZVxJvaGxmZGFqYmpsZG5ppiTOmyD1M1hIID2xJDU7NbUgtSi+qDQn tfgQIxMHp1QDY3iJ/+qkhtKEJzIbljjKsj2Od5kuOn8259HfSx2dDu9fuTr5mP765xF2zy6y FtZvC5i8ZvkH2YYDiyVcpv+6Jx4ltTj7u+kBzoKOEJ4Y0V1rTEI08sOWtPjGND876L/tfPnj 6MkXtK84vr1xhKFh/+GcqUK+K6uK9b4tyUi0cpWs59g6wbggXomlOCPRUIu5qDgRAFwEoBiR AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrBIsWRmVeSWpSXmKPExsVy+t9jQV2e/wyhBm++sVhcuXiIyWLqwyds Fv+m3GC3uP7lOavFrr/3GS2WTJ7PavHtSgeTReeFDlaLy7vmsFn8Oa9psfztfzaLzl39rBZX Lp1is3i5+Q2TA5/Hhs9NbB7/DvczeeycdZfdY9OqTjaPJW8OsXq8nPibzWPf22VsHn1bVjF6 bD5d7fF5k1wAV1QDo01GamJKapFCal5yfkpmXrqtkndwvHO8qZmBoa6hpYW5kkJeYm6qrZKL T4CuW2YO0AdKCmWJOaVAoYDE4mIlfTtME0JD3HQtYBojdH1DguB6jAzQQMIaxozGhnnMBc3i Fev+zWRrYPwi1MXIySEhYCJxaE03G4QtJnHh3nogm4tDSGA6o8SE1d9ZIJw5TBLXFy9gBali E9CQ+P55MzOILSJgLHHz805mkCJmgRNMEg/ufmQCSQgLBEg8OrGGsYuRg4NFQFXi/PdskDCv gJvElhWtzBDbtCX2Ncxkm8DIvYCRYRWjaGpBckFxUnqukV5xYm5xaV66XnJ+7iZGcCw+k97B uKrB4hCjAAejEg/vhe8MoUKsiWXFlbmHGCU4mJVEeP1+AYV4UxIrq1KL8uOLSnNSiw8xmgIt n8gsJZqcD0wTeSXxhsYmZkaWRuaGFkbG5krivEr2bSFCAumJJanZqakFqUUwfUwcnFINjCYr 7dZcqG9YJ7Z6kdLmJM3U686K+69z7Tzi9XyDgaD0bhYlge/Xja5/XSC+e/lKWev3b7INw878 VvArXTtB9N9+xXneqkrSPPtaGUvU1572eiiyR/jWucw5cqczN6t3M5245T+fcYFtyb55jxpt zE+v7FGLnsigubf9jEGwu1TNpma3/fnn5ZVYijMSDbWYi4oTAQCoYErbAgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: lars@metafoo.de, sachin.kamat@samsung.com, tiwai@suse.de, patches@opensource.wolfsonmicro.com, lgirdwood@gmail.com, nikesh@opensource.wolfsonmicro.com, linux-kernel@vger.kernel.org, cw00.choi@samsung.com, Li.Xiubo@freescale.com, ckeepax@opensource.wolfsonmicro.com, Inha Song Subject: [alsa-devel] [PATCH] ASoC: wm8994: Manage wm8994's MCLK in codec driver X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP Previously, When we use wm8994 codec, we should control its MCLK in machine driver. But, It should be managed by wm8994 codec driver, not machine driver. This patch add MCLK clock DT parsing logic and control own MCLK. Signed-off-by: Inha Song --- sound/soc/codecs/wm8994.c | 27 ++++++++++++++++++++++++++- sound/soc/codecs/wm8994.h | 1 + 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index 247b390..d80dcc6 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -2470,6 +2471,7 @@ static int wm8994_set_bias_level(struct snd_soc_codec *codec, { struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); struct wm8994 *control = wm8994->wm8994; + int i; wm_hubs_set_bias_level(codec, level); @@ -2491,8 +2493,19 @@ static int wm8994_set_bias_level(struct snd_soc_codec *codec, break; } - if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY) + if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY) { + for (i = 0; i < ARRAY_SIZE(wm8994->clk_mclk); i++) { + if (!IS_ERR(wm8994->clk_mclk[i])) + clk_prepare_enable(wm8994->clk_mclk[i]); + } active_reference(codec); + } else if (codec->dapm.bias_level == SND_SOC_BIAS_ON) { + for (i = 0; i < ARRAY_SIZE(wm8994->clk_mclk); i++) { + if (!IS_ERR(wm8994->clk_mclk[i])) + clk_disable_unprepare( + wm8994->clk_mclk[i]); + } + } break; case SND_SOC_BIAS_STANDBY: @@ -4451,6 +4464,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8994 = { static int wm8994_probe(struct platform_device *pdev) { struct wm8994_priv *wm8994; + int i; wm8994 = devm_kzalloc(&pdev->dev, sizeof(struct wm8994_priv), GFP_KERNEL); @@ -4460,6 +4474,17 @@ static int wm8994_probe(struct platform_device *pdev) wm8994->wm8994 = dev_get_drvdata(pdev->dev.parent); + for (i = 0; i < ARRAY_SIZE(wm8994->clk_mclk); i++) { + char mclk_name[] = "MCLKx"; + + snprintf(mclk_name, sizeof(mclk_name), "MCLK%d", i + 1); + + wm8994->clk_mclk[i] = devm_clk_get(pdev->dev.parent, mclk_name); + if (IS_ERR(wm8994->clk_mclk[i])) + if (PTR_ERR(wm8994->clk_mclk) == -EPROBE_DEFER) + return -EPROBE_DEFER; + } + pm_runtime_enable(&pdev->dev); pm_runtime_idle(&pdev->dev); diff --git a/sound/soc/codecs/wm8994.h b/sound/soc/codecs/wm8994.h index 6536f8d..8cf06a4 100644 --- a/sound/soc/codecs/wm8994.h +++ b/sound/soc/codecs/wm8994.h @@ -78,6 +78,7 @@ struct wm8994_priv { int sysclk[2]; int sysclk_rate[2]; int mclk[2]; + struct clk *clk_mclk[2]; int aifclk[2]; int aifdiv[2]; int channels[2];