clk: tegra: Don't reset PLL-CX if it is already enabled
authorJon Hunter <jonathanh@nvidia.com>
Mon, 27 Mar 2017 11:01:05 +0000 (12:01 +0100)
committerThierry Reding <treding@nvidia.com>
Tue, 4 Apr 2017 14:06:05 +0000 (16:06 +0200)
Commit 8dce89a1c2cf ("clk: tegra: Don't warn for PLL defaults
unnecessarily") changed the tegra210_pllcx_set_defaults() function
causing the PLL to always be reset regardless of whether it is in-use.
This function was changed so that resetting of the PLL will only be
skipped if the PLL is enabled AND 'pllcx->params->defaults_set' is not
true. However, the 'pllcx->params->defaults_set' is always true and
hence, the PLL is now always reset. This causes the boot to fail on the
Tegra210 Smaug where the PLL is already enabled and in-use. Fix this by
only resetting the PLL if not in-use and only printing the warning that
the defaults are not set after we have checked the default settings.

Fixes: 8dce89a1c2cf ("clk: tegra: Don't warn for PLL defaults unnecessarily")
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Acked-By: Peter De Schrijver <pdeschrijver@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/clk/tegra/clk-tegra210.c

index cdf1101c40f84634accd551f713a303af2eb6172..1024e853ea65aaae2329c53f0015ecfae9df24e1 100644 (file)
@@ -555,12 +555,12 @@ static void tegra210_pllcx_set_defaults(const char *name,
 {
        pllcx->params->defaults_set = true;
 
-       if (readl_relaxed(clk_base + pllcx->params->base_reg) &
-                       PLL_ENABLE && !pllcx->params->defaults_set) {
+       if (readl_relaxed(clk_base + pllcx->params->base_reg) & PLL_ENABLE) {
                /* PLL is ON: only check if defaults already set */
                pllcx_check_defaults(pllcx->params);
-               pr_warn("%s already enabled. Postponing set full defaults\n",
-                       name);
+               if (!pllcx->params->defaults_set)
+                       pr_warn("%s already enabled. Postponing set full defaults\n",
+                               name);
                return;
        }