
This enables new i2c framework on Trats board. Hardware s3c24x0 i2c driver is used instead of software i2c.
Signed-off-by: Piotr Wilczek p.wilczek@samsung.com Signed-off-by: Kyungmin Park kyungmin.park@samsung.com CC: Minkyu Kang mk7.kang@samsung.com --- Changes for v2: - hardware i2c outputs configuration moved to i2c_init_board(void) function - used define instead of fix number on i2c_set_bus_num(); - keep soft_i2c_adap[0] - changed i2c related names to s3c24x0 driver specfic: CONFIG_MAX_I2C_NUM -> CONFIG_SYS_I2C_S3C24X0_MAX_NUM CONFIG_DRIVER_S3C24X0_I2C -> CONFIG_SYS_I2C_S3C24X0 CONFIG_SYS_I2C_SPEED/SLAVE -> CONFIG_SYS_I2C_S3C24X0_SPEED/SLAVE - removed CONFIG_SYS_I2C_BUSSES --- board/samsung/trats/trats.c | 17 +++++++++++++---- include/configs/trats.h | 35 +++++++++++++++++++---------------- 2 files changed, 32 insertions(+), 20 deletions(-)
diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c index e11a892..393a910 100644 --- a/board/samsung/trats/trats.c +++ b/board/samsung/trats/trats.c @@ -24,8 +24,10 @@ */
#include <common.h> +#include <i2c.h> #include <lcd.h> #include <asm/io.h> +#include <asm/arch/pinmux.h> #include <asm/arch/cpu.h> #include <asm/arch/gpio.h> #include <asm/arch/mmc.h> @@ -77,14 +79,17 @@ int board_init(void)
void i2c_init_board(void) { - struct exynos4_gpio_part1 *gpio1 = - (struct exynos4_gpio_part1 *)samsung_get_base_gpio_part1(); + int err; struct exynos4_gpio_part2 *gpio2 = (struct exynos4_gpio_part2 *)samsung_get_base_gpio_part2();
/* I2C_5 -> PMIC */ - s5p_gpio_direction_output(&gpio1->b, 7, 1); - s5p_gpio_direction_output(&gpio1->b, 6, 1); + err = exynos_pinmux_config(I2C_5, PINMUX_FLAG_NONE); + if (err) { + debug("I2C%d not configured\n", (I2C_5)); + return; + } + /* I2C_9 -> FG */ s5p_gpio_direction_output(&gpio2->y4, 0, 1); s5p_gpio_direction_output(&gpio2->y4, 1, 1); @@ -415,6 +420,8 @@ static int lcd_power(void) int ret = 0; struct pmic *p = get_pmic();
+ i2c_set_bus_num(CONFIG_SYS_I2C_PMIC_BUS_NUM); + if (pmic_probe(p)) return 0;
@@ -475,6 +482,8 @@ static int mipi_power(void) int ret = 0; struct pmic *p = get_pmic();
+ i2c_set_bus_num(CONFIG_SYS_I2C_PMIC_BUS_NUM); + if (pmic_probe(p)) return 0;
diff --git a/include/configs/trats.h b/include/configs/trats.h index 106fd37..1083e9b 100644 --- a/include/configs/trats.h +++ b/include/configs/trats.h @@ -33,6 +33,7 @@ #define CONFIG_SAMSUNG /* in a SAMSUNG core */ #define CONFIG_S5P /* which is in a S5P Family */ #define CONFIG_EXYNOS4210 /* which is in a EXYNOS4210 */ +#define CONFIG_EXYNOS4 #define CONFIG_TRATS /* working with TRATS */ #define CONFIG_TIZEN /* TIZEN lib */
@@ -211,31 +212,33 @@ #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_LOAD_ADDR - GENERATED_GBL_DATA_SIZE) #define CONFIG_SYS_CACHELINE_SIZE 32
- #define CONFIG_SYS_I2C #define CONFIG_SYS_I2C_SOFT /* I2C bit-banged */ #define CONFIG_SYS_I2C_SOFT_SPEED 50000 #define CONFIG_SYS_I2C_SOFT_SLAVE 0xFE -#define CONFIG_SYS_I2C_ADAPTERS {&soft_i2c_adap[0]} #define CONFIG_SOFT_I2C_READ_REPEATED_START #define CONFIG_SYS_I2C_INIT_BOARD -#define CONFIG_I2C_MULTI_BUS -#define CONFIG_SOFT_I2C_MULTI_BUS -#define CONFIG_SYS_MAX_I2C_BUS 15 - -#include <asm/arch/gpio.h>
-/* I2C PMIC */ -#define CONFIG_SOFT_I2C_I2C5_SCL exynos4_gpio_part1_get_nr(b, 7) -#define CONFIG_SOFT_I2C_I2C5_SDA exynos4_gpio_part1_get_nr(b, 6) +#define CONFIG_SYS_I2C_S3C24X0 +#define CONFIG_SYS_I2C_S3C24X0_MAX_NUM 8 +#define CONFIG_SYS_I2C_S3C24X0_SPEED 100000 +#define CONFIG_SYS_I2C_S3C24X0_SLAVE 0x0 +#define CONFIG_CMD_I2C + +#define CONFIG_SYS_I2C_ADAPTERS {&soft_i2c_adap[0], \ + &s3c24x0_i2c_adap[5], \ + } +#define CONFIG_SYS_NUM_I2C_ADAPTERS 2 +#define CONFIG_SYS_I2C_BUSSES {{0, {{{0, "SOFT"}, 0x00, 0} } }, \ + {1, {{{0, "S3C24X0"}, 0x00, 5} } }, \ + } +#define CONFIG_SYS_NUM_I2C_BUSSES 2 +#define CONFIG_SYS_I2C_PMIC_BUS_NUM 1
-/* I2C FG */ -#define CONFIG_SOFT_I2C_I2C9_SCL exynos4_gpio_part2_get_nr(y4, 1) -#define CONFIG_SOFT_I2C_I2C9_SDA exynos4_gpio_part2_get_nr(y4, 0) +#include <asm/arch/gpio.h>
-#define CONFIG_SOFT_I2C_GPIO_SCL get_multi_scl_pin() -#define CONFIG_SOFT_I2C_GPIO_SDA get_multi_sda_pin() -#define I2C_INIT multi_i2c_init() +#define CONFIG_SOFT_I2C_GPIO_SCL exynos4_gpio_part2_get_nr(y4, 1) +#define CONFIG_SOFT_I2C_GPIO_SDA exynos4_gpio_part2_get_nr(y4, 0)
#define CONFIG_PMIC #define CONFIG_PMIC_I2C