Signed-off-by: Sergey Kubushyn <k...@koi8.net>      
---
diff --git a/include/configs/TK885D.h b/include/configs/TK885D.h
index 14ff62c..cd45b95 100644
--- a/include/configs/TK885D.h
+++ b/include/configs/TK885D.h
@@ -102,12 +102,12 @@
 
 /* enable I2C and select the hardware/software driver */
 #undef CONFIG_HARD_I2C                 /* I2C with hardware support    */
-#define CONFIG_SOFT_I2C                1       /* I2C bit-banged               
*/
-
-#define CONFIG_SYS_I2C_SPEED           93000   /* 93 kHz is supposed to work   
*/
-#define CONFIG_SYS_I2C_SLAVE           0xFE
-
-#ifdef CONFIG_SOFT_I2C
+#define CONFIG_NEW_I2C
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      93000   /* 93 kHz is supposed to work */
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0xFE
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
 /*
  * Software (bit-bang) I2C driver configuration
  */
@@ -123,7 +123,6 @@
 #define I2C_SCL(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
                        else    immr->im_cpm.cp_pbdat &= ~PB_SCL
 #define I2C_DELAY      udelay(2)       /* 1/4 I2C clock duration */
-#endif /* CONFIG_SOFT_I2C */
 
 #define CONFIG_SYS_I2C_EEPROM_ADDR     0x50            /* EEPROM AT24C??       
*/
 #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2               /* two byte address     
*/
diff --git a/include/configs/TOP5200.h b/include/configs/TOP5200.h
index 046948e..0e605df 100644
--- a/include/configs/TOP5200.h
+++ b/include/configs/TOP5200.h
@@ -196,9 +196,15 @@
 #define CONFIG_MISC_INIT_R
 
 #undef CONFIG_HARD_I2C                 /* I2C with hardware support */
-#define        CONFIG_SOFT_I2C         1       /* I2C with softwate support */
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
 
 #if defined (CONFIG_SOFT_I2C)
+#  define CONFIG_NEW_I2C
+#  define I2C_SOFT_DECLARATIONS                I2C_SOFT_DEFS
+#  define CONFIG_SYS_SOFT_I2C_SPEED    100000
+#  define CONFIG_SYS_SOFT_I2C_SLAVE    0x7F
+#  define CONFIG_SYS_I2C_ADAPTERS              {&soft_i2c_adap[0]}
+/**/
 #  define SDA0                 0x40
 #  define SCL0                 0x80
 #  define GPIOE0               *((volatile uchar*)(CONFIG_SYS_MBAR+0x0c00))
@@ -213,8 +219,7 @@
 #  define I2C_DELAY            {udelay(5);}
 #  define I2C_ACTIVE   {DDR0|=SDA0;}
 #  define I2C_TRISTATE {DDR0&=~SDA0;}
-#  define CONFIG_SYS_I2C_SPEED         100000
-#  define CONFIG_SYS_I2C_SLAVE         0x7F
+
 #define CONFIG_SYS_I2C_EEPROM_ADDR 0x57
 #define CONFIG_SYS_I2C_FACT_ADDR       0x57
 #endif
diff --git a/include/configs/TOP860.h b/include/configs/TOP860.h
index 8c2befb..ec75431 100644
--- a/include/configs/TOP860.h
+++ b/include/configs/TOP860.h
@@ -159,7 +159,6 @@
  * Environment handler
  * only the first 6k in EEPROM are available for user. Of that we use 256b
  */
-#define        CONFIG_SOFT_I2C
 #define CONFIG_ENV_IS_IN_EEPROM        1       /* turn on EEPROM env feature */
 #define CONFIG_ENV_OFFSET              0x1000
 #define CONFIG_ENV_SIZE                0x0700
@@ -170,13 +169,17 @@
 #define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 3
 #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
 #define CONFIG_SYS_EEPROM_SIZE 0x2000
-#define        CONFIG_SYS_I2C_SPEED    100000
-#define        CONFIG_SYS_I2C_SLAVE    0xFE
 #define        CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 12
 #define CONFIG_ENV_OVERWRITE
 #define CONFIG_MISC_INIT_R
 
