From: Tom Warren <twarren@nvidia.com>
Date: Wed, 3 Apr 2013 21:39:30 +0000 (-0700)
Subject: Tegra: Fix MSELECT clock divisors for T30/T114.
X-Git-Tag: v2025.01-rc5-pxa1908~16294^2~5
X-Git-Url: http://git.dujemihanovic.xyz/html/index.html?a=commitdiff_plain;h=d94c2dbd0a55d742ab6ed9bd0c51b27ceed4084e;p=u-boot.git

Tegra: Fix MSELECT clock divisors for T30/T114.

A comparison of registers between our internal NV U-Boot and
u-boot-tegra/next showed some discrepancies in the MSELECT
clock divisor programming. T20 doesn't have a MSELECT clk src reg.

Signed-off-by: Tom Warren <twarren@nvidia.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
---

diff --git a/arch/arm/cpu/arm720t/tegra114/cpu.c b/arch/arm/cpu/arm720t/tegra114/cpu.c
index 6a94179d4a..51ecff794f 100644
--- a/arch/arm/cpu/arm720t/tegra114/cpu.c
+++ b/arch/arm/cpu/arm720t/tegra114/cpu.c
@@ -170,15 +170,13 @@ void t114_init_clocks(void)
 	clock_set_enable(PERIPH_ID_MC1, 1);
 	clock_set_enable(PERIPH_ID_DVFS, 1);
 
-	/* Switch MSELECT clock to PLLP (00) */
-	clock_ll_set_source(PERIPH_ID_MSELECT, 0);
-
 	/*
-	 * Clock divider request for 102MHz would setup MSELECT clock as
-	 * 102MHz for PLLP base 408MHz
+	 * Set MSELECT clock source as PLLP (00), and ask for a clock
+	 * divider that would set the MSELECT clock at 102MHz for a
+	 * PLLP base of 408MHz.
 	 */
 	clock_ll_set_source_divisor(PERIPH_ID_MSELECT, 0,
-		(NVBL_PLLP_KHZ/102000));
+		CLK_DIVIDER(NVBL_PLLP_KHZ, 102000));
 
 	/* I2C5 (DVC) gets CLK_M and a divisor of 17 */
 	clock_ll_set_source_divisor(PERIPH_ID_I2C5, 3, 16);
diff --git a/arch/arm/cpu/arm720t/tegra30/cpu.c b/arch/arm/cpu/arm720t/tegra30/cpu.c
index dedcdd9b08..e162357484 100644
--- a/arch/arm/cpu/arm720t/tegra30/cpu.c
+++ b/arch/arm/cpu/arm720t/tegra30/cpu.c
@@ -110,8 +110,8 @@ void t30_init_clocks(void)
 	reset_set_enable(PERIPH_ID_MSELECT, 1);
 	clock_set_enable(PERIPH_ID_MSELECT, 1);
 
-	/* Switch MSELECT clock to PLLP (00) */
-	clock_ll_set_source(PERIPH_ID_MSELECT, 0);
+	/* Switch MSELECT clock to PLLP (00) and use a divisor of 2 */
+	clock_ll_set_source_divisor(PERIPH_ID_MSELECT, 0, 2);
 
 	/*
 	 * Our high-level clock routines are not available prior to