From: James Yang <James.Yang@freescale.com>
Date: Sat, 9 Feb 2008 00:05:08 +0000 (-0600)
Subject: 85xx: Speed up get_ddr_freq() and get_bus_freq()
X-Git-Tag: v2025.01-rc5-pxa1908~22327^2~5
X-Git-Url: http://git.dujemihanovic.xyz/img/html/static/%7B%7B%20.Permalink%20%7D%7D?a=commitdiff_plain;h=a3e77fa5359b3f9f59e4e946b46d57a53057cc85;p=u-boot.git

85xx: Speed up get_ddr_freq() and get_bus_freq()

get_ddr_freq() and get_bus_freq() used get_sys_info() each time they were
called.  However, get_sys_info() recalculates extraneous information when
called each time.  Have get_ddr_freq() and get_bus_freq() return memoized
values from global_data instead.

Signed-off-by: James Yang <James.Yang@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
---

diff --git a/cpu/mpc85xx/speed.c b/cpu/mpc85xx/speed.c
index 952f30cf39..d90d39767b 100644
--- a/cpu/mpc85xx/speed.c
+++ b/cpu/mpc85xx/speed.c
@@ -48,6 +48,8 @@ void get_sys_info (sys_info_t * sysInfo)
 	 * overflow for processor speeds above 2GHz */
 	half_freqSystemBus = sysInfo->freqSystemBus/2;
 	sysInfo->freqProcessor = e500_ratio*half_freqSystemBus;
+
+	/* Note: freqDDRBus is the MCLK frequency, not the data rate. */
 	sysInfo->freqDDRBus = sysInfo->freqSystemBus;
 
 #ifdef CONFIG_DDR_CLK_FREQ
@@ -75,6 +77,7 @@ int get_clocks (void)
 	get_sys_info (&sys_info);
 	gd->cpu_clk = sys_info.freqProcessor;
 	gd->bus_clk = sys_info.freqSystemBus;
+	gd->mem_clk = sys_info.freqDDRBus;
 	gd->i2c1_clk = sys_info.freqSystemBus;
 	gd->i2c2_clk = sys_info.freqSystemBus;
 
@@ -96,14 +99,7 @@ int get_clocks (void)
  *********************************************/
 ulong get_bus_freq (ulong dummy)
 {
-	ulong val;
-
-	sys_info_t sys_info;
-
-	get_sys_info (&sys_info);
-	val = sys_info.freqSystemBus;
-
-	return val;
+	return gd->bus_clk;
 }
 
 /********************************************
@@ -112,12 +108,5 @@ ulong get_bus_freq (ulong dummy)
  *********************************************/
 ulong get_ddr_freq (ulong dummy)
 {
-	ulong val;
-
-	sys_info_t sys_info;
-
-	get_sys_info (&sys_info);
-	val = sys_info.freqDDRBus;
-
-	return val;
+	return gd->mem_clk;
 }
diff --git a/include/asm-ppc/global_data.h b/include/asm-ppc/global_data.h
index ff6624a227..b43dba3352 100644
--- a/include/asm-ppc/global_data.h
+++ b/include/asm-ppc/global_data.h
@@ -52,9 +52,7 @@ typedef	struct	global_data {
 	unsigned long	scc_clk;
 	unsigned long	brg_clk;
 #endif
-#if defined(CONFIG_MPC7448HPC2)
 	unsigned long   mem_clk;
-#endif
 #if defined(CONFIG_MPC83XX)
 	/* There are other clocks in the MPC83XX */
 	u32 csb_clk;