-#if defined (CONFIG_SOFT_I2C)
+#define CONFIG_NEW_I2C
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      100000
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0xFE
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
+/**/
 #define        SDA     0x00010
 #define        SCL     0x00020
 #define __I2C_DIR      immr->im_cpm.cp_pbdir
@@ -193,7 +196,6 @@
 #define        I2C_DELAY       { udelay(5); }
 #define        I2C_ACTIVE      { __I2C_DIR |= SDA; }
 #define        I2C_TRISTATE    { __I2C_DIR &= ~SDA; }
-#endif
 
 #define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200, 
230400 }
 
diff --git a/include/configs/TQM8260.h b/include/configs/TQM8260.h
index ac9c94e..03ca4ba 100644
--- a/include/configs/TQM8260.h
+++ b/include/configs/TQM8260.h
@@ -88,9 +88,12 @@
 
 /* enable I2C and select the hardware/software driver */
 #undef  CONFIG_HARD_I2C                        /* I2C with hardware support    
*/
-#define CONFIG_SOFT_I2C                1       /* I2C bit-banged               
*/
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address  
*/
-#define CONFIG_SYS_I2C_SLAVE           0x7F
+#define CONFIG_NEW_I2C
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      400000
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0x7F
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
 
 /*
  * Software (bit-bang) I2C driver configuration
diff --git a/include/configs/TQM8272.h b/include/configs/TQM8272.h
index 9cac696..75b023f 100644
--- a/include/configs/TQM8272.h
+++ b/include/configs/TQM8272.h
@@ -96,10 +96,12 @@
 #if CONFIG_I2C
 /* enable I2C and select the hardware/software driver */
 #undef  CONFIG_HARD_I2C                        /* I2C with hardware support    
*/
-#define CONFIG_SOFT_I2C                1       /* I2C bit-banged               
*/
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address  
*/
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
+#define CONFIG_NEW_I2C
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      400000
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0x7F
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
 /*
  * Software (bit-bang) I2C driver configuration
  */
diff --git a/include/configs/TQM834x.h b/include/configs/TQM834x.h
index 796030d..2526a01 100644
--- a/include/configs/TQM834x.h
+++ b/include/configs/TQM834x.h
@@ -201,12 +201,12 @@ extern int tqm834x_num_flash_banks;
 /*
  * I2C
  */
-#define CONFIG_HARD_I2C                                /* I2C with hardware 
support    */
-#undef CONFIG_SOFT_I2C                         /* I2C bit-banged               
*/
+#define CONFIG_NEW_I2C
 #define CONFIG_FSL_I2C
-#define CONFIG_SYS_I2C_SPEED                   400000  /* I2C speed: 400KHz    
        */
-#define CONFIG_SYS_I2C_SLAVE                   0x7F    /* slave address        
        */
-#define CONFIG_SYS_I2C_OFFSET                  0x3000
+#define CONFIG_SYS_FSL_I2C_SPEED       400000  /* I2C speed and slave address 
*/
+#define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
+#define CONFIG_SYS_FSL_I2C_OFFSET      0x3000
+#define CONFIG_SYS_I2C_ADAPTERS                {&fsl_i2c_adap[0]}
 
 /* I2C EEPROM, configuration for onboard EEPROMs 24C256 and 24C32 */
 #define CONFIG_SYS_I2C_EEPROM_ADDR             0x50    /* 1010000x             
        */
diff --git a/include/configs/TQM855M.h b/include/configs/TQM855M.h
index 84889ea..20a1e20 100644
--- a/include/configs/TQM855M.h
+++ b/include/configs/TQM855M.h
@@ -93,12 +93,12 @@
 
 /* enable I2C and select the hardware/software driver */
 #undef CONFIG_HARD_I2C                 /* I2C with hardware support    */
-#define        CONFIG_SOFT_I2C         1       /* I2C bit-banged               
*/
-
-#define CONFIG_SYS_I2C_SPEED           93000   /* 93 kHz is supposed to work   
*/
-#define CONFIG_SYS_I2C_SLAVE           0xFE
-
-#ifdef CONFIG_SOFT_I2C
+#define CONFIG_NEW_I2C
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      93000   /* 93 kHz is supposed to work */
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0xFE
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
 /*
  * Software (bit-bang) I2C driver configuration
  */
