Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1273557 > unrolled thread

[PATCH] clk: tegra: move _calc_dynamic_ram_rate out of #ifdef

Started byArnd Bergmann <arnd@arndb.de>
First post2015-11-19 23:40 +0100
Last post2015-11-20 16:20 +0100
Articles 3 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] clk: tegra: move _calc_dynamic_ram_rate out of #ifdef Arnd Bergmann <arnd@arndb.de> - 2015-11-19 23:40 +0100
    Re: [PATCH] clk: tegra: move _calc_dynamic_ram_rate out of #ifdef Rhyland Klein <rklein@nvidia.com> - 2015-11-19 23:50 +0100
    Re: [PATCH] clk: tegra: move _calc_dynamic_ram_rate out of #ifdef Thierry Reding <treding@nvidia.com> - 2015-11-20 16:20 +0100

#1273557 — [PATCH] clk: tegra: move _calc_dynamic_ram_rate out of #ifdef

FromArnd Bergmann <arnd@arndb.de>
Date2015-11-19 23:40 +0100
Subject[PATCH] clk: tegra: move _calc_dynamic_ram_rate out of #ifdef
Message-ID<qwG1Y-74P-9@gated-at.bofh.it>
_calc_dynamic_ram_rate is defined inside an #ifdef but called
later in the same file outside of that #ifdef, which can cause a
build error:

drivers/clk/tegra/clk-pll.c: In function '_tegra_clk_register_pll':
drivers/clk/tegra/clk-pll.c:1541:29: error: '_calc_dynamic_ramp_rate' undeclared (first use in this function)

This moves both _calc_dynamic_ram_rate and _pll_fixed_mdiv in
front of the #ifdef to make all configurations compile again.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: 44c8b9fa432c ("clk: tegra: pll: Fix _pll_ramp_calc_pll logic and _calc_dynamic_ramp_rate")
----
The patch that caused it appears to be older, but I only ran into
the randconfig bug today for the first time. Apparently the commit
is only in linux-next at the moment, not in 4.4-rc1

diff --git a/drivers/clk/tegra/clk-pll.c b/drivers/clk/tegra/clk-pll.c
index 9734ffa185d3..94f3a6d34e3a 100644
--- a/drivers/clk/tegra/clk-pll.c
+++ b/drivers/clk/tegra/clk-pll.c
@@ -967,11 +967,6 @@ const struct clk_ops tegra_clk_plle_ops = {
 	.enable = clk_plle_enable,
 };
 
