From patchwork Thu Mar 12 10:46:21 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Inha Song X-Patchwork-Id: 5992671 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 2EC629F2A9 for ; Thu, 12 Mar 2015 10:58:23 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 438F320444 for ; Thu, 12 Mar 2015 10:58:22 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id 0F32B203C3 for ; Thu, 12 Mar 2015 10:58:21 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id E8C3C2657FC; Thu, 12 Mar 2015 11:58:14 +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 834CA26067E; Thu, 12 Mar 2015 11:58:04 +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 B9DA9260682; Thu, 12 Mar 2015 11:57:59 +0100 (CET) Received: from mailout2.samsung.com (mailout2.samsung.com [203.254.224.25]) by alsa0.perex.cz (Postfix) with ESMTP id 6322526066B for ; Thu, 12 Mar 2015 11:57:52 +0100 (CET) Received: from epcpsbgr3.samsung.com (u143.gpu120.samsung.co.kr [203.254.230.143]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0NL3003RUIGD6390@mailout2.samsung.com> for alsa-devel@alsa-project.org; Thu, 12 Mar 2015 19:57:49 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.116]) by epcpsbgr3.samsung.com (EPCPMTA) with SMTP id 38.97.18484.D2171055; Thu, 12 Mar 2015 19:57:49 +0900 (KST) X-AuditID: cbfee68f-f791c6d000004834-74-5501712d0062 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id B9.A9.20081.D2171055; Thu, 12 Mar 2015 19:57:49 +0900 (KST) Received: from songinha-Samsung-DeskTop-System.10.32.193.11 ([10.252.81.136]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0NL300D3HIGB2T70@mmp1.samsung.com>; Thu, 12 Mar 2015 19:57:48 +0900 (KST) From: Inha Song To: broonie@kernel.org, alsa-devel@alsa-project.org Date: Thu, 12 Mar 2015 19:46:21 +0900 Message-id: <1426157181-6403-1-git-send-email-ideal.song@samsung.com> X-Mailer: git-send-email 2.0.0.390.gcb682f8 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrHLMWRmVeSWpSXmKPExsWyRsSkRFe3kDHUYO5scYsrFw8xWUx9+ITN 4t+UG+wW1788Z7XY9fc+o8WSyfNZLb5d6WCy6LzQwWpxedccNos/5zUtlr/9z2bRuauf1eLK pVNsFi83v2Fy4PPY8LmJzePf4X4mj52z7rJ7bFrVyeax5M0hVo+XE3+zeex7u4zNo2/LKkaP zaerPT5vkgvgiuKySUnNySxLLdK3S+DKmLFFqeCxaMWz6a3MDYz/BbsYOTkkBEwk9i87ygJh i0lcuLeerYuRi0NIYCmjRNOUj0wwRSfu/GWESCxilLjw+iwrhDOHSeLayofsIFVsAhoS3z9v ZgaxRQSMJW5+3skMUsQscIJJ4sFdiFHCAqESjxvegTWwCKhKbNvxjQ3E5hVwlWh/vpQZYp22 xL6GmWB3SAhcY5eYMeECG0SDgMS3yYeAjuUASshKbDoAVS8pcXDFDZYJjIILGBlWMYqmFiQX FCelFxnrFSfmFpfmpesl5+duYgRGy+l/z/p3MN49YH2IUYCDUYmH98J3hlAh1sSy4srcQ4ym QBsmMkuJJucDYzKvJN7Q2MzIwtTE1NjI3NJMSZx3odTPYCGB9MSS1OzU1ILUovii0pzU4kOM TBycUg2M1T479645r7fpo3U3b3hP196Qb7+Xngv88ocv7NAUE7aNd4PnLlyuslJa3CrznZH0 LoWKe8x/u347NZjcWVLyTUBt1sept5Wt2xa03JsSc6DtRNXTg9Jp567Pl//r8vHDzrRXr0xn 2V9bIn3nk/SD/mtr/OZnFT1+Li35euLRdQ6Pf710j9918LUSS3FGoqEWc1FxIgCUQreYkQIA AA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrBIsWRmVeSWpSXmKPExsVy+t9jAV3dQsZQg2sP+CyuXDzEZDH14RM2 i39TbrBbXP/ynNVi19/7jBZLJs9ntfh2pYPJovNCB6vF5V1z2Cz+nNe0WP72P5tF565+Vosr l06xWbzc/IbJgc9jw+cmNo9/h/uZPHbOusvusWlVJ5vHkjeHWD1eTvzN5rHv7TI2j74tqxg9 Np+u9vi8SS6AK6qB0SYjNTEltUghNS85PyUzL91WyTs43jne1MzAUNfQ0sJcSSEvMTfVVsnF J0DXLTMH6AMlhbLEnFKgUEBicbGSvh2mCaEhbroWMI0Rur4hQXA9RgZoIGENY8aMLUoFj0Ur nk1vZW5g/C/YxcjJISFgInHizl9GCFtM4sK99WxdjFwcQgKLGCUuvD7LCuHMYZK4tvIhO0gV m4CGxPfPm5lBbBEBY4mbn3cygxQxC5xgknhw9yMTSEJYIFTiccM7sAYWAVWJbTu+sYHYvAKu Eu3PlzJDrNOW2Ncwk20CI/cCRoZVjKKpBckFxUnpuYZ6xYm5xaV56XrJ+bmbGMGx+ExqB+PK BotDjAIcjEo8vBVfGUKFWBPLiitzDzFKcDArifB+y2cMFeJNSaysSi3Kjy8qzUktPsRoCrR9 IrOUaHI+ME3klcQbGpuYGVkamRtaGBmbK4nzKtm3hQgJpCeWpGanphakFsH0MXFwSjUwWp4q sfgnwTxl3rOAxuIl32v8HC0aXmVpNn5o5az4yPrsIqv3LqedD4MdJ2corV51bHOBZ1cH+/m3 +Vq/HoVVWH472fLI9MIO3zvuL1fw2LzrXixcq/P6+9FpSw8yL8nn7aty897gr7X6gHdRtYrf kuQVvlo3dv/eJXh75sGVfpcFJnHn8pUcU2Ipzkg01GIuKk4EALqykjTbAgAA 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 v2] 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 | 22 +++++++++++++++++++++- sound/soc/codecs/wm8994.h | 1 + 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index 4fbc768..acb6b44 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -2471,6 +2472,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); @@ -2492,8 +2494,15 @@ 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++) + 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++) + clk_disable_unprepare(wm8994->clk_mclk[i]); + } break; case SND_SOC_BIAS_STANDBY: @@ -4449,6 +4458,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 +4470,16 @@ 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])) + wm8994->clk_mclk[i] = NULL; + } + 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 dd73387..d426c44 100644 --- a/sound/soc/codecs/wm8994.h +++ b/sound/soc/codecs/wm8994.h @@ -79,6 +79,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];