@@ -114,7 +114,6 @@
 #define I2C_SCL(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
                        else    immr->im_cpm.cp_pbdat &= ~PB_SCL
 #define I2C_DELAY      udelay(2)       /* 1/4 I2C clock duration */
-#endif /* CONFIG_SOFT_I2C */
 
 #define CONFIG_SYS_I2C_EEPROM_ADDR     0x50            /* EEPROM AT24C64       
*/
 #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2               /* two byte address     
*/
diff --git a/include/configs/TQM85xx.h b/include/configs/TQM85xx.h
index f5831eb..23e758c 100644
--- a/include/configs/TQM85xx.h
+++ b/include/configs/TQM85xx.h
@@ -302,13 +302,13 @@
 /*
  * I2C
  */
-#define CONFIG_FSL_I2C                 /* Use FSL common I2C driver    */
-#define CONFIG_HARD_I2C                        /* I2C with hardware support    
*/
-#undef CONFIG_SOFT_I2C                 /* I2C bit-banged               */
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address  
*/
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-#define CONFIG_SYS_I2C_NOPROBES        {0x48}  /* Don't probe these addrs      
*/
-#define CONFIG_SYS_I2C_OFFSET          0x3000
+#define CONFIG_NEW_I2C
+#define CONFIG_FSL_I2C
+#define CONFIG_SYS_FSL_I2C_SPEED       400000  /* I2C speed and slave address 
*/
+#define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
+#define CONFIG_SYS_FSL_I2C_OFFSET      0x3000
+#define CONFIG_SYS_I2C_ADAPTERS                {&fsl_i2c_adap[0]}
+#define CONFIG_SYS_I2C_NOPROBES                {0x48}  /* Don't probe these 
addrs */
 
 /* I2C RTC */
 #define CONFIG_RTC_DS1337              /* Use ds1337 rtc via i2c       */
diff --git a/include/configs/TQM866M.h b/include/configs/TQM866M.h
index 87dc264..6223728 100644
--- a/include/configs/TQM866M.h
+++ b/include/configs/TQM866M.h
@@ -105,12 +105,12 @@
 
 /* enable I2C and select the hardware/software driver */
 #undef CONFIG_HARD_I2C                 /* I2C with hardware support    */
-#define CONFIG_SOFT_I2C                1       /* I2C bit-banged               
*/
-
-#define CONFIG_SYS_I2C_SPEED           93000   /* 93 kHz is supposed to work   
*/
-#define CONFIG_SYS_I2C_SLAVE           0xFE
-
-#ifdef CONFIG_SOFT_I2C
+#define CONFIG_NEW_I2C
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      93000   /* 93 kHz is supposed to work */
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0xFE
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
 /*
  * Software (bit-bang) I2C driver configuration
  */
@@ -126,7 +126,6 @@
 #define I2C_SCL(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
                        else    immr->im_cpm.cp_pbdat &= ~PB_SCL
 #define I2C_DELAY      udelay(2)       /* 1/4 I2C clock duration */
-#endif /* CONFIG_SOFT_I2C */
 
 #define CONFIG_SYS_I2C_EEPROM_ADDR     0x50            /* EEPROM AT24C256      
*/
 #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2               /* two byte address     
*/
diff --git a/include/configs/TQM885D.h b/include/configs/TQM885D.h
index 942bbf6..3350eb6 100644
--- a/include/configs/TQM885D.h
+++ b/include/configs/TQM885D.h
@@ -99,12 +99,12 @@
 
 /* enable I2C and select the hardware/software driver */
 #undef CONFIG_HARD_I2C                 /* I2C with hardware support    */
-#define CONFIG_SOFT_I2C                1       /* I2C bit-banged               
*/
-
-#define CONFIG_SYS_I2C_SPEED           93000   /* 93 kHz is supposed to work   
*/
-#define CONFIG_SYS_I2C_SLAVE           0xFE
-
-#ifdef CONFIG_SOFT_I2C
+#define CONFIG_NEW_I2C
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      93000   /* 93 kHz is supposed to work */
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0xFE
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
 /*
  * Software (bit-bang) I2C driver configuration
  */