-#if defined(CONFIG_ARCH_TEGRA_114_SOC) || \
-	defined(CONFIG_ARCH_TEGRA_124_SOC) || \
-	defined(CONFIG_ARCH_TEGRA_132_SOC) || \
-	defined(CONFIG_ARCH_TEGRA_210_SOC)
-
 static int _pll_fixed_mdiv(struct tegra_clk_pll_params *pll_params,
 			   unsigned long parent_rate)
 {
@@ -990,6 +985,40 @@ static int _pll_fixed_mdiv(struct tegra_clk_pll_params *pll_params,
 		return 1;
 }
 
+static int _calc_dynamic_ramp_rate(struct clk_hw *hw,
+				struct tegra_clk_pll_freq_table *cfg,
+				unsigned long rate, unsigned long parent_rate)
+{
+	struct tegra_clk_pll *pll = to_clk_pll(hw);
+	unsigned int p;
+	int p_div;
+
+	if (!rate)
+		return -EINVAL;
+
+	p = DIV_ROUND_UP(pll->params->vco_min, rate);
+	cfg->m = _pll_fixed_mdiv(pll->params, parent_rate);
+	cfg->output_rate = rate * p;
+	cfg->n = cfg->output_rate * cfg->m / parent_rate;
+	cfg->input_rate = parent_rate;
+
+	p_div = _p_div_to_hw(hw, p);
+	if (p_div < 0)
+		return p_div;
+
+	cfg->p = p_div;
+
+	if (cfg->n > divn_max(pll) || cfg->output_rate > pll->params->vco_max)
+		return -EINVAL;
+
+	return 0;
+}
+
+#if defined(CONFIG_ARCH_TEGRA_114_SOC) || \
+	defined(CONFIG_ARCH_TEGRA_124_SOC) || \
+	defined(CONFIG_ARCH_TEGRA_132_SOC) || \
+	defined(CONFIG_ARCH_TEGRA_210_SOC)
+
 u16 tegra_pll_get_fixed_mdiv(struct clk_hw *hw, unsigned long input_rate)
 {
 	struct tegra_clk_pll *pll = to_clk_pll(hw);
@@ -1039,35 +1068,6 @@ static int _setup_dynamic_ramp(struct tegra_clk_pll_params *pll_params,
 	return 0;
 }
 
-static int _calc_dynamic_ramp_rate(struct clk_hw *hw,
-				struct tegra_clk_pll_freq_table *cfg,
-				unsigned long rate, unsigned long parent_rate)
-{
-	struct tegra_clk_pll *pll = to_clk_pll(hw);
-	unsigned int p;
-	int p_div;
-
-	if (!rate)
-		return -EINVAL;
-
-	p = DIV_ROUND_UP(pll->params->vco_min, rate);
-	cfg->m = _pll_fixed_mdiv(pll->params, parent_rate);
-	cfg->output_rate = rate * p;
-	cfg->n = cfg->output_rate * cfg->m / parent_rate;
-	cfg->input_rate = parent_rate;
-
-	p_div = _p_div_to_hw(hw, p);
-	if (p_div < 0)
-		return p_div;
-
-	cfg->p = p_div;
-
-	if (cfg->n > divn_max(pll) || cfg->output_rate > pll->params->vco_max)
-		return -EINVAL;
-
-	return 0;
-}
-
 static int _pll_ramp_calc_pll(struct clk_hw *hw,
 			      struct tegra_clk_pll_freq_table *cfg,
 			      unsigned long rate, unsigned long parent_rate)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1273558

FromRhyland Klein <rklein@nvidia.com>
Date2015-11-19 23:50 +0100
Message-ID<qwGbD-78a-1@gated-at.bofh.it>
In reply to#1273557
On 11/19/2015 5:32 PM, Arnd Bergmann wrote:
> _calc_dynamic_ram_rate is defined inside an #ifdef but called
> later in the same file outside of that #ifdef, which can cause a
> build error:
> 
> drivers/clk/tegra/clk-pll.c: In function '_tegra_clk_register_pll':
> drivers/clk/tegra/clk-pll.c:1541:29: error: '_calc_dynamic_ramp_rate' undeclared (first use in this function)
> 
> This moves both _calc_dynamic_ram_rate and _pll_fixed_mdiv in
> front of the #ifdef to make all configurations compile again.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Fixes: 44c8b9fa432c ("clk: tegra: pll: Fix _pll_ramp_calc_pll logic and _calc_dynamic_ramp_rate")
> ----
> The patch that caused it appears to be older, but I only ran into
> the randconfig bug today for the first time. Apparently the commit
> is only in linux-next at the moment, not in 4.4-rc1
> 

Acked-by: Rhyland Klein <rklein@nvidia.com>

-rhyland

-- 
nvpublic
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1274164

FromThierry Reding <treding@nvidia.com>
Date2015-11-20 16:20 +0100
Message-ID<qwVDH-uA-9@gated-at.bofh.it>
In reply to#1273557

[Multipart message — attachments visible in raw view] — view raw

On Thu, Nov 19, 2015 at 11:32:33PM +0100, Arnd Bergmann wrote:
> _calc_dynamic_ram_rate is defined inside an #ifdef but called
> later in the same file outside of that #ifdef, which can cause a
> build error:
> 
> drivers/clk/tegra/clk-pll.c: In function '_tegra_clk_register_pll':
> drivers/clk/tegra/clk-pll.c:1541:29: error: '_calc_dynamic_ramp_rate' undeclared (first use in this function)
> 
> This moves both _calc_dynamic_ram_rate and _pll_fixed_mdiv in
> front of the #ifdef to make all configurations compile again.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Fixes: 44c8b9fa432c ("clk: tegra: pll: Fix _pll_ramp_calc_pll logic and _calc_dynamic_ramp_rate")
> ----
> The patch that caused it appears to be older, but I only ran into
> the randconfig bug today for the first time. Apparently the commit
> is only in linux-next at the moment, not in 4.4-rc1

Hmm... this looks familiar, I thought I had included an equivalent patch
in the clock tree. I'll go do some digging, but this looks exactly like
what I had done at the time.

Thanks,
Thierry

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web