From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934676AbdDFLwg (ORCPT ); Thu, 6 Apr 2017 07:52:36 -0400 Received: from mail-eopbgr50087.outbound.protection.outlook.com ([40.107.5.87]:6176 "EHLO EUR03-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S934649AbdDFLwS (ORCPT ); Thu, 6 Apr 2017 07:52:18 -0400 Authentication-Results: alsa-project.org; dkim=none (message not signed) header.d=none;alsa-project.org; dmarc=none action=none header.from=nxp.com; From: Daniel Baluta To: CC: , , , , , , , , , Subject: [PATCH 2/2] ASoC: codec: wm8960: Relax bit clock computation when using PLL Date: Thu, 6 Apr 2017 14:51:54 +0300 Message-ID: <1491479514-24862-3-git-send-email-daniel.baluta@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1491479514-24862-1-git-send-email-daniel.baluta@nxp.com> References: <1491479514-24862-1-git-send-email-daniel.baluta@nxp.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [192.88.146.1] X-ClientProxiedBy: AM4PR0202CA0023.eurprd02.prod.outlook.com (10.171.80.33) To DBXPR04MB511.eurprd04.prod.outlook.com (10.141.233.16) X-MS-Office365-Filtering-Correlation-Id: c3dc2106-d9d8-42ef-487d-08d47ce358e9 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423075)(201703031133081);SRVR:DBXPR04MB511; X-Microsoft-Exchange-Diagnostics: 1;DBXPR04MB511;3:o5YPpoBkTr6vDwD0XLERf2ZlemqYgHw7FMFUCj2/Rajtsqd6v+AcOLy176KBUWk/QqMQgsZ93UEVT3Qp+8qRB7QAg6B5BiAgCZDMuy/S1PC01Jzc9sMySQnFs1X6vzXh1jSmuhmZewR/ljfBFPghnIs3ozSgitwyNEMC9CrfsJY+7jAbQZSuQQUBVNXgGdbgEBGvdH6QteTr0O1P1SPHSox+wuiar1YzXsRYjX/k1w22V4kYbdC0xyF98K7l0q4MCMAUAL95d8wNs5CgjDYk+NTBmJLy934Io+EZWVUortzkgDZYMmN34AVT9HaqdABiropnF9jl2c4LnQ5gMM3qrBF2eO4p614VAj+ehqbFLIM=;25:0lND6pVuFLbCnLvlhJMwLbJfcmAXo0KEYkbXE9emToPTPVNJImqEoaJv2y23L4SCjltofpnIwweHWVtz6mOphssRGK+JcYoxgkaAKLfrODPEtU7JQdm04AGVVdtxSb/947s2SMsxnneCA9IsctoP/Hi9LbZszaT1qd7qGWeTyCuDz183LpQ/LCrbpb7x80XkH+XVUDcRK+guB9Ftd31DjIyNi0Dq+eH3Ng7F559SS371VvU0M6WTWNHeQ1dShezGsp4dTrd5QtHKgMt3fsvCAmws96EHbMKM5OGL3GKchncuqBF5KBtRe/4kWMNY+BaWHm60PKOkyy+WNsWKeW8MbveDiWKTkX8tSAR7hBEq5ReBePoF5PwNZjWgmHgWT+iW7wmZKoJUbfAZzM+Rml2zxF/+X2JUKN3GEVT9umZYzGCpt5JVtjOV6u2ttshqeuclQ4i4A/sxIO5CfDigem6gjg== X-Microsoft-Exchange-Diagnostics: 1;DBXPR04MB511;31:tozaZHFVGuqIYyPhhjmuraGVZCnxQL0K7VdYm9MY7Vz/vNxiPbu9jn7Xw2ehiuRYf2KKOL3W3Ts5WLPY6cM59RekPDJJWhk7B9T6O7yz6fm6WWGuti1W1IooyIQoXrdFvhYz+WU0kr1of4E3mGPyqKymCPe67QlG13/Mpdgu0/lI00mqgltxHiAex4VaVzITr365yYAExWd7gE/3FkHYr6yxL7gJCMKhiZ1nv2RPXno=;20:KrOvS4YWcmXbvFsGK/SqV+Y4xrO2y4Sfsbu2IWQzA9hcZQkoqdmCa+FK0wOgvr+uu9xawiR6W0D3eprks+gJB77tbh+142Qauv5hN1YrI8Gpa6HLceBI6ibDjNfh4He1dvcMHnDfD9Sd52kYCCwwS+ROn/PECPv8BKaZKsDUGI4kzgVc/9AoiSnfGL1FtNw1eP4UOFnNEY6MPHENxgvfU5ez3WQRuOqbDHbdCsj4hmV32ImVRWj0b0HGcbBVsit/hkF4WT4f6gXKO5ha+VTUzKT8gIsVwsTSKNm83piMvBOj9wLRiHpJfVaeRTveXJVQqcVUBePhjqp+aBZ1+v/IHxRqUUJ/Z6biJbwUM12A49vzeKS4rq5C18IaKhiHdboJHNNcNTbpUROoTkzw8c7WuY5o5/LllSQJnBxBlUjxs1jwoUMYuu4T2k76+CH23ophiMqzPOmNZRV+VmmuFGBGiAKShwRY1m9MKTztq/ZgQzBsf3BUWove6VpSL5mQYTx/ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(6072148);SRVR:DBXPR04MB511;BCL:0;PCL:0;RULEID:;SRVR:DBXPR04MB511; X-Microsoft-Exchange-Diagnostics: 1;DBXPR04MB511;4:n72zBJO9+o3xwdKalNwkNemFWaiIhUsBH5a16VZgmUQgW8ukg39am+vFGhzS3dZ0eLVJhqoS5KlX3Y87mYNU19iiCD/YOlpXZ3ahx1Of58rOHX9Fx1gpSPKL3XnPkzikDaLVkhshwuf3l6lfE7iqq+nYAYSCukmfqYooQ5c6RdcBGngU0diqcVVHzknhk0++GpjOIIXU5Yrhii4G55LxKOuluJ7FUxKwq1lCmC8j516goQwDwV3ybYN0H1CLTISOZO5GCwURLes6th9AVkPApYWvbGeeYQEsn5AXgbF5ri+p+M1UPN5jfu9u3KpK65knk15GswlYdRP58lrXQ+aPRkS2j1jjII0BHKWe1/BG/SFaxWnYFSzExUnz2/8sxVAzYGYDRHqU5yNDp/rtal2aDH2r86zNPtnCpFLSVTKlTFS8rZmrB/1o81u7w5AIjpNV29RMs2vqk/2HygRxtDcEGhMuw5xArR8D+MMnvX/ghvyqK34VrGVUf0MRZZBYbM7QmVaQFG9aGC3cLMhVg3y/QhEPLx86pexPdTrf5/u6sSqWzfVWA0zILpoz514XJdOJm5vs241BZIvn672kA6fVOn45GkXw1WBXBkkJqw31X63zv9mW4bK9ytxihJ1eNleD4Y0AKb9FexoJElQF2gkIYZIImlFAG0gDFxSAL2jS7tDUceRG4U8Ccq9j+pWQP1XXC7LYxWsEQrX4omiic9/uCdAm3izuYrf5cg246T9DKZ0KL3kd6SC/LyKtOnBw3u4o3WwCbyrmS3mPVKAjKv+x/Q== X-Forefront-PRVS: 02698DF457 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39840400002)(39860400002)(39410400002)(39400400002)(39850400002)(39450400003)(86362001)(54906002)(7736002)(2351001)(110136004)(6506006)(3846002)(6116002)(5003940100001)(50226002)(33646002)(8676002)(53936002)(6512007)(305945005)(575784001)(81166006)(42186005)(38730400002)(36756003)(189998001)(50986999)(6666003)(4326008)(6486002)(5660300001)(25786009)(76176999)(2906002)(66066001)(47776003)(6916009)(2950100002)(48376002);DIR:OUT;SFP:1101;SCL:1;SRVR:DBXPR04MB511;H:fsr-ub1664-118.ea.freescale.net;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DBXPR04MB511;23:cpX4aHbmL5FPGwF6O7Z7ZCGNbI5DXBf/BsN5cfp2bN?= =?us-ascii?Q?PITU4ga0pmfQr3qfu38/XwP2gwAru7W522I45znmGBoFh0QZXThojc5VQ7VD?= =?us-ascii?Q?xwFnZaK7CRIxfLVMzR08t80K75vS/o52e+IZ2m1dy4ZQVTNPSLitUfzJybcs?= =?us-ascii?Q?XVwYWO4V3IQ0o0sWvzHSZVRYQ/jvUkn+Pp0KchURwBkW7T1yokO1Tf5A2X3o?= =?us-ascii?Q?pyJtcR+B0ss/2cG0df9zUxz4JlC0cWbvyeXwHMSSdK3nOMRILjqhdZY5oN2J?= =?us-ascii?Q?xGskAtZnC1Nfpl9Sp+IEqRGcQiZN2TcozSyq1zJaRhrIENJCI078DiAuJcaZ?= =?us-ascii?Q?KeuN0V6ey1Z5p+fp930MtAyHxgLptRpoZzfQET2xVSq9m60fAuWKfeKzB7hW?= =?us-ascii?Q?1tEcOJhtRgSUSQPZrSZ13MYrnteR/NTCxWc2gmWcL+cB+2sSctsfKvqJnnqo?= =?us-ascii?Q?X0firLZApxEngrnpwYoFJ6HZ5nRpqvZn3KNDGrLciaKX4GAOWyoGIvhR6l1P?= =?us-ascii?Q?QgHBfQigmBr+YJ3xqT6mLimj1m9LoPuQHXjN8+IALrGZi1QX7wyYVfgChKGM?= =?us-ascii?Q?gAJDRW6ollAQ1H56knI8DVgE6slMaq3UnYaZIFUr8RIJVAwAY8pMeu4C0+H3?= =?us-ascii?Q?L9JjEEgPwwve6TRaDx2QFqPc0xX17JUQeZ6JT4+ZHJ2hQRsX+0bbgAdHJdAJ?= =?us-ascii?Q?1+DL0Q9Fv/et2fTX+tGhIs8NwcvyFt0X2a3fMVB8QcMFQ0HcQW/6tBLcXKZi?= =?us-ascii?Q?B2pm/8Pjpqqr5FnYnguwBdNgyrM3ulAEjsH4mjVybhHiYTImZQkTurLyXvLO?= =?us-ascii?Q?9SNPh71bsIHL0DtsK0ui7O+3Lr0Zs/E1bZrxoaDdfXe1z6s4yeNNQ9fYPJa8?= =?us-ascii?Q?QwYiJqohA20Sv8jqqfCUHoWR7aWkS/HRn6QGfyYluTtMkpdjvh3b1pN1T1lB?= =?us-ascii?Q?AKHT32tf5dt0lxpbmk5bZrAI9z7LIlYOX2izprUNvFYzTSinT74RI1Bf5+y3?= =?us-ascii?Q?L2kkmHA46XWn7JAttxsU97Qy+I7I5bl4jivqPkdUGRjE5ShkCTQCeqthhvSB?= =?us-ascii?Q?am75wD/TNpGRo/ZccWWXpjfp59?= X-Microsoft-Exchange-Diagnostics: 1;DBXPR04MB511;6:aykabNNp2J5Dv475ox8PBmYM3rgNk3Xzz1Y+4Zf5aPAB7PGFoF3V6r50HM5xoqo97lFu43XVQyfWPKhe9qbJBr6bIF88CwHryb/c44NOz2+LHdE/Phs+zGhz1bu/6p11nJ9aXheZ5tietvgineIRWSGkvaO3xlRYySQ/Ov7P0W0J/8IlrWbJ6y4LtGcQTqoGZFSNKYjNXK9/QPXT6NMPUhum2Ac9jjTjN8xnA6HfSPsUF+q/qN/G+X0aeGav1aJ02uC4d8NTfxVsFNQurW7cBeHcnBTFMuMtC2Q22QakQWS0COk39naC8czWBzlFI7SxGh5cpklYqo8HAWppGO614rOnidnSe6xhikJJM8wOtZ9D6n+XgqXfQwpBPu+DhxCGMfT9DLIsCgqUgTNZVbvndmOsur4KvCMAytH7qRcd3t8=;5:XlHuEzNg4m5xjvZS/Z2s1JYKhubE/J5hhm9ph6yR3C95L5uku3aACt90hbl/0tEwwHKeK3OGKjMIcUuVRf8ar2/ypfGUyX/Uu6i4JrsO/MexzfuVarnw5RtRpMdJkhYoD24LZu9ag9MDrNCb2VHAlQ==;24:uJWIhWECxug9ZTxqjD6W7lnDsSICf1geXcpeJRaPpVuMnA1KXihROLMM1ShBrg4eny67Dma3PTngaTbTdvy1Dfu7mHFskMQLa0+FksJqrdk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DBXPR04MB511;7:tuN12aaXTxtlJIt0iM5W93l0SzI/jZwjPdP+diF1SzauizAe9UzLz95KHJiXgNVrCMY/cmGJw3kMrvRzMKq9u8oLkC5miBlSLuGSRMbCBgV2Bu4cCwJRu/tbofKTnGz53sS/QCPGwzCUkGUe8lxH286QPUKNgHq/0q9zo7bGvtsvlT0QEt4W7Qf7VL/+Z06Do1Mu2kNRCrZz0OAC1iYLZPkSb8Df6bjxO7+5pBL1xd+aaM4Y3DcMMoBFBGCXAVzxOfJbjhKAZMJD1Mm0EeXRoGkIhSRfjbsWtuWEXS8kOfF25PIZI2nqXYCJMs403XZ8WTuX3hLgedhh0ZRwNdKlkg== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2017 11:52:04.8399 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBXPR04MB511 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Bitclk is derived from sysclk using bclk_divs. Sysclk can be derived in two ways: (1) directly from MLCK (2) MCLK via PLL Commit 3c01b9ee2ab9d0d ("ASoC: codec: wm8960: Relax bit clock computation") relaxed bitclk computation when sysclk is directly derived from MCLK. Lets do the same thing when sysclk is derived via PLL. Signed-off-by: Daniel Baluta Acked-by: Charles Keepax --- sound/soc/codecs/wm8960.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c index ace69da..8ab9fa2 100644 --- a/sound/soc/codecs/wm8960.c +++ b/sound/soc/codecs/wm8960.c @@ -679,6 +679,10 @@ int wm8960_configure_sysclk(struct wm8960_priv *wm8960, int mclk, * - freq_out = sysclk * sysclk_divs * - 10 * sysclk = bclk * bclk_divs * + * If we cannot find an exact match for (sysclk, lrclk, bclk) + * triplet, we relax the bclk such that bclk is chosen as the + * closest available frequency greater than expected bclk. + * * @codec: codec structure * @freq_in: input frequency used to derive freq out via PLL * @sysclk_idx: sysclk_divs index for found sysclk @@ -696,13 +700,14 @@ int wm8960_configure_pll(struct snd_soc_codec *codec, int freq_in, { struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec); int sysclk, bclk, lrclk, freq_out; - int diff, best_freq_out; + int diff, closest, best_freq_out = 0; int i, j, k; bclk = wm8960->bclk; lrclk = wm8960->lrclk; + closest = freq_in; - *bclk_idx = -1; + *bclk_idx = *dac_idx = *sysclk_idx = -1; for (i = 0; i < ARRAY_SIZE(sysclk_divs); ++i) { if (sysclk_divs[i] == -1) @@ -723,6 +728,13 @@ int wm8960_configure_pll(struct snd_soc_codec *codec, int freq_in, best_freq_out = freq_out; break; } + if (diff > 0 && closest > diff) { + *sysclk_idx = i; + *dac_idx = j; + *bclk_idx = k; + closest = diff; + best_freq_out = freq_out; + } } if (k != ARRAY_SIZE(bclk_divs)) break; -- 2.7.4