@@ -120,7 +120,6 @@
 #define I2C_SCL(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
                        else    immr->im_cpm.cp_pbdat &= ~PB_SCL
 #define I2C_DELAY      udelay(2)       /* 1/4 I2C clock duration */
-#endif /* CONFIG_SOFT_I2C */
 
 #define CONFIG_SYS_I2C_EEPROM_ADDR     0x50            /* EEPROM AT24C??       
*/
 #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2               /* two byte address     
*/
diff --git a/include/configs/XPEDITE5200.h b/include/configs/XPEDITE5200.h
index 1df6855..652fc4f 100644
--- a/include/configs/XPEDITE5200.h
+++ b/include/configs/XPEDITE5200.h
@@ -219,14 +219,16 @@
 /*
  * I2C
  */
-#define CONFIG_FSL_I2C                         /* Use FSL common I2C driver */
-#define CONFIG_HARD_I2C                                /* I2C with hardware 
support */
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address 
*/
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-#define CONFIG_SYS_I2C_OFFSET          0x3000
-#define CONFIG_SYS_I2C2_OFFSET         0x3100
-#define CONFIG_I2C_MULTI_BUS
-#define CONFIG_I2C_CMD_TREE
+#define CONFIG_NEW_I2C
+#define CONFIG_SYS_NUM_I2C_ADAPTERS    2
+#define CONFIG_FSL_I2C
+#define CONFIG_SYS_FSL_I2C_SPEED       400000  /* I2C speed and slave address 
*/
+#define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
+#define CONFIG_SYS_FSL_I2C_OFFSET      0x3000
+#define CONFIG_SYS_FSL_I2C2_SPEED      400000  /* I2C speed and slave address 
*/
+#define CONFIG_SYS_FSL_I2C2_SLAVE      0x7F
+#define CONFIG_SYS_FSL_I2C2_OFFSET     0x3100
+#define CONFIG_SYS_I2C_ADAPTERS                {&fsl_i2c_adap[0], 
&fsl_i2c_adap[1]}
 
 /* I2C EEPROM */
 #define CONFIG_SYS_I2C_EEPROM_ADDR             0x50
diff --git a/include/configs/XPEDITE5370.h b/include/configs/XPEDITE5370.h
index 3bc0fe8..ab7efaf 100644
--- a/include/configs/XPEDITE5370.h
+++ b/include/configs/XPEDITE5370.h
@@ -237,14 +237,16 @@ extern unsigned long get_board_ddr_clk(unsigned long 
dummy);
 /*
  * I2C
  */
-#define CONFIG_FSL_I2C                         /* Use FSL common I2C driver */
-#define CONFIG_HARD_I2C                                /* I2C with hardware 
support */
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address 
*/
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-#define CONFIG_SYS_I2C_OFFSET          0x3000
-#define CONFIG_SYS_I2C2_OFFSET         0x3100
-#define CONFIG_I2C_MULTI_BUS
-#define CONFIG_I2C_CMD_TREE
+#define CONFIG_NEW_I2C
+#define CONFIG_SYS_NUM_I2C_ADAPTERS    2
+#define CONFIG_FSL_I2C
+#define CONFIG_SYS_FSL_I2C_SPEED       400000  /* I2C speed and slave address 
*/
+#define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
+#define CONFIG_SYS_FSL_I2C_OFFSET      0x3000
+#define CONFIG_SYS_FSL_I2C2_SPEED      400000  /* I2C speed and slave address 
*/
+#define CONFIG_SYS_FSL_I2C2_SLAVE      0x7F
+#define CONFIG_SYS_FSL_I2C2_OFFSET     0x3100
+#define CONFIG_SYS_I2C_ADAPTERS                {&fsl_i2c_adap[0], 
&fsl_i2c_adap[1]}
 
 /* PEX8518 slave I2C interface */
 #define CONFIG_SYS_I2C_PEX8518_ADDR    0x70
