From patchwork Tue Jul 23 02:52:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 11053719 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 9DA136C5 for ; Tue, 23 Jul 2019 02:53:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8D387208C2 for ; Tue, 23 Jul 2019 02:53:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 810BC285A7; Tue, 23 Jul 2019 02:53:09 +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 17B54208C2 for ; Tue, 23 Jul 2019 02:53:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732222AbfGWCxB (ORCPT ); Mon, 22 Jul 2019 22:53:01 -0400 Received: from mail-lf1-f67.google.com ([209.85.167.67]:33642 "EHLO mail-lf1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725848AbfGWCxA (ORCPT ); Mon, 22 Jul 2019 22:53:00 -0400 Received: by mail-lf1-f67.google.com with SMTP id x3so28268433lfc.0; Mon, 22 Jul 2019 19:52:58 -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:mime-version :content-transfer-encoding; bh=UGzqbbB1U0ppZ2A02MGdrN83+wMNNh/kz49yjkRagg4=; b=oGOorPHkG3fQQXMk4jmm3uqhV8r8dArAEn5qvIPCMkpwf/5MW5gfmXTishC51IYLD0 gXyyk/zX1ndUDIEFEjxz2gWX7ui0buUAVeEbs++OEPsrFqCY19QmGCDA9vmGYPiUJlmV j1QupIgqpdTXLMXNni5PsAvXkRUgzWUcbbVaPRpCQ1N/Td2qr6LQhH17rvAb2CSdAXYr thCYI+tSL7SHjPzXIwZUUhQV16LOBkOIOdrwFinYx/hg42koRNMJA97e2gYN4AbbMfgw URqr1Kci6UhZMS5726Pl9z4WIf1PmOOsJlKarubM/xYofn3PqUbmWMn3AJpj8zjPRHl5 dBZg== 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:mime-version :content-transfer-encoding; bh=UGzqbbB1U0ppZ2A02MGdrN83+wMNNh/kz49yjkRagg4=; b=PO1BfaElMttj4/7xtChA/hie2wBQF2Sl444VreFEKIA+w+tBdHAAwVEiMkgixE25bi 9modekcid43u5GbfToaqyO45eks5AWOTlCX4So6b9U052td95T8BJAMIb7qdxpeDUCtC 654r/3yq3sYSPx4bYqjx5csw15XRnYoW10QNh+ZBfyi9p9BFSl4cEVGnSFQ7lqFt0McV aawqVWVZ1Xh0FnKcOpHlpjv0Uc3m0XfzKMxwR00/CI6+oa8LpJ7nYJRwwp4S20HdU86o Fc0P7G7e/GfZjOG2jLzLP+anpJzwD1S4zjYAXjfMVSLidZ8DJPhsP3TYzL0BCPz7Aito wFww== X-Gm-Message-State: APjAAAUrH9YUuojlrRl/Iq482eul65DtSj2PW0EjD4Qts1Bks2BSUuAv UYmlVa/Oo/MyeYq/Zn27Q9s= X-Google-Smtp-Source: APXvYqzkQl297ESK1gCyraELtwkgRNbj+CQx/Air8IrnkAcz+ps43Ei6UF1+13i4+edz7NFSQUcldw== X-Received: by 2002:a19:8c57:: with SMTP id i23mr32883196lfj.192.1563850378088; Mon, 22 Jul 2019 19:52:58 -0700 (PDT) Received: from localhost.localdomain (ppp91-78-220-99.pppoe.mtu-net.ru. [91.78.220.99]) by smtp.gmail.com with ESMTPSA id v4sm7757477lji.103.2019.07.22.19.52.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 22 Jul 2019 19:52:57 -0700 (PDT) From: Dmitry Osipenko To: Michael Turquette , Thierry Reding , Jonathan Hunter , Peter De Schrijver , Prashant Gaikwad , Stephen Boyd Cc: linux-clk@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/2] clk: tegra: divider: Add missing check for enable-bit on rate's recalculation Date: Tue, 23 Jul 2019 05:52:44 +0300 Message-Id: <20190723025245.27754-1-digetx@gmail.com> X-Mailer: git-send-email 2.22.0 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 Unset "enable" bit means that divider is in bypass mode, hence it doesn't have any effect in that case. Please note that there are no known bugs caused by the missing check. Signed-off-by: Dmitry Osipenko Acked-by: Peter De Schrijver --- Changelog: v2: Changed the commit's description from 'Fix' to 'Add' in response to the Stephen's Boyd question about the need to backport the patch into stable kernels. The backporting is not really needed. drivers/clk/tegra/clk-divider.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/clk/tegra/clk-divider.c b/drivers/clk/tegra/clk-divider.c index e76731fb7d69..f33c19045386 100644 --- a/drivers/clk/tegra/clk-divider.c +++ b/drivers/clk/tegra/clk-divider.c @@ -40,8 +40,13 @@ static unsigned long clk_frac_div_recalc_rate(struct clk_hw *hw, int div, mul; u64 rate = parent_rate; - reg = readl_relaxed(divider->reg) >> divider->shift; - div = reg & div_mask(divider); + reg = readl_relaxed(divider->reg); + + if ((divider->flags & TEGRA_DIVIDER_UART) && + !(reg & PERIPH_CLK_UART_DIV_ENB)) + return rate; + + div = (reg >> divider->shift) & div_mask(divider); mul = get_mul(divider); div += mul; From patchwork Tue Jul 23 02:52:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 11053717 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 49DF76C5 for ; Tue, 23 Jul 2019 02:53:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 38303208C2 for ; Tue, 23 Jul 2019 02:53:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 29676285A7; Tue, 23 Jul 2019 02:53:04 +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 A46D7208C2 for ; Tue, 23 Jul 2019 02:53:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387727AbfGWCxD (ORCPT ); Mon, 22 Jul 2019 22:53:03 -0400 Received: from mail-lf1-f66.google.com ([209.85.167.66]:34980 "EHLO mail-lf1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732216AbfGWCxB (ORCPT ); Mon, 22 Jul 2019 22:53:01 -0400 Received: by mail-lf1-f66.google.com with SMTP id p197so28158143lfa.2; Mon, 22 Jul 2019 19:52:59 -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=u+tzQfpQc+UqaIlYqeJCEspMrMPh4Bc2dl2aym2TiZM=; b=njkX0o549nZn4jIGIIW1FTXWtRBjbSNo0zaqoHIY+ZmFDwn5wz2tcKCDK9Y0aUFngP ZW0M2Xm5AuvKxW2ZsyADKs9eD18j8jBGtu473djEccVaY6MIeBVbhVY5AS3xYbSOvrWj DqS0t/Svk1JvpPDFvH70wWMF83qFwLTb/Z50A1USFMN4893NU6ieJ2W7cPxFhl9e4r8/ heJXlFtYc81dr0zc7hOYt3bK/1MlCsgAAZ+jZ/pWJp1f/Cd7w0XSy4PdRq6vj4ydGQhJ LsNL8v/sYQDRXna1nRr5MR3nlSLEatI06+FW+C11BnAkwV2rN8WVy8UWy+YAsoIjxcv8 dKJA== 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=u+tzQfpQc+UqaIlYqeJCEspMrMPh4Bc2dl2aym2TiZM=; b=l5BSYQg5dKHdLaAaNmRdUNv32yMOrbItkQAHGRsyCrvCaJVzcRdIJpJGwYrxDJeLT8 bQWWetJi9bAnipsGTtHYQIHsPdxCE0oEJbH6nSvarEmfYYrE/LIknqmb+C7izplU5GYE 78LXQIS+0B6nttqHNo7DntBx5CFKfERQ4SYd7LeSlM35cMTkqm01UV15ljxTeRehTdMB Jgm3jg923ATRO3ZyGFICPovsnCwpGQzUMIB6rT0XINfOTcqkeji1UoEM+5Fwapt40VHZ tLFQFw+oKbgoUkD0wSxRQ78EmG7mAhioPMsXQqrWXQjgVQNmiHD63i4g8REI2SjBqHoI haYg== X-Gm-Message-State: APjAAAXpzeK33x3WzG0LVCfKuUFGXcjq6jd3i0TXj/UsCbOQR7uvRHmr ZKyTfnm8KBIaQ1wgPfgHpls= X-Google-Smtp-Source: APXvYqynTlrhq3xw4yK512LmiY2MjT5Hdl3t1pDeaX9QNSSfOzhf8RBs0aB1lzYfT2G8YWF3jWhP6w== X-Received: by 2002:a19:c80b:: with SMTP id y11mr32959793lff.81.1563850379179; Mon, 22 Jul 2019 19:52:59 -0700 (PDT) Received: from localhost.localdomain (ppp91-78-220-99.pppoe.mtu-net.ru. [91.78.220.99]) by smtp.gmail.com with ESMTPSA id v4sm7757477lji.103.2019.07.22.19.52.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 22 Jul 2019 19:52:58 -0700 (PDT) From: Dmitry Osipenko To: Michael Turquette , Thierry Reding , Jonathan Hunter , Peter De Schrijver , Prashant Gaikwad , Stephen Boyd Cc: linux-clk@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/2] clk: tegra: divider: Support enable-bit for Super clocks Date: Tue, 23 Jul 2019 05:52:45 +0300 Message-Id: <20190723025245.27754-2-digetx@gmail.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190723025245.27754-1-digetx@gmail.com> References: <20190723025245.27754-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 All Super clocks have a divider that has the enable bit. Signed-off-by: Dmitry Osipenko --- Changelog: v2: Improved commit's message. drivers/clk/tegra/clk-divider.c | 12 ++++++++++++ drivers/clk/tegra/clk-super.c | 1 + drivers/clk/tegra/clk.h | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/drivers/clk/tegra/clk-divider.c b/drivers/clk/tegra/clk-divider.c index f33c19045386..a980b9bddecd 100644 --- a/drivers/clk/tegra/clk-divider.c +++ b/drivers/clk/tegra/clk-divider.c @@ -17,6 +17,7 @@ #define get_max_div(d) div_mask(d) #define PERIPH_CLK_UART_DIV_ENB BIT(24) +#define SUPER_CLK_DIV_ENB BIT(31) static int get_div(struct tegra_clk_frac_div *divider, unsigned long rate, unsigned long parent_rate) @@ -46,6 +47,10 @@ static unsigned long clk_frac_div_recalc_rate(struct clk_hw *hw, !(reg & PERIPH_CLK_UART_DIV_ENB)) return rate; + if ((divider->flags & TEGRA_DIVIDER_SUPER) && + !(reg & SUPER_CLK_DIV_ENB)) + return rate; + div = (reg >> divider->shift) & div_mask(divider); mul = get_mul(divider); @@ -96,6 +101,13 @@ static int clk_frac_div_set_rate(struct clk_hw *hw, unsigned long rate, val &= ~(div_mask(divider) << divider->shift); val |= div << divider->shift; + if (divider->flags & TEGRA_DIVIDER_SUPER) { + if (div) + val |= SUPER_CLK_DIV_ENB; + else + val &= ~SUPER_CLK_DIV_ENB; + } + if (divider->flags & TEGRA_DIVIDER_UART) { if (div) val |= PERIPH_CLK_UART_DIV_ENB; diff --git a/drivers/clk/tegra/clk-super.c b/drivers/clk/tegra/clk-super.c index 39ef31b46df5..4d8e36b04f03 100644 --- a/drivers/clk/tegra/clk-super.c +++ b/drivers/clk/tegra/clk-super.c @@ -220,6 +220,7 @@ struct clk *tegra_clk_register_super_clk(const char *name, super->frac_div.width = 8; super->frac_div.frac_width = 1; super->frac_div.lock = lock; + super->frac_div.flags = TEGRA_DIVIDER_SUPER; super->div_ops = &tegra_clk_frac_div_ops; /* Data in .init is copied by clk_register(), so stack variable OK */ diff --git a/drivers/clk/tegra/clk.h b/drivers/clk/tegra/clk.h index 905bf1096558..a4fbf55930aa 100644 --- a/drivers/clk/tegra/clk.h +++ b/drivers/clk/tegra/clk.h @@ -53,6 +53,9 @@ struct clk *tegra_clk_register_sync_source(const char *name, * TEGRA_DIVIDER_UART - UART module divider has additional enable bit which is * set when divider value is not 0. This flags indicates that the divider * is for UART module. + * TEGRA_DIVIDER_SUPER - Super clock divider has additional enable bit which + * is set when divider value is not 0. This flags indicates that the + * divider is for super clock. */ struct tegra_clk_frac_div { struct clk_hw hw; @@ -70,6 +73,7 @@ struct tegra_clk_frac_div { #define TEGRA_DIVIDER_FIXED BIT(1) #define TEGRA_DIVIDER_INT BIT(2) #define TEGRA_DIVIDER_UART BIT(3) +#define TEGRA_DIVIDER_SUPER BIT(4) extern const struct clk_ops tegra_clk_frac_div_ops; struct clk *tegra_clk_register_divider(const char *name,