]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - cpu/mpc86xx/speed.c
rename CFG_ macros to CONFIG_SYS
[karo-tx-uboot.git] / cpu / mpc86xx / speed.c
index 7e884f8e0142334c96bf15996199d1f6d75d2a76..415ac9db89055ed4f72d8c1c89bde489083b76ad 100644 (file)
@@ -36,7 +36,7 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 
 void get_sys_info(sys_info_t *sysInfo)
 {
-       volatile immap_t *immap = (immap_t *) CFG_IMMR;
+       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
        volatile ccsr_gur_t *gur = &immap->im_gur;
        uint plat_ratio, e600_ratio;
 
@@ -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;