diff --git a/include/configs/barco.h b/include/configs/barco.h
index e00f84a..be9dcbc 100644
--- a/include/configs/barco.h
+++ b/include/configs/barco.h
@@ -197,6 +197,11 @@
 
 #ifdef CONFIG_SOFT_I2C
 #error "Soft I2C is not configured properly.  Please review!"
+#define CONFIG_NEW_I2C
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      50000
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0xFE
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
 #define I2C_PORT               3               /* Port A=0, B=1, C=2, D=3 */
 #define I2C_ACTIVE             (iop->pdir |=  0x00010000)
 #define I2C_TRISTATE           (iop->pdir &= ~0x00010000)
diff --git a/include/configs/bf533-ezkit.h b/include/configs/bf533-ezkit.h
index 48c0252..89b6036 100644
--- a/include/configs/bf533-ezkit.h
+++ b/include/configs/bf533-ezkit.h
@@ -168,7 +168,12 @@
  * I2C settings
  * By default PF1 is used as SDA and PF0 as SCL on the Stamp board
  */
-#define CONFIG_SOFT_I2C                1       /* I2C bit-banged */
+#define CONFIG_NEW_I2C
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      50000
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
 /*
  * Software (bit-bang) I2C driver configuration
  */
@@ -197,9 +202,6 @@
                                }
 #define I2C_DELAY      udelay(5)       /* 1/4 I2C clock duration */
 
-#define CONFIG_SYS_I2C_SPEED           50000
-#define CONFIG_SYS_I2C_SLAVE           0
-
 #define CONFIG_SYS_BOOTM_LEN           0x4000000       /* Large Image Length, 
set to 64 Meg */
 
 #define CONFIG_EBIU_SDRRC_VAL  0x398
diff --git a/include/configs/bf533-stamp.h b/include/configs/bf533-stamp.h
index ee41c7e..98b84b5 100644
--- a/include/configs/bf533-stamp.h
+++ b/include/configs/bf533-stamp.h
@@ -27,14 +27,6 @@
 /* FLASH/ETHERNET uses the same address range */
 #define SHARED_RESOURCES       1
 
-/* Is I2C bit-banged? */
-#define CONFIG_SOFT_I2C                1
-
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define PF_SCL                 PF3
-#define PF_SDA                 PF2
 
 /*
  * Video splash screen support
@@ -178,6 +170,41 @@
 #define CONFIG_SCLK_HZ         CONFIG_CLKIN_HZ
 #endif
 
+/* I2C */
+#define CONFIG_NEW_I2C
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      50000
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
+/*
+ * Software (bit-bang) I2C driver configuration
+ */
+#define PF_SCL                 PF3
+#define PF_SDA                 PF2
+#define I2C_INIT               (*pFIO_DIR |=  PF_SCL); asm("ssync;")
+#define I2C_ACTIVE             (*pFIO_DIR |=  PF_SDA); *pFIO_INEN &= ~PF_SDA; 
asm("ssync;")
+#define I2C_TRISTATE           (*pFIO_DIR &= ~PF_SDA); *pFIO_INEN |= PF_SDA; 
asm("ssync;")
+#define I2C_READ               ((volatile)(*pFIO_FLAG_D & PF_SDA) != 0); 
asm("ssync;")
+#define I2C_SDA(bit)   if(bit) { \
+                               *pFIO_FLAG_S = PF_SDA; \
+                               asm("ssync;"); \
+                               } \
+                       else    { \
+                               *pFIO_FLAG_C = PF_SDA; \
+                               asm("ssync;"); \
+                               }
+#define I2C_SCL(bit)   if(bit) { \
+                               *pFIO_FLAG_S = PF_SCL; \
+                               asm("ssync;"); \
+                               } \
+                       else    { \
+                               *pFIO_FLAG_C = PF_SCL; \
+                               asm("ssync;"); \
+                               }
+#define I2C_DELAY              udelay(5)       /* 1/4 I2C clock duration */
+
+
 /*
  * Command settings
  */
@@ -213,13 +240,6 @@
                "cp.b $(loadaddr) 0x20000000 $(filesize)\0" \
        ""
 
