From patchwork Wed Dec 19 20:11:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?TWljaGHFgiBNaXJvc8WCYXc=?= X-Patchwork-Id: 10738097 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 876896C5 for ; Wed, 19 Dec 2018 20:11:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7AB7B286F1 for ; Wed, 19 Dec 2018 20:11:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 78FCB286EC; Wed, 19 Dec 2018 20:11:45 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00,DKIM_ADSP_ALL, DKIM_INVALID,DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=no version=3.3.1 Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AA882286F5 for ; Wed, 19 Dec 2018 20:11:44 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id B3F98267B3F; Wed, 19 Dec 2018 21:11:26 +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 3C8EB267B31; Wed, 19 Dec 2018 21:11:20 +0100 (CET) Received: from rere.qmqm.pl (rere.qmqm.pl [91.227.64.183]) by alsa0.perex.cz (Postfix) with ESMTP id 59958267B14 for ; Wed, 19 Dec 2018 21:11:16 +0100 (CET) Received: from remote.user (localhost [127.0.0.1]) by rere.qmqm.pl (Postfix) with ESMTPSA id 43KmFl6Kp0zKh; Wed, 19 Dec 2018 21:09:47 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=rere.qmqm.pl; s=1; t=1545250188; bh=07p9wspnLa0BaVOz/TIs7B1V7hzuPCcxYLNyXfXIoVw=; h=Date:In-Reply-To:References:From:Subject:To:Cc:From; b=IGlXMQ9gN1TCURd8wcnv+seT09DMqCNrvbMgFLMBxc1CmX5zniXZ0FWe/H5mOVCPY tA+pgUqHGraF3IG0hHGRzhytGsVe3JmnG/czSkkiK57O+zAugBSHGpiZJI34pZNZAM XYRxzcQYX2bq8+7gWKJYuNCnHs/i7riEKR9HtEsSstCRAjBJm8s+7PNEzegvU+fh6k h2zTVVMGQUMPoUAhqnze9TV3z8R+8SyA9nwkZpklOIiG+HJv9Sz0Ji6SLcawgXZjuB YaT87pVHhEhSEkx6+3mHXEZC7guXsdg9JP9Gmw4SS8MOwA3IPsvSzZvtj1rPu5grMJ CX33JRN3lKlpA== X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.100.2 at mail Date: Wed, 19 Dec 2018 21:11:15 +0100 Message-Id: <5353df1d654eae0bbbf26bc1a1d172e611c385db.1545249666.git.mirq-linux@rere.qmqm.pl> In-Reply-To: References: From: =?utf-8?b?TWljaGHFgiBNaXJvc8WCYXc=?= MIME-Version: 1.0 To: patches@opensource.cirrus.com, alsa-devel@alsa-project.org Cc: Takashi Iwai , Mark Brown , Liam Girdwood Subject: [alsa-devel] [PATCH 2/4] ASoC: wm8904: Automatically enable FLL when selected 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: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP This makes FLL the clock used from audio-graph-card platform driver (it explicitly uses clock id 0). Other platform drivers select the clock manually. Signed-off-by: Michał Mirosław --- sound/soc/codecs/wm8904.c | 21 ++++++++++++++++++--- sound/soc/codecs/wm8904.h | 2 +- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c index 2a3e5fbd04e4..f8a17fcdfdeb 100644 --- a/sound/soc/codecs/wm8904.c +++ b/sound/soc/codecs/wm8904.c @@ -315,6 +315,9 @@ static bool wm8904_readable_register(struct device *dev, unsigned int reg) } } +static int wm8904_set_fll(struct snd_soc_component *component, int fll_id, int source, + unsigned int Fref, unsigned int Fout); + static int wm8904_configure_clocking(struct snd_soc_component *component) { struct wm8904_priv *wm8904 = snd_soc_component_get_drvdata(component); @@ -339,6 +342,13 @@ static int wm8904_configure_clocking(struct snd_soc_component *component) break; case WM8904_CLK_FLL: + if (!wm8904->fll_fout) { + int ret = wm8904_set_fll(component, WM8904_FLL_MCLK, WM8904_FLL_MCLK, + clk_get_rate(wm8904->mclk), 12288000); + if (ret) + return ret; + } + dev_dbg(component->dev, "Using %dHz FLL clock\n", wm8904->fll_fout); @@ -1675,10 +1685,9 @@ static int fll_factors(struct _fll_div *fll_div, unsigned int Fref, return 0; } -static int wm8904_set_fll(struct snd_soc_dai *dai, int fll_id, int source, +static int wm8904_set_fll(struct snd_soc_component *component, int fll_id, int source, unsigned int Fref, unsigned int Fout) { - struct snd_soc_component *component = dai->component; struct wm8904_priv *wm8904 = snd_soc_component_get_drvdata(component); struct _fll_div fll_div; int ret, val; @@ -1814,6 +1823,12 @@ static int wm8904_set_fll(struct snd_soc_dai *dai, int fll_id, int source, return 0; } +static int wm8904_set_dai_fll(struct snd_soc_dai *dai, int fll_id, int source, + unsigned int Fref, unsigned int Fout) +{ + return wm8904_set_fll(dai->component, fll_id, source, Fref, Fout); +} + static int wm8904_digital_mute(struct snd_soc_dai *codec_dai, int mute) { struct snd_soc_component *component = codec_dai->component; @@ -1921,7 +1936,7 @@ static const struct snd_soc_dai_ops wm8904_dai_ops = { .set_sysclk = wm8904_set_sysclk, .set_fmt = wm8904_set_fmt, .set_tdm_slot = wm8904_set_tdm_slot, - .set_pll = wm8904_set_fll, + .set_pll = wm8904_set_dai_fll, .hw_params = wm8904_hw_params, .digital_mute = wm8904_digital_mute, }; diff --git a/sound/soc/codecs/wm8904.h b/sound/soc/codecs/wm8904.h index c29a0e8131ca..ed3260bcae62 100644 --- a/sound/soc/codecs/wm8904.h +++ b/sound/soc/codecs/wm8904.h @@ -13,8 +13,8 @@ #ifndef _WM8904_H #define _WM8904_H +#define WM8904_CLK_FLL 0 #define WM8904_CLK_MCLK 1 -#define WM8904_CLK_FLL 2 #define WM8904_FLL_MCLK 1 #define WM8904_FLL_BCLK 2