From patchwork Thu Apr 11 22:02:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 10896987 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 078BF139A for ; Thu, 11 Apr 2019 22:04:52 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E4ED62890E for ; Thu, 11 Apr 2019 22:04:51 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D9C6C28C17; Thu, 11 Apr 2019 22:04:51 +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=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 88DB428C7E for ; Thu, 11 Apr 2019 22:04:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726661AbfDKWEq (ORCPT ); Thu, 11 Apr 2019 18:04:46 -0400 Received: from mail-lj1-f193.google.com ([209.85.208.193]:40750 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726847AbfDKWE2 (ORCPT ); Thu, 11 Apr 2019 18:04:28 -0400 Received: by mail-lj1-f193.google.com with SMTP id q66so6976640ljq.7; Thu, 11 Apr 2019 15:04:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=SUHPgW7dZuGazhrcakTZtDm+HbJ3DjUZGyh8GwQB52k=; b=rBXlxXu1ngSTXolx+1g1Qbtc98vDj83c9p3TnOhgzb1aJsdBct67YPD7Z9Uv479cln eEzqaQFWcqcZ70IAgZgfp7xpzirscZPo85WNsbKhOb2mUn0P8rLiGAbuA1FTHB3rCwJe oZgUnRSyFHQ8DWdb6+CvD2E5Hyyxq8sVXGbCGKHGHfqJTS7R9e/UzA8rIkUgqrA6Rp0t 51005Vuyz67R+P9V6TyUNBJDdEVtjbKOfY2Li7tuxpjAL/t5XuuRMRGAx3NXcKhdrUU+ xNxTDzGd6ZgY1Vm+HD/Wg8jIzqJNfeJ+L6CE4/GR2bArLb9do9WDEW68hkYK2+bHkFew SuYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=SUHPgW7dZuGazhrcakTZtDm+HbJ3DjUZGyh8GwQB52k=; b=Pf19nd5F/KmEHomdF3/Er7QamoLoP2tKK6Q2VVmsTgoKudXgDduPKKFTX0u4l/5eCB JputHijRJCK4wIgUKwERj/VI1CeB2pKE/cIizL2LoZNCI/Olf7MfoknMpgvDNPax0O+2 T+GktUVKwHweGvsiOXnsvf+neuGliQcJdK7yAtK1PXZIf0FGt47k5Pw/xv89vOsH1uJT 5VzBOYK5iizUYoFyejVDHORu/lRUH7okRD0XFFRbMOsBRBMAUCqHvzhOJpOCL2qiF+3R pmhbgaWsyc/sy2+UZXDXCFsOCo7XaUnhz2ga5553BqCq6drxFOKnMS6V+uQdsTjjL8nu 4d0Q== X-Gm-Message-State: APjAAAXpt18GDXy0qiQBZ+Q2q39+bch29ZAs/0tKSHBCslenk/JUEvZN 4k81EYu6Yp0vgJ//oB8oGb4= X-Google-Smtp-Source: APXvYqy7gf7R3PaXZFHz6LIH8cHWlCsEVHbWo+4ffZQ7CYDryxGOfUgBP5k2b1hOMP/WjCm0Hu7ikw== X-Received: by 2002:a2e:9703:: with SMTP id r3mr18999423lji.88.1555020265933; Thu, 11 Apr 2019 15:04:25 -0700 (PDT) Received: from localhost.localdomain (ppp94-29-35-107.pppoe.spdop.ru. [94.29.35.107]) by smtp.gmail.com with ESMTPSA id e18sm7887808ljb.12.2019.04.11.15.04.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 11 Apr 2019 15:04:25 -0700 (PDT) From: Dmitry Osipenko To: Peter De Schrijver , Prashant Gaikwad , Michael Turquette , Stephen Boyd , Thierry Reding , Jonathan Hunter , Joseph Lo Cc: linux-clk@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 3/5] clk: tegra: emc: Fix EMC max-rate clamping Date: Fri, 12 Apr 2019 01:02:28 +0300 Message-Id: <20190411220230.21726-4-digetx@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190411220230.21726-1-digetx@gmail.com> References: <20190411220230.21726-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-clk-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP When a clk user requests rate that is higher than the maximum possible, the rate shall be clamped to the maximum and not to the current value. Signed-off-by: Dmitry Osipenko --- drivers/clk/tegra/clk-emc.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/clk/tegra/clk-emc.c b/drivers/clk/tegra/clk-emc.c index 28068584ff6e..9a0179235939 100644 --- a/drivers/clk/tegra/clk-emc.c +++ b/drivers/clk/tegra/clk-emc.c @@ -121,7 +121,7 @@ static int emc_determine_rate(struct clk_hw *hw, struct clk_rate_request *req) struct tegra_clk_emc *tegra; u8 ram_code = tegra_read_ram_code(); struct emc_timing *timing = NULL; - int i, k; + int i, k, t; tegra = container_of(hw, struct tegra_clk_emc, hw); @@ -130,12 +130,17 @@ static int emc_determine_rate(struct clk_hw *hw, struct clk_rate_request *req) break; } - for (i = k; i < tegra->num_timings; i++) { - if (tegra->timings[i].ram_code != ram_code) + for (t = k; t < tegra->num_timings; t++) { + if (tegra->timings[t].ram_code != ram_code) break; + } + for (i = k; i < t; i++) { timing = tegra->timings + i; + if (timing->rate < req->rate && i != t - 1) + continue; + if (timing->rate > req->max_rate) { i = max(i, k + 1); req->rate = tegra->timings[i - 1].rate; @@ -145,10 +150,8 @@ static int emc_determine_rate(struct clk_hw *hw, struct clk_rate_request *req) if (timing->rate < req->min_rate) continue; - if (timing->rate >= req->rate) { - req->rate = timing->rate; - return 0; - } + req->rate = timing->rate; + return 0; } if (timing) {