-#ifdef CONFIG_SOFT_I2C
-#if (!CONFIG_SOFT_I2C)
-#undef CONFIG_SOFT_I2C
-#endif
-#endif
-
-
 /*
  * BOOTP options
  */
@@ -244,7 +264,7 @@
 #define CONFIG_CMD_PING
 #endif
 
-#if (CONFIG_SOFT_I2C)
+#if defined(CONFIG_SOFT_I2C)
 #define CONFIG_CMD_I2C
 #endif
 
@@ -271,37 +291,6 @@
 
 #define CONFIG_LOADS_ECHO      1
 
-/*
- * I2C settings
- * By default PF2 is used as SDA and PF3 as SCL on the Stamp board
- */
-#if (CONFIG_SOFT_I2C)
-
-#define I2C_INIT               (*pFIO_DIR |=  PF_SCL); asm("ssync;")
-#define I2C_ACTIVE             (*pFIO_DIR |=  PF_SDA); *pFIO_INEN &= ~PF_SDA; 
asm("ssync;")
-#define I2C_TRISTATE           (*pFIO_DIR &= ~PF_SDA); *pFIO_INEN |= PF_SDA; 
asm("ssync;")
-#define I2C_READ               ((volatile)(*pFIO_FLAG_D & PF_SDA) != 0); 
asm("ssync;")
-#define I2C_SDA(bit)   if(bit) { \
-                               *pFIO_FLAG_S = PF_SDA; \
-                               asm("ssync;"); \
-                               } \
-                       else    { \
-                               *pFIO_FLAG_C = PF_SDA; \
-                               asm("ssync;"); \
-                               }
-#define I2C_SCL(bit)   if(bit) { \
-                               *pFIO_FLAG_S = PF_SCL; \
-                               asm("ssync;"); \
-                               } \
-                       else    { \
-                               *pFIO_FLAG_C = PF_SCL; \
-                               asm("ssync;"); \
-                               }
-#define I2C_DELAY              udelay(5)       /* 1/4 I2C clock duration */
-
-#define CONFIG_SYS_I2C_SPEED           50000
-#define CONFIG_SYS_I2C_SLAVE           0
-#endif /* CONFIG_SOFT_I2C */
 
 /*
  * Compact Flash settings
diff --git a/include/configs/debris.h b/include/configs/debris.h
index 4d65f6a..9a80a45 100644
--- a/include/configs/debris.h
+++ b/include/configs/debris.h
@@ -280,6 +280,11 @@
 
 #ifdef CONFIG_SOFT_I2C
 #error "Soft I2C is not configured properly.  Please review!"
+#define CONFIG_NEW_I2C
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      50000
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0x7F
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
 #define I2C_PORT               3               /* Port A=0, B=1, C=2, D=3 */
 #define I2C_ACTIVE             (iop->pdir |=  0x00010000)
 #define I2C_TRISTATE           (iop->pdir &= ~0x00010000)
diff --git a/include/configs/ep8260.h b/include/configs/ep8260.h
index d49d02f..0316f31 100644
--- a/include/configs/ep8260.h
+++ b/include/configs/ep8260.h
@@ -226,14 +226,20 @@
  * configuration items that the driver uses to drive the port pins.
  */
 #undef  CONFIG_HARD_I2C                        /* I2C with hardware support    
*/
-#define CONFIG_SOFT_I2C                1       /* I2C bit-banged               
*/
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
+
 #define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address  
*/
-#define CONFIG_SYS_I2C_SLAVE           0x7F
+#define CONFIG_SYS_I2C_SLAVE           0x7F    /* This is for HARD, must go */
 
 /*
  * Software (bit-bang) I2C driver configuration
  */
 #ifdef CONFIG_SOFT_I2C
+#define CONFIG_NEW_I2C
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      50000
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0xFE
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
 #define I2C_PORT       3               /* Port A=0, B=1, C=2, D=3 */
 #define I2C_ACTIVE     (iop->pdir |=  0x00010000)
 #define I2C_TRISTATE   (iop->pdir &= ~0x00010000)
