Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933148AbdDEN2D (ORCPT ); Wed, 5 Apr 2017 09:28:03 -0400 Received: from mail-eopbgr40065.outbound.protection.outlook.com ([40.107.4.65]:15248 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933398AbdDEN1O (ORCPT ); Wed, 5 Apr 2017 09:27:14 -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 v2 2/2] ASoC: codec: wm8960: Relax bit clock computation when using PLL Date: Wed, 5 Apr 2017 16:26:38 +0300 Message-ID: <1491398798-27829-3-git-send-email-daniel.baluta@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1491398798-27829-1-git-send-email-daniel.baluta@nxp.com> References: <1491398798-27829-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: HE1PR0701CA0058.eurprd07.prod.outlook.com (10.168.191.26) To DBXPR04MB511.eurprd04.prod.outlook.com (10.141.233.16) X-MS-Office365-Filtering-Correlation-Id: 8a50c0b3-e32d-4173-68f4-08d47c276de4 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:KNJ130B+Z2BGm1GqrqWvyFf1H19H7jD19xTS+VB5aJsx8OBQrlcrwElKrPhnMIfyfqCrbr4QGuMW7lbfUBzbCeNJW4pQERqLhGp2+iWTaPA/5UyzHEa815RQVjIoUetOwfyr9NVC6eMPsOvJTE2vEr/kPqVW//9hm8jcFjq4LScj4P4OWCsjWqrsRRc7bXozTQ6dX5HIEM05alEzfZOOw/VCeggAxbB2GjC9Ba4UDvZ81PbhUdsiQvm/JibFP4wH6A9+9XIavGCTVNV0TbJy0e7HRBUvyFgc9t1fy7Bsk8SeYLwo0L38Ixj6xX2VtR4RrGMLsGdUlAtvN+ZhfawnO/7FwIHWYVDpQhv42TmoRUo=;25:7ol9732Hq/kyqERdjqRHYu3FYngHasZKwntM9P1mGhJFOUoyiKQrvAYBxI7BGCmoTgKCsBhQRrDG+ZPQBsrvUlUTEyNWr1jw+1fQ5v/q64lUfnXcFqo6QEWeB4hsCs+L+wKQATbx7dRHtpszcgjD2L/Bjc7bTib6hTcj8Ne8fabRTuHM01JKxccOXXvvQftJKn/6vbtZscK68tXHwat+SSrfcaKSP+PDeikGwbjzvsodZhxOIl974NJh5GiilECANomQFWJ4vIfz5ZprzUCTAduRf+/C89r3Clms7QWi9L/4CAy9MITriWAdYZcrTv3nnVVqpp2HIzwE0Z/Y5sBWc+3TXSlCzgsUPQAudvLiXaDjdUOz/SL/Xcp+smjWGJHPaPE2fhLqVZ++JwsRYYWpRREJRcuG4wlEuF6opWEsBAhyktQ3F4IhEP0nf+uPxRQOsgLNDtSfeR2GgGhSHMugZQ== X-Microsoft-Exchange-Diagnostics: 1;DBXPR04MB511;31:MB1D1h8fL1UIp5Yjo/6xNgfp28dK3WfJ3LhQAlCqsnlwPu4q2ZCuJEECRHT1r3vXGDx7+1deCLlJydan2X//IPaTZdIaFvuhe9zCr/oeruX0RmM8K52rfrItN2n5d4f5tJrG/N2Lc9EifVuO0gfyEkVd/4hoB0URP0ccAsgoyLDCoyf26zpsQIjrZW9v4ahqUbjc8yniP3Bud334BvvKUDjdMI1PILuxVj436mLiyrFtQ6O8ffEQBINo0r89j3hU;20:i3Vu4S5rGjAeJR/4QgIcUiXsWbV2ge5d+zPseO2j6eXwPYR5PLEUv85xAe5UZRtckZsETRY/L+4Bw7fEAKj35vVQ5ksKUa2ZPw1ZVHRsy3DNVmeYB2I8tRTj0iFJrWS41xtmfeWCis824W+DCynwrC0l7TaSq0GB/iO/8+1Z3hmB38a0fLBPb8H2CQeFWv8Md0uPQnpNeqUtAnloM/f0aMspWEgayZgnHV0e0GTUtSVDhwZFqWXbDZZin2dJYUXfMG/XTVkKFBB9C9Txm7398ttqgZwj4UE5UNeN/AaG5EVEunRxF6WPlggF6Pf1SIN3LBCi1UmWUh7b7qSUBGXU9v4S6BsxDiOD4wflFOxI+SJ3A7sV08FStQFW5swQmPw4O7dB/hfWJ27UEDfcYJDiEcaSH/+pJUz8DXJpCLTecDTtQ87s+ZHy0EJbFeQgZwSWssUKpYh85/KDTiJCr0a7Nhu50F54zPJKRm+KkdBcXcJO+lEqIEtPXBBDgbaBcy9p 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)(20161123562025)(20161123564025)(20161123555025)(20161123560025)(6072148);SRVR:DBXPR04MB511;BCL:0;PCL:0;RULEID:;SRVR:DBXPR04MB511; X-Microsoft-Exchange-Diagnostics: 1;DBXPR04MB511;4:15U8VfVrkG11iwjOjBUhedNcH4JdvM7wX+BxMm9cVWWUH+hQPwX9wvdHnwtVlysjmiJnC5BMeWLC1qJ6+Fix9L2yGZ8SCBbwZK632saPMBYajksYDY2VdEA3eZOrin/DahVTddg7TdLZTxd4OOV4NtdiXnstvq0guC8nNGByUzUe/g4B93RdFTEhjlnBeSvb0veIUunwcMU9lzy/Yo3Eg0zRESkeZegVrRSOBD5qG/x/EZ7amsRNvDX0V278rEI8GFCNlbQtLHZEAIABccXIm8JWkKpfYQ/OOFAD0TH5bXKUJaoNPGsID7j6dczIPnn/OQb7rlauymInj9Q0rLnUH7i0jI0nOCkPhmsDnMo5C9iM9xn34jnpiRD3foJ89okURm8bkkv7Qx1d5qmqQd2mqNGH270EjevNPEfoDio5+oQoOOYawCySTzNEF/yirAj5RxZNe+g1Kf1mY52aT8uppAZvHWJKALvHQU4tv6srKqqm67tYZMCcD5H09sModIXjzAiawiZFJmb2TfsWP1C3SGrS5/f8RoCwH6qxC2wZ+yAAGb7PWGlSH3xIsDWIJnDU86mypA4Pt00x/8+YPW2zCiJbwfT65lNlYLItdPf4MD+Mn37QsRThDS9NVPwEz5CHvuALqkgibeKM8ahKtpfSEoK6WnXTp9uE0hG5ZNPV+mKqq57pT0SFQaHZq26ObdoAfzJ5yMZnIKEwjXytU1b+RF1SCKxbnlzbR/iq2O6adLaKizlA+qP3wXPy4RSug2D/FRpUYp6t4QEkCyX1h+26ZA== X-Forefront-PRVS: 0268246AE7 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39850400002)(39400400002)(39410400002)(39860400002)(39840400002)(39450400003)(575784001)(86362001)(48376002)(66066001)(6116002)(81166006)(8676002)(3846002)(53936002)(50466002)(6666003)(33646002)(54906002)(6512007)(36756003)(76176999)(50986999)(5003940100001)(189998001)(6506006)(6486002)(38730400002)(110136004)(7736002)(305945005)(2351001)(25786009)(47776003)(2950100002)(6916009)(4326008)(42186005)(50226002);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:g6gFLrrLNRfChi9JaGNFmxxTx11JL2avx/A/PqDm75?= =?us-ascii?Q?zk5sPBWX4e6jbQbgLsWonWFFgz8qyoh6S+GxhaasIOWX9GyW4JeRF+LDySE/?= =?us-ascii?Q?OKg7+qEcISIq93sAbXck/P9wVyuIaym2nb5NH5dxoxsg36LEEoccubN5Jq2x?= =?us-ascii?Q?QfKXAxb13nYBvR+HEDB8p24E/ne/TEaoFV3hzg4ULlHdpufgGQV+gF0J3ZSr?= =?us-ascii?Q?8QgwYP6i6+tMiyufjNaEV6hGCDuv1J3059Z5f86LsKiOW42J5mdLWr1bxZNS?= =?us-ascii?Q?TOj3c7qdGu50/i/ggtXqRvvXHTfOyS85CjFttXo2mMdven1OUccDTm2HLluI?= =?us-ascii?Q?Aw2kUXX2wYkPN2EgVTTPCEepDp7QUFt6Rn0u+/toSUM1xTMO5v5FoeAMH2pm?= =?us-ascii?Q?nufGHFyqlA++4fsoxuQpm83gb1/hnbbR14LnngCTYrbX5Io2mae87BdXChj1?= =?us-ascii?Q?kM4g4e2VTbAjkX0PiceSahP9+IbR5AOUg29HrptFchi1rHe9uEGWi7KaaJpv?= =?us-ascii?Q?6+xpPM1NW4zMAZxXAzeSEaZd76ZRSJ8/SZ90tmQbYvB+1YfyIVfpenlc4IIB?= =?us-ascii?Q?HMMh+DhcpuJlYnYME/IuP6yudX0JopNxf8xMJhTDlJKEyHENtTEjqs63LWjV?= =?us-ascii?Q?FLDI0M3+QYaaotd2M9bhY74mMoMn+qNO+TuECIXpsFWNVnEUOn+2MBCWjHrY?= =?us-ascii?Q?95sqclZ6Uuz5IIgIKygvWQKR0UwuW9PjyFzAOH8q+uFh7VXcqAx5l3F+JpsZ?= =?us-ascii?Q?NV38NY6pEjzwCaCQYyhhVNW0r/FyMGlLuv/iX6r9FO5S3VQG7csCVRDncYl4?= =?us-ascii?Q?L5CPfKAQ7QQ0kgQlCDvkYnmtqy6Rkxh6isOYcx5ugvOabPFWISoykLG10x38?= =?us-ascii?Q?4Ci7DcTxSOF4d6Hc5O39+jerN+bJjrEgnZmHsnhXM6mFt3i2SJgyQMA2g914?= =?us-ascii?Q?Q9Gnt6SgZ0t4/wR1VqAKx3otligdOyvg4Sn22zTgdMEDJLCLqhxNFRGQ0ys/?= =?us-ascii?Q?XsB7gF8TyhBeEMUglpO4WMamVk2Y7bTI47Zyc86EObmjoCwTyP1MV0j4JCx8?= =?us-ascii?Q?nAP9Q=3D?= X-Microsoft-Exchange-Diagnostics: 1;DBXPR04MB511;6:dFeo0XOO6nAuHh6Y+H8uhv1qmsqNzBr/6xmKacUqRObJW2HrKBreb/cuf5dhcmzHueWAMDGoJ+5OO/lWHzzNgqndjtbgtiLWtzgLtibOGLo5Qj74txiggYSzYSMqA05/0NGruO0DuW3838BJX71Gn+Cx7Ms805aNFFxkCfij4rHwd8OxXvEjnjNP99VOq5QqXzWevNJBGBAgR9m0LlzF9Y7StJaA3qD2qxy33fSRgqbbaaXiDDCIGMRMk+NIXG0kmqAjztM3NgqQs3vWOWUJtwb+Dprq31ruinC3Daw6K0piSukkdbcoaKDCdQTWz5dzXtRlIzzdzmI976Bu6naoEuLnksXopN2v6Cb22x+VLJWKsQ8YTsIpw0p3KJbrdAOJTrDEbWUOL8KhNk+kEFNbh3jUr0RvCmIRLs2P3CwS76g=;5:GGOhE1h2zVr0Qzz5PoIzbxonvjjqz3nr5pBpQSEegWbXt6RSAoPrCnhP6lrFwU4BCsN2z7PT4fZwJpa+B9VFN01vSmQ407IyxrjcMPrjVtmhDFQHRgfTWr8qdl7oqUcWNohtQCRO2o7IK0ySFy8A0Q==;24:iosESxCGPrW4l2B3UY+WdjQhJAhi79puIyNPaN93SQaMczZ2uqYciI3NsyVsp1nS+bTo0xzuFxg3ZhrQ8y/JdiIdeb1piQPZWYCU4j7tlao= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DBXPR04MB511;7:2+WHooMmOELO6Vaglh5SsmYcQYqi8uq2DEuPoAa36m+QgzNBkfKZp8Gle2WWzcL5Bag31dKv/u9kOYpBC4bchVFk7pBw1f3opKJ5KTDgqRGs8TdG1c1vp92VVLeK17ZYh2jpI1u4suRA1o7n7fFtkvVcw4nArtZug/2Uxu1K948ODH6da2SdH6b/PxbkXf1Nr9kd619o+VokgEeEneSiFrq8upQtZ6Mo7vuViJCgSlw22b/7grSbJk15RsQY8dC6CPDMqO+Qx3HHhjl7mpwWup0mUlbc2XQYkqYXl0uuglE44bsGmHcgMQq9lZwRAjW9sbEvNrL4Xze5+ehjBT4KGQ== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Apr 2017 13:26:54.0135 (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 Content-Length: 1975 Lines: 62 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 | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c index 1c973f0..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,11 +700,12 @@ 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 = 0; + int diff, closest, best_freq_out = 0; int i, j, k; bclk = wm8960->bclk; lrclk = wm8960->lrclk; + closest = freq_in; *bclk_idx = *dac_idx = *sysclk_idx = -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