From patchwork Tue Nov 20 12:19:07 2012
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: [U-Boot,v2,6/6] arm:trats: add support for new I2C framework
Date: Tue, 20 Nov 2012 02:19:07 -0000
From: Piotr Wilczek
X-Patchwork-Id: 200316
Message-Id: <1353413947-25976-7-git-send-email-p.wilczek@samsung.com>
To: u-boot@lists.denx.de
Cc: Stephen Warren ,
Piotr Wilczek ,
Kyungmin Park ,
Tom Rini , Heiko Schocher
This enables new i2c framework on Trats board.
Hardware s3c24x0 i2c driver is used instead of software i2c.
Signed-off-by: Piotr Wilczek
Signed-off-by: Kyungmin Park
CC: Minkyu Kang
---
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
+#include
#include
#include
+#include
#include
#include
#include
@@ -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
-/* 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
-#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