/* Handle multiple I2C buses instances */
 int get_multi_scl_pin(void)
 {
-       unsigned int bus = I2C_GET_BUS();
+       unsigned int bus = i2c_get_bus_num();
 
        switch (bus) {
-       case I2C_0: /* I2C_0 definition - compatibility layer */
-       case I2C_5:
+       case I2C_0:
                return CONFIG_SOFT_I2C_I2C5_SCL;
-       case I2C_9:
+       case I2C_1:
                return CONFIG_SOFT_I2C_I2C9_SCL;
        default:
                printf("I2C_%d not supported!\n", bus);
 
 int get_multi_sda_pin(void)
 {
-       unsigned int bus = I2C_GET_BUS();
+       unsigned int bus = i2c_get_bus_num();
 
        switch (bus) {
-       case I2C_0: /* I2C_0 definition - compatibility layer */
-       case I2C_5:
+       case I2C_0:
                return CONFIG_SOFT_I2C_I2C5_SDA;
-       case I2C_9:
+       case I2C_1:
                return CONFIG_SOFT_I2C_I2C9_SDA;
        default:
                printf("I2C_%d not supported!\n", bus);
 
 {
        int ret;
 
-       ret = pmic_init(I2C_5);
+       /*
+        * For PMIC the I2C bus is named as I2C5, but it is connected
+        * to logical I2C adapter 0
+        */
+       ret = pmic_init(I2C_0);
        if (ret)
                return ret;
 
 
        struct exynos4_gpio_part2 *gpio2 =
                (struct exynos4_gpio_part2 *)samsung_get_base_gpio_part2();
 
-       /* I2C_5 -> PMIC */
+       /* I2C_5 -> PMIC -> Adapter 0 */
        s5p_gpio_direction_output(&gpio1->b, 7, 1);
        s5p_gpio_direction_output(&gpio1->b, 6, 1);
-       /* I2C_9 -> FG */
+       /* I2C_9 -> FG -> Adapter 1 */
        s5p_gpio_direction_output(&gpio2->y4, 0, 1);
        s5p_gpio_direction_output(&gpio2->y4, 1, 1);
 }
        struct power_battery *pb;
        struct pmic *p_fg, *p_chrg, *p_muic, *p_bat;
 
-       ret = pmic_init(I2C_5);
+       /*
+        * For PMIC/MUIC the I2C bus is named as I2C5, but it is connected
+        * to logical I2C adapter 0
+        *
+        * The FUEL_GAUGE is marked as I2C9 on the schematic, but connected
+        * to logical I2C adapter 1
+        */
+       ret = pmic_init(I2C_0);
        ret |= pmic_init_max8997();
-       ret |= power_fg_init(I2C_9);
-       ret |= power_muic_init(I2C_5);
+       ret |= power_fg_init(I2C_1);
+       ret |= power_muic_init(I2C_0);
        ret |= power_bat_init(0);
        if (ret)
                return ret;
 
 {
        int ret;
 
+       /*
+        * For PMIC the I2C bus is named as I2C5, but it is connected
+        * to logical I2C adapter 0
+        */
        ret = pmic_init(I2C_5);
        if (ret)
                return ret;
 
 #define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
 #define CONFIG_SYS_I2C_SOFT_SPEED      50000
 #define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
+#define I2C_SOFT_DECLARATIONS2
+#define CONFIG_SYS_I2C_SOFT_SPEED_2     50000
+#define CONFIG_SYS_I2C_SOFT_SLAVE_2     0x7F
 #define CONFIG_SOFT_I2C_READ_REPEATED_START
 #define CONFIG_SYS_I2C_INIT_BOARD
 #define CONFIG_I2C_MULTI_BUS