diff --git a/include/configs/lwmon.h b/include/configs/lwmon.h
index d52a5e0..c80f43b 100644
--- a/include/configs/lwmon.h
+++ b/include/configs/lwmon.h
@@ -144,12 +144,12 @@
 
 /* enable I2C and select the hardware/software driver */
 #undef CONFIG_HARD_I2C                 /* I2C with hardware support    */
-#define        CONFIG_SOFT_I2C         1       /* I2C bit-banged               
*/
-
-#define CONFIG_SYS_I2C_SPEED           93000   /* 93 kHz is supposed to work   
*/
-#define CONFIG_SYS_I2C_SLAVE           0xFE
-
-#ifdef CONFIG_SOFT_I2C
+#define CONFIG_NEW_I2C
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      93000   /* 93 kHz is supposed to work */
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0xFE
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
 /*
  * Software (bit-bang) I2C driver configuration
  */
@@ -165,7 +165,6 @@
 #define I2C_SCL(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
                        else    immr->im_cpm.cp_pbdat &= ~PB_SCL
 #define I2C_DELAY      udelay(2)       /* 1/4 I2C clock duration */
-#endif /* CONFIG_SOFT_I2C */
 
 
 #define CONFIG_RTC_PCF8563             /* use Philips PCF8563 RTC      */
diff --git a/include/configs/mgcoge.h b/include/configs/mgcoge.h
index 233bee0..8d74ac2 100644
--- a/include/configs/mgcoge.h
+++ b/include/configs/mgcoge.h
@@ -62,6 +62,7 @@
  * must be unset.
  */
 #define        CONFIG_ETHER_ON_SCC             /* Ethernet is on SCC */
+#define CONFIG_NET_MULTI               /* ether_scc.c won't compile otherwise 
*/
 #undef CONFIG_ETHER_ON_FCC             /* Ethernet is not on FCC     */
 #undef CONFIG_ETHER_NONE               /* No external Ethernet   */
 
@@ -142,14 +143,21 @@
 
 /* enable I2C and select the hardware/software driver */
 #undef CONFIG_HARD_I2C                 /* I2C with hardware support    */
-#define        CONFIG_SOFT_I2C         1       /* I2C bit-banged               
*/
-#define CONFIG_SYS_I2C_SPEED           50000   /* I2C speed and slave address  
*/
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
+#define CONFIG_NEW_I2C
+#define CONFIG_SYS_NUM_I2C_ADAPTERS    1
+#define CONFIG_SYS_NUM_I2C_BUSSES      3
+#define CONFIG_SYS_I2C_MAX_HOPS                1
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      50000
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0x7F
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
+#define CONFIG_SYS_I2C_BUSSES  {       {0, {I2C_NULL_HOP}}, \
+                       {0, {{I2C_MUX_PCA9542, 0x70, 0}}}, \
+                       {0, {{I2C_MUX_PCA9542, 0x70, 1}}}}
 /*
  * Software (bit-bang) I2C driver configuration
  */
-
 #define I2C_PORT       3               /* Port A=0, B=1, C=2, D=3 */
 #define I2C_ACTIVE     (iop->pdir |=  0x00010000)
 #define I2C_TRISTATE   (iop->pdir &= ~0x00010000)
@@ -160,11 +168,10 @@
                        else    iop->pdat &= ~0x00020000
 #define I2C_DELAY      udelay(5)       /* 1/4 I2C clock duration */
 
-#define CONFIG_I2C_MULTI_BUS   1
-#define CONFIG_I2C_CMD_TREE    1
-#define CONFIG_SYS_MAX_I2C_BUS         2
+/* I2C_INIT_BOARD specific... */
 #define CONFIG_SYS_I2C_INIT_BOARD      1
-#define CONFIG_I2C_MUX         1
+#define SOFT_I2C_INIT_BOARD            i2c_init_board()
+#define CONFIG_SYS_I2C_SPEED           CONFIG_SYS_SOFT_I2C_SPEED
 
 /* EEprom support */
 #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
@@ -174,6 +181,7 @@
 #define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10
 
 /* Support the IVM EEprom */
