Signed-off-by: Sergey Kubushyn <k...@koi8.net>
---
diff -purN u-boot-i2c.orig/cpu/mpc8xx/video.c u-boot-i2c/cpu/mpc8xx/video.c
--- u-boot-i2c.orig/cpu/mpc8xx/video.c  2009-02-12 10:43:41.000000000 -0800
+++ u-boot-i2c/cpu/mpc8xx/video.c       2009-02-12 10:46:00.000000000 -0800
@@ -809,7 +809,11 @@ static void video_encoder_init (void)
 
        /* Initialize the I2C */
        debug ("[VIDEO ENCODER] Initializing I2C bus...\n");
+#ifdef CONFIG_NEW_I2C
+       i2c_init_all();
+#else
        i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
+#endif
 
 #ifdef CONFIG_FADS
        /* Reset ADV7176 chip */
diff -purN u-boot-i2c.orig/lib_arm/board.c u-boot-i2c/lib_arm/board.c
--- u-boot-i2c.orig/lib_arm/board.c     2009-02-12 10:43:41.000000000 -0800
+++ u-boot-i2c/lib_arm/board.c  2009-02-12 10:46:00.000000000 -0800
@@ -81,7 +81,8 @@ extern void rtl8019_get_enetaddr (uchar 
 #endif
 
 #if defined(CONFIG_HARD_I2C) || \
-    defined(CONFIG_SOFT_I2C)
+    defined(CONFIG_SOFT_I2C) || \
+    defined(CONFIG_SYS_I2C_ADAPTERS)
 #include <i2c.h>
 #endif
 
@@ -211,11 +212,15 @@ static void display_flash_config (ulong 
 }
 #endif /* CONFIG_SYS_NO_FLASH */
 
-#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C)
+#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) || 
defined(CONFIG_SYS_I2C_ADAPTERS)
 static int init_func_i2c (void)
 {
        puts ("I2C:   ");
+#ifdef CONFIG_NEW_I2C
+       i2c_init_all();
+#else
        i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
+#endif
        puts ("ready\n");
        return (0);
 }
@@ -272,7 +277,7 @@ init_fnc_t *init_sequence[] = {
 #if defined(CONFIG_DISPLAY_BOARDINFO)
        checkboard,             /* display board info */
 #endif
-#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C)
+#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) || 
defined(CONFIG_SYS_I2C_ADAPTERS)
        init_func_i2c,
 #endif
        dram_init,              /* configure available RAM banks */
@@ -368,6 +373,10 @@ void start_armboot (void)
        /* initialize environment */
        env_relocate ();
 
+#if defined(CONFIG_NEW_I2C) && defined(CONFIG_SYS_I2C_ADAPTERS)
+       i2c_reloc_fixup();
+#endif
+
 #ifdef CONFIG_VFD
        /* must do this after the framebuffer is allocated */
        drv_vfd_init();
diff -purN u-boot-i2c.orig/lib_blackfin/board.c u-boot-i2c/lib_blackfin/board.c
--- u-boot-i2c.orig/lib_blackfin/board.c        2009-02-12 10:43:41.000000000 
-0800
+++ u-boot-i2c/lib_blackfin/board.c     2009-02-12 10:46:00.000000000 -0800
@@ -31,6 +31,10 @@
 int post_flag;
 #endif
 
+#if defined(CONFIG_SYS_I2C_ADAPTERS)
+#include <i2c.h>
+#endif
+
 DECLARE_GLOBAL_DATA_PTR;
 
 const char version_string[] = U_BOOT_VERSION " ("U_BOOT_DATE" - 
"U_BOOT_TIME")";
@@ -338,6 +342,10 @@ void board_init_r(gd_t * id, ulong dest_
        /* relocate environment function pointers etc. */
        env_relocate();
 
+#if defined(CONFIG_SYS_I2C_ADAPTERS)
+       i2c_reloc_fixup();
+#endif
+
 #ifdef CONFIG_CMD_NET
        /* board MAC address */
        s = getenv("ethaddr");
diff -purN u-boot-i2c.orig/lib_m68k/board.c u-boot-i2c/lib_m68k/board.c
--- u-boot-i2c.orig/lib_m68k/board.c    2009-02-12 10:43:41.000000000 -0800
+++ u-boot-i2c/lib_m68k/board.c 2009-02-12 10:46:00.000000000 -0800
@@ -55,7 +55,8 @@
 #include <version.h>
 
 #if defined(CONFIG_HARD_I2C) || \
-    defined(CONFIG_SOFT_I2C)
+    defined(CONFIG_SOFT_I2C) || \
+    defined(CONFIG_SYS_I2C_ADAPTERS)
 #include <i2c.h>
 #endif
 
@@ -191,11 +192,15 @@ static int init_func_ram (void)
 
 /***********************************************************************/
 
-#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C)
+#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) || 
defined(CONFIG_SYS_I2C_ADAPTERS)
 static int init_func_i2c (void)
 {
        puts ("I2C:   ");
+#ifdef CONFIG_NEW_I2C
+       i2c_init_all();
+#else
        i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
+#endif
        puts ("ready\n");
        return (0);
 }
@@ -227,7 +232,7 @@ init_fnc_t *init_sequence[] = {
        display_options,
        checkcpu,
        checkboard,
-#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C)
+#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) || 
defined(CONFIG_SYS_I2C_ADAPTERS)
        init_func_i2c,
 #endif
 #if defined(CONFIG_HARD_SPI)
@@ -577,6 +582,11 @@ void board_init_r (gd_t *id, ulong dest_
        /* relocate environment function pointers etc. */
        env_relocate ();
 
+#if defined(CONFIG_NEW_I2C) && defined(CONFIG_SYS_I2C_ADAPTERS)
+       /* Adjust I2C subsystem pointers after relocation */
+       i2c_reloc_fixup();
+#endif
+
        /*
         * Fill in missing fields of bd_info.
         * We do this here, where we have "normal" access to the
diff -purN u-boot-i2c.orig/lib_mips/board.c u-boot-i2c/lib_mips/board.c
--- u-boot-i2c.orig/lib_mips/board.c    2009-02-12 10:43:41.000000000 -0800
+++ u-boot-i2c/lib_mips/board.c 2009-02-12 10:46:00.000000000 -0800
@@ -33,6 +33,10 @@
 #include <onenand_uboot.h>
 #include <spi.h>
 
+#if defined(CONFIG_SYS_I2C_ADAPTERS)
+#include <i2c.h>
+#endif
+
 DECLARE_GLOBAL_DATA_PTR;
 
 #if ( ((CONFIG_ENV_ADDR+CONFIG_ENV_SIZE) < CONFIG_SYS_MONITOR_BASE) || \
@@ -401,6 +405,10 @@ void board_init_r (gd_t *id, ulong dest_
        /* relocate environment function pointers etc. */
        env_relocate();
 
+#if defined(CONFIG_SYS_I2C_ADAPTERS)
+       i2c_reloc_fixup();
+#endif
+
        /* board MAC address */
        s = getenv ("ethaddr");
        for (i = 0; i < 6; ++i) {
diff -purN u-boot-i2c.orig/lib_ppc/board.c u-boot-i2c/lib_ppc/board.c
--- u-boot-i2c.orig/lib_ppc/board.c     2009-02-12 10:43:41.000000000 -0800
+++ u-boot-i2c/lib_ppc/board.c  2009-02-12 10:46:00.000000000 -0800
@@ -88,7 +88,8 @@ extern void sc3_read_eeprom(void);
 void doc_init (void);
 #endif
 #if defined(CONFIG_HARD_I2C) || \
-    defined(CONFIG_SOFT_I2C)
+    defined(CONFIG_SOFT_I2C) || \
+    defined(CONFIG_SYS_I2C_ADAPTERS)
 #include <i2c.h>
 #endif
 #include <spi.h>
@@ -231,11 +232,15 @@ static int init_func_ram (void)
 
 /***********************************************************************/
 
-#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C)
+#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) || 
defined(CONFIG_SYS_I2C_ADAPTERS)
 static int init_func_i2c (void)
 {
        puts ("I2C:   ");
+#ifdef CONFIG_NEW_I2C
+       i2c_init_all();
+#else
        i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
+#endif
        puts ("ready\n");
        return (0);
 }
@@ -330,7 +335,7 @@ init_fnc_t *init_sequence[] = {
        misc_init_f,
 #endif
        INIT_FUNC_WATCHDOG_RESET
-#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C)
+#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) || 
defined(CONFIG_SYS_I2C_ADAPTERS)
        init_func_i2c,
 #endif
 #if defined(CONFIG_HARD_SPI)
@@ -847,6 +852,11 @@ void board_init_r (gd_t *id, ulong dest_
         * the environment is in EEPROM.
         */
 
+#if defined(CONFIG_NEW_I2C) && defined(CONFIG_SYS_I2C_ADAPTERS)
+       /* Adjust I2C subsystem pointers after relocation */
+       i2c_reloc_fixup();
+#endif
+
 #if defined(CONFIG_SYS_EXTBDINFO)
 #if defined(CONFIG_405GP) || defined(CONFIG_405EP)
 #if defined(CONFIG_I2CFAST)
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to