From patchwork Wed Aug 5 21:58:33 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatol Pomozov X-Patchwork-Id: 6953691 Return-Path: X-Original-To: patchwork-alsa-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 44794C05AC for ; Wed, 5 Aug 2015 21:59:10 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 5B35120605 for ; Wed, 5 Aug 2015 21:59:09 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id 27DA420603 for ; Wed, 5 Aug 2015 21:59:08 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id 78E5926043B; Wed, 5 Aug 2015 23:59:06 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, NO_DNS_FOR_FROM, RCVD_IN_DNSWL_LOW, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 Received: from alsa0.perex.cz (localhost [IPv6:::1]) by alsa0.perex.cz (Postfix) with ESMTP id 8606B26041F; Wed, 5 Aug 2015 23:58:57 +0200 (CEST) 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 5881C260421; Wed, 5 Aug 2015 23:58:56 +0200 (CEST) Received: from mail-pa0-f42.google.com (mail-pa0-f42.google.com [209.85.220.42]) by alsa0.perex.cz (Postfix) with ESMTP id 55C0D26041D for ; Wed, 5 Aug 2015 23:58:49 +0200 (CEST) Received: by pacrr5 with SMTP id rr5so10570250pac.3 for ; Wed, 05 Aug 2015 14:58:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=IFJ9NYNIFI7y5k/qX7tPFVcuQMXtnHFIULhaN5vWRCM=; b=d8MYY5JnVcfqyePRivOE+4f3X4Ns5iWubBI1efAuxOStGGKbBpSMjSANwOVkJcdb7V ru97kpHUgtVKG2nYA3jZyxwbLIPGDQvG+OE+JXy1M7Q68gsn9/cIP8/6WHWB3DqRMUZe yrK6wmi5SbIkjEcWjiaY1xjqKqEw4K/7W5YRhsqBgGPg4aLhmhzGSxYcsZefnT28N+WB Q2MjXFQpQhVyhnNdliwwdfzq4gS1xks+ICue9GdvzLec5oTPlubuPbBtCefp2boCx4HV 3QsYN0FX0cIC6l0ov5Z62HJz123HMklnX0ajXNodDtLYgN0xCvqpbx4hjFD6zNKicXjp 2New== X-Received: by 10.66.101.9 with SMTP id fc9mr23349596pab.37.1438811928190; Wed, 05 Aug 2015 14:58:48 -0700 (PDT) Received: from anatol.mtv.corp.google.com ([172.22.64.197]) by smtp.gmail.com with ESMTPSA id pa1sm3993320pdb.73.2015.08.05.14.58.47 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 05 Aug 2015 14:58:47 -0700 (PDT) From: Anatol Pomozov To: alsa-devel@alsa-project.org Date: Wed, 5 Aug 2015 14:58:33 -0700 Message-Id: <1438811913-39249-1-git-send-email-anatol.pomozov@gmail.com> X-Mailer: git-send-email 2.5.0.rc2.392.g76e840b Cc: oder_chiou@realtek.com, albertchen@realtek.com, broonie@kernel.org, Anatol Pomozov Subject: [alsa-devel] [PATCH] ASoC: rl6231: Simplify DMIC divider calculation expression 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 Existing implementation checks all divider values and tracks 'red' proximity value for the frequency. But as divider array is monotonically increasing the first divider that gives DMIC rate in 3MHz range is the best one we should use. No need for 'red' zone tracking. Additionally make sure that DMIC frequency is higher 1MHz. Signed-off-by: Anatol Pomozov Acked-by: Oder Chiou --- sound/soc/codecs/rl6231.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/sound/soc/codecs/rl6231.c b/sound/soc/codecs/rl6231.c index 57e51c1..aca479f 100644 --- a/sound/soc/codecs/rl6231.c +++ b/sound/soc/codecs/rl6231.c @@ -62,31 +62,31 @@ int rl6231_get_pre_div(struct regmap *map, unsigned int reg, int sft) EXPORT_SYMBOL_GPL(rl6231_get_pre_div); /** - * rl6231_calc_dmic_clk - Calculate the parameter of dmic. + * rl6231_calc_dmic_clk - Calculate the frequency divider parameter of dmic. * * @rate: base clock rate. * - * Choose dmic clock between 1MHz and 3MHz. - * It is better for clock to approximate 3MHz. + * Choose divider parameter that gives the highest possible DMIC frequency in + * 1MHz - 3MHz range. */ int rl6231_calc_dmic_clk(int rate) { - int div[] = {2, 3, 4, 6, 8, 12}, idx = -EINVAL; - int i, red, bound, temp; + int div[] = {2, 3, 4, 6, 8, 12}; + int i; + + if (rate < 1000000 * div[0]) { + pr_warn("Base clock rate %d is too low\n", rate); + return -EINVAL; + } - red = 3000000 * 12; for (i = 0; i < ARRAY_SIZE(div); i++) { - bound = div[i] * 3000000; - if (rate > bound) - continue; - temp = bound - rate; - if (temp < red) { - red = temp; - idx = i; - } + /* find divider that gives DMIC frequency below 3MHz */ + if (3000000 * div[i] >= rate) + return i; } - return idx; + pr_warn("Base clock rate %d is too high\n", rate); + return -EINVAL; } EXPORT_SYMBOL_GPL(rl6231_calc_dmic_clk);