+#define CONFIG_SYS_IVM_EEPROM_BUS_NUM  1
 #define        CONFIG_SYS_IVM_EEPROM_ADR       0x50
 #define CONFIG_SYS_IVM_EEPROM_MAX_LEN  0x400
 #define CONFIG_SYS_IVM_EEPROM_PAGE_LEN 0x100
@@ -184,7 +192,7 @@
 #define CONFIG_SYS_DTT_MAX_TEMP        70
 #define CONFIG_SYS_DTT_LOW_TEMP        -30
 #define CONFIG_SYS_DTT_HYSTERESIS      3
-#define CONFIG_SYS_DTT_BUS_NUM         (CONFIG_SYS_MAX_I2C_BUS)
+#define CONFIG_SYS_DTT_BUS_NUM         2
 
 #define CONFIG_SYS_IMMR                0xF0000000
 
diff --git a/include/configs/mgsuvd.h b/include/configs/mgsuvd.h
index f53b6d3..3ea0725 100644
--- a/include/configs/mgsuvd.h
+++ b/include/configs/mgsuvd.h
@@ -265,11 +265,18 @@
 
 /* enable I2C and select the hardware/software driver */
 #undef CONFIG_HARD_I2C                 /* I2C with hardware support    */
-#define        CONFIG_SOFT_I2C         1       /* I2C bit-banged               
*/
-#define CONFIG_SYS_I2C_SPEED           50000   /* I2C speed and slave address  
*/
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-#define I2C_SOFT_DECLARATIONS
-
+#define CONFIG_NEW_I2C
+#define CONFIG_SYS_NUM_I2C_ADAPTERS    1
+#define CONFIG_SYS_NUM_I2C_BUSSES      3
+#define CONFIG_SYS_I2C_MAX_HOPS                1
+#define CONFIG_SOFT_I2C                        /* I2C bit-banged */
+#define I2C_SOFT_DECLARATIONS          I2C_SOFT_DEFS
+#define CONFIG_SYS_SOFT_I2C_SPEED      50000
+#define CONFIG_SYS_SOFT_I2C_SLAVE      0x7F
+#define CONFIG_SYS_I2C_ADAPTERS                {&soft_i2c_adap[0]}
+#define CONFIG_SYS_I2C_BUSSES  {       {0, {I2C_NULL_HOP}}, \
+                       {0, {{I2C_MUX_PCA9542, 0x70, 0}}}, \
+                       {0, {{I2C_MUX_PCA9542, 0x70, 1}}}}
 /*
  * Software (bit-bang) I2C driver configuration
  */
@@ -298,11 +305,10 @@
                        }
 #define I2C_DELAY      udelay(50)      /* 1/4 I2C clock duration */
 
-#define CONFIG_I2C_MULTI_BUS   1
-#define CONFIG_I2C_CMD_TREE    1
-#define CONFIG_SYS_MAX_I2C_BUS         2
+/* I2C_INIT_BOARD specific... */
 #define CONFIG_SYS_I2C_INIT_BOARD      1
-#define CONFIG_I2C_MUX         1
+#define SOFT_I2C_INIT_BOARD            i2c_init_board()
+#define CONFIG_SYS_I2C_SPEED           CONFIG_SYS_SOFT_I2C_SPEED
 
 /* EEprom support */
 #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
@@ -312,6 +318,7 @@
 #define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10
 
 /* Support the IVM EEprom */
+#define CONFIG_SYS_IVM_EEPROM_BUS_NUM  1
 #define        CONFIG_SYS_IVM_EEPROM_ADR       0x50
 #define CONFIG_SYS_IVM_EEPROM_MAX_LEN  0x400
 #define CONFIG_SYS_IVM_EEPROM_PAGE_LEN 0x100
@@ -322,6 +329,6 @@
 #define CONFIG_SYS_DTT_MAX_TEMP        70
 #define CONFIG_SYS_DTT_LOW_TEMP        -30
 #define CONFIG_SYS_DTT_HYSTERESIS      3
-#define CONFIG_SYS_DTT_BUS_NUM         (CONFIG_SYS_MAX_I2C_BUS)
+#define CONFIG_SYS_DTT_BUS_NUM         2
 
 #endif /* __CONFIG_H */
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to