ARM: tegra11: clock: Don't allow PLLM/C as super clock source
Alex Frid [Wed, 27 Feb 2013 04:16:10 +0000 (20:16 -0800)]
Updated parent selection policy to prevent PLLM and PLLC from being
selected as super clock sources (explicit check just to enforce policy
already in place).

Change-Id: If27c813b071081c93dd511b2bb3e54bc600819f4
Signed-off-by: Alex Frid <afrid@nvidia.com>
Reviewed-on: http://git-master/r/204414
(cherry picked from commit 9b6ef19228f7dc490f8c395d644c1a0c046a6359)
Reviewed-on: http://git-master/r/207899
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com>

arch/arm/mach-tegra/tegra11_clocks.c

index db185f0..525ac9f 100644 (file)
@@ -7068,9 +7068,11 @@ bool tegra_clk_is_parent_allowed(struct clk *c, struct clk *p)
         * source for EMC only when pll_m is fixed, or as a general fixed rate
         * clock source for EMC and other peripherals if pll_m is scaled. In
         * configuration with single cbus pll_c can be used as a scaled cbus
-        * clock source only.
+        * clock source only. No direct use for pll_c by super clocks.
         */
        if ((p == &tegra_pll_c) && (c != &tegra_pll_c_out1)) {
+               if (c->ops == &tegra_super_ops)
+                       return false;
 #ifdef CONFIG_TEGRA_DUAL_CBUS
 #ifndef CONFIG_TEGRA_PLLM_SCALED
                return c->flags & PERIPH_EMC_ENB;
@@ -7084,9 +7086,12 @@ bool tegra_clk_is_parent_allowed(struct clk *c, struct clk *p)
         * In any configuration pll_m must not be used as a clock source for
         * cbus modules. If pll_m is scaled it can be used as EMC source only.
         * Otherwise fixed rate pll_m can be used as clock source for EMC and
-        * other peripherals.
+        * other peripherals. No direct use for pll_m by super clocks.
         */
        if ((p == &tegra_pll_m) && (c != &tegra_pll_m_out1)) {
+               if (c->ops == &tegra_super_ops)
+                       return false;
+
                if (c->flags & PERIPH_ON_CBUS)
                        return false;
 #ifdef CONFIG_TEGRA_PLLM_SCALED