From patchwork Thu Jul 13 07:49:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Quentin Schulz X-Patchwork-Id: 107561 Delivered-To: patch@linaro.org Received: by 10.140.101.44 with SMTP id t41csp1883395qge; Thu, 13 Jul 2017 00:50:21 -0700 (PDT) X-Received: by 10.99.140.79 with SMTP id q15mr7818854pgn.140.1499932221010; Thu, 13 Jul 2017 00:50:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1499932221; cv=none; d=google.com; s=arc-20160816; b=RsT2uJZGYzJCH9Y4fu5bhNtInsuk5iykrVqRPcSEZOGLRhXlkK3RI3T7S/UyzYLBrd 6D3HZc1CK6qD1Rlu+FOh+ilw3mQozfshSt0fjTR4DtCPV8zhanWF5QTkcaxB9D5kaoPJ SDkeDQUVx25kv3NTpXyIKEvkU49bnJ5Osji428PvjR+QqLaadh9efDF7x87aFHok+SJm V4GFMscceM9iydLtX5liP8Y1QLElKJH6st8/InCeqEJcJTpY4UE7LJ3YPezocsEU/h0V WybmL4F950t9GzX35I8t4UFdUUnSAW6fdDacRnyIgfjTl6x7TFxa3Ql6DRIs1527PWeE rGmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=1j303y0kUb3/H4V8hCbZ/IXBfpT/nMlLeYgxyS9K8co=; b=jcrRFKa4zN6pXdAH8IJk6NUm+5VDUyHW/RBf456GjRUElrw12l9s4HF8kcwe+BLSJ1 gTQEk4H0ff/xQAM7suMr1Th7FrQB7z6LZ1ITLh203qa9i5lZMRmF0bUMzAalnpmvNITh p0oPKmE44sYX3xjigCqP2EzBFEekTGFoQ2KWb9uIk+DBXTFrD13j3L/TU3MpL9QLpICX ivlmdTQ6MP6VTt8WlfhYySfQRbkJlg9b13b64f0UcGamnMIAYVsD/bd02dezxgu6bZu4 AHj+wGNe1cebdq6rZuLL8vjAyYPuIC/AnY1FHlkvPjho/5CnZ0gU4OkOQUX6J4gEVXbm kQ2Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g12si3946792plk.306.2017.07.13.00.50.20; Thu, 13 Jul 2017 00:50:20 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751329AbdGMHtr (ORCPT + 25 others); Thu, 13 Jul 2017 03:49:47 -0400 Received: from mail.free-electrons.com ([62.4.15.54]:47999 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750846AbdGMHtm (ORCPT ); Thu, 13 Jul 2017 03:49:42 -0400 Received: by mail.free-electrons.com (Postfix, from userid 110) id E83FE21FCA; Thu, 13 Jul 2017 09:49:38 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.free-electrons.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT shortcircuit=ham autolearn=disabled version=3.4.0 Received: from localhost.localdomain (LStLambert-657-1-97-87.w90-63.abo.wanadoo.fr [90.63.216.87]) by mail.free-electrons.com (Postfix) with ESMTPSA id 862B321FC7; Thu, 13 Jul 2017 09:49:38 +0200 (CEST) From: Quentin Schulz To: mturquette@baylibre.com, sboyd@codeaurora.org, robh+dt@kernel.org, mark.rutland@arm.com, lgirdwood@gmail.com, broonie@kernel.org, nicolas.ferre@microchip.com, alexandre.belloni@free-electrons.com, linux@armlinux.org.uk, boris.brezillon@free-electrons.com, perex@perex.cz, tiwai@suse.com Cc: Quentin Schulz , cyrille.pitchen@wedev4u.fr, thomas.petazzoni@free-electrons.com, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, alsa-devel@alsa-project.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 1/9] clk: at91: clk-generated: remove useless divisor loop Date: Thu, 13 Jul 2017 09:49:19 +0200 Message-Id: <20170713074927.10882-2-quentin.schulz@free-electrons.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170713074927.10882-1-quentin.schulz@free-electrons.com> References: <20170713074927.10882-1-quentin.schulz@free-electrons.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The driver requests the current clk rate of each of its parent clocks to decide whether a clock rate is suitable or not. It does not request determine_rate from a parent clock which could request a rate change in parent clock (i.e. there is no parent rate propagation). We know the rate we want (passed along req argument of the function) and the parent clock rate, thus we know the closest rounded divisor, we don't need to iterate over the available divisors to find the best one for a given clock. Signed-off-by: Quentin Schulz Acked-by: Boris Brezillon --- drivers/clk/at91/clk-generated.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) -- 2.11.0 diff --git a/drivers/clk/at91/clk-generated.c b/drivers/clk/at91/clk-generated.c index f0b7ae904ce2..ef4b4e03de04 100644 --- a/drivers/clk/at91/clk-generated.c +++ b/drivers/clk/at91/clk-generated.c @@ -124,19 +124,18 @@ static int clk_generated_determine_rate(struct clk_hw *hw, (gck->range.max && min_rate > gck->range.max)) continue; - for (div = 1; div < GENERATED_MAX_DIV + 2; div++) { - tmp_rate = DIV_ROUND_CLOSEST(parent_rate, div); - tmp_diff = abs(req->rate - tmp_rate); - - if (best_diff < 0 || best_diff > tmp_diff) { - best_rate = tmp_rate; - best_diff = tmp_diff; - req->best_parent_rate = parent_rate; - req->best_parent_hw = parent; - } - - if (!best_diff || tmp_rate < req->rate) - break; + div = DIV_ROUND_CLOSEST(parent_rate, req->rate); + if (!div) + tmp_rate = parent_rate; + else + tmp_rate = parent_rate / div; + tmp_diff = abs(req->rate - tmp_rate); + + if (best_diff < 0 || best_diff > tmp_diff) { + best_rate = tmp_rate; + best_diff = tmp_diff; + req->best_parent_rate = parent_rate; + req->best_parent_hw = parent; } if (!best_diff)