]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
ARM: tegra114: Clear IDDQ when enabling PLLC
authorThierry Reding <treding@nvidia.com>
Tue, 8 Sep 2015 09:38:04 +0000 (11:38 +0200)
committerTom Warren <twarren@nvidia.com>
Wed, 16 Sep 2015 23:11:31 +0000 (16:11 -0700)
Enabling a PLL while IDDQ is high. The Linux kernel checks for this
condition and warns about it verbosely, so while this seems to work
fine, fix it up according to the programming guidelines provided in
the Tegra K1 TRM (v02p), Section 5.3.8.1 ("PLLC and PLLC4 Startup
Sequence"). The Tegra114 TRM doesn't contain this information, but
the programming of PLLC is the same on Tegra114 and Tegra124.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Tom Warren <twarren@nvidia.com>
arch/arm/include/asm/arch-tegra114/clock.h
arch/arm/mach-tegra/tegra114/clock.c

index abbefcd0e4568f625eef97fd5f46dc229581fcc9..9bee397787471821d053c0b743a6a08ac227ad90 100644 (file)
@@ -25,4 +25,7 @@
 #define OSC_FREQ_SHIFT          28
 #define OSC_FREQ_MASK           (0xF << OSC_FREQ_SHIFT)
 
+/* CLK_RST_CONTROLLER_PLLC_MISC_0 */
+#define PLLC_IDDQ              (1 << 26)
+
 #endif /* _TEGRA114_CLOCK_H_ */
index cec843b27df795898e37a3d5cb2979f9c9cf894c..e6ef873c8dc4d2cb238e689a5457f91c726b1813 100644 (file)
@@ -629,6 +629,11 @@ void clock_early_init(void)
 
        tegra30_set_up_pllp();
 
+       /* clear IDDQ before accessing any other PLLC registers */
+       pllinfo = &tegra_pll_info_table[CLOCK_ID_CGENERAL];
+       clrbits_le32(&clkrst->crc_pll[CLOCK_ID_CGENERAL].pll_misc, PLLC_IDDQ);
+       udelay(2);
+
        /*
         * PLLC output frequency set to 600Mhz
         * PLLD output frequency set to 925Mhz