summaryrefslogtreecommitdiff
path: root/cpu/mpc86xx
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2008-04-30 23:04:51 +0200
committerWolfgang Denk <wd@denx.de>2008-04-30 23:04:51 +0200
commitfed4de0135fdc13565704669cdf80902bbfe3c42 (patch)
treeb8fc14a0c94687ac766eba56cb8ec445dfad0668 /cpu/mpc86xx
parent42ffcec3f9eba010a662d5b42981812b6bebfb9a (diff)
parent12bc4e94251c369c529ffa505cf58b148c372f7f (diff)
Merge branch 'master' of git+ssh://10.10.0.7/home/wd/git/u-boot/master
Diffstat (limited to 'cpu/mpc86xx')
-rw-r--r--cpu/mpc86xx/speed.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/cpu/mpc86xx/speed.c b/cpu/mpc86xx/speed.c
index 7e884f8e01..da5b58b73f 100644
--- a/cpu/mpc86xx/speed.c
+++ b/cpu/mpc86xx/speed.c
@@ -105,8 +105,20 @@ int get_clocks(void)
get_sys_info(&sys_info);
gd->cpu_clk = sys_info.freqProcessor;
gd->bus_clk = sys_info.freqSystemBus;
+
+ /*
+ * The base clock for I2C depends on the actual SOC. Unfortunately,
+ * there is no pattern that can be used to determine the frequency, so
+ * the only choice is to look up the actual SOC number and use the value
+ * for that SOC. This information is taken from application note
+ * AN2919.
+ */
+#ifdef CONFIG_MPC8610
gd->i2c1_clk = sys_info.freqSystemBus;
- gd->i2c2_clk = sys_info.freqSystemBus;
+#else
+ gd->i2c1_clk = sys_info.freqSystemBus / 2;
+#endif
+ gd->i2c2_clk = gd->i2c1_clk;
if (gd->cpu_clk != 0)
return 0;