i2c:samsung: Adjust Trats, GONI and Universal_c210 boards to work with new I2C framework
authorŁukasz Majewski <l.majewski@samsung.com>
Fri, 16 Aug 2013 13:33:33 +0000 (15:33 +0200)
committerHeiko Schocher <hs@denx.de>
Tue, 20 Aug 2013 09:15:32 +0000 (11:15 +0200)
New I2C framework, introduced after v2013.07 final release, imposed I2C
code adjustment for some Samsung boards - namely Trats, GONI and Universal_c210.

Those boards were using schematic based I2C enumeration (I2C_5, I2C_9).
However, new I2C framework imposes usage of logical I2C adapters numbering
(e.g. I2C_0, I2C_1, etc).

Additionally, I2C_GET_* macros were replaced with i2c_*_bus_num() functions.

Trats board gained definition of second soft I2C adapter.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Heiko Schocher <hs@denx.de>
board/samsung/common/multi_i2c.c
board/samsung/goni/goni.c
board/samsung/trats/trats.c
board/samsung/universal_c210/universal.c
include/configs/trats.h

index 4fce987540d150f0fa9b56f181deb6a6c89a5194..084858defa39e1da3cbdc853397fa77688edfae7 100644 (file)
 /* 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);
@@ -28,13 +27,12 @@ int get_multi_scl_pin(void)
 
 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);
index c05801d3fe92255fa6c45414d525f2b7024bc7eb..5b3d6ef853bfa11a5cb3a6d7ccb6013f595188d3 100644 (file)
@@ -32,7 +32,11 @@ int power_init_board(void)
 {
        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;
 
index c8698f30df8ca3992d18133dd7f60fb581146829..7f61d17abb282a749c3c36caa4a9b964d8bb72c9 100644 (file)
@@ -61,10 +61,10 @@ void i2c_init_board(void)
        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);
 }
@@ -282,10 +282,17 @@ int power_init_board(void)
        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;
index 2e1dba6a48d6eba0e311cd9da5d8857e9806430d..54d0e1e0e3b22721795ae77d6403a415dfca2bae 100644 (file)
@@ -45,6 +45,10 @@ int power_init_board(void)
 {
        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;
index 9b6aac96e675f7c6a0c3f8939d3a4c4abe857f6d..24ea06b92734718ab831bfcba6fab99273e049d1 100644 (file)
 #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