All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot]  [PATCH 0/2] i2c:gpio:s5p I2C GPIO rework
@ 2011-07-11  8:18 Lukasz Majewski
  2011-07-11  8:18 ` [U-Boot] [PATCH 1/2] gpio:s5p s5p_ suffix add for GPIO functions Lukasz Majewski
                   ` (5 more replies)
  0 siblings, 6 replies; 24+ messages in thread
From: Lukasz Majewski @ 2011-07-11  8:18 UTC (permalink / raw)
  To: u-boot

Below patches are supposed to adapt S5P processor's GPIO
subsystem to soft_i2c software GPIO framework.

For this purpose some renaming has been performed.
Patch tested at GONI reference target.

Lukasz Majewski (2):
  gpio:samsung s5p_ suffix add for GPIO functions
  i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)

 arch/arm/include/asm/arch-s5pc1xx/gpio.h |   18 +++++----
 arch/arm/include/asm/arch-s5pc2xx/gpio.h |   16 ++++----
 board/samsung/goni/goni.c                |   63 +++++++++++++++++++++++++++--
 board/samsung/smdkc100/smdkc100.c        |    2 +-
 board/samsung/smdkv310/smdkv310.c        |    8 ++--
 drivers/gpio/s5p_gpio.c                  |   20 +++++-----
 include/configs/s5p_goni.h               |   13 ++++++
 7 files changed, 104 insertions(+), 36 deletions(-)

-- 
1.7.2.3

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [U-Boot]  [PATCH 1/2] gpio:s5p s5p_ suffix add for GPIO functions
  2011-07-11  8:18 [U-Boot] [PATCH 0/2] i2c:gpio:s5p I2C GPIO rework Lukasz Majewski
@ 2011-07-11  8:18 ` Lukasz Majewski
  2011-07-15  9:36   ` Minkyu Kang
                     ` (2 more replies)
  2011-07-11  8:18 ` [U-Boot] [PATCH 2/2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c) Lukasz Majewski
                   ` (4 subsequent siblings)
  5 siblings, 3 replies; 24+ messages in thread
From: Lukasz Majewski @ 2011-07-11  8:18 UTC (permalink / raw)
  To: u-boot

This change is driven by need of general gpio_* functions,
which as their parameter are accepting the GPIO pin number, NOT
block and pin.

This makes the code alike to omap, and allows for using I2C software
generic framework.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
---
 arch/arm/include/asm/arch-s5pc1xx/gpio.h |   16 ++++++++--------
 arch/arm/include/asm/arch-s5pc2xx/gpio.h |   16 ++++++++--------
 board/samsung/goni/goni.c                |    8 ++++----
 board/samsung/smdkc100/smdkc100.c        |    2 +-
 board/samsung/smdkv310/smdkv310.c        |    8 ++++----
 drivers/gpio/s5p_gpio.c                  |   20 ++++++++++----------
 6 files changed, 35 insertions(+), 35 deletions(-)

diff --git a/arch/arm/include/asm/arch-s5pc1xx/gpio.h b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
index 485b9bf..903de9c 100644
--- a/arch/arm/include/asm/arch-s5pc1xx/gpio.h
+++ b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
@@ -126,14 +126,14 @@ struct s5pc110_gpio {
 };
 
 /* functions */
-void gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg);
-void gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en);
-void gpio_direction_input(struct s5p_gpio_bank *bank, int gpio);
-void gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en);
-unsigned int gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
-void gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
-void gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
-void gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
+void s5p_gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg);
+void s5p_gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en);
+void s5p_gpio_direction_input(struct s5p_gpio_bank *bank, int gpio);
+void s5p_gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en);
+unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
+void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
+void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
+void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
 #endif
 
 /* Pin configurations */
diff --git a/arch/arm/include/asm/arch-s5pc2xx/gpio.h b/arch/arm/include/asm/arch-s5pc2xx/gpio.h
index 38303e4..8db5895 100644
--- a/arch/arm/include/asm/arch-s5pc2xx/gpio.h
+++ b/arch/arm/include/asm/arch-s5pc2xx/gpio.h
@@ -80,14 +80,14 @@ struct s5pc210_gpio_part3 {
 };
 
 /* functions */
-void gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg);
-void gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en);
-void gpio_direction_input(struct s5p_gpio_bank *bank, int gpio);
-void gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en);
-unsigned int gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
-void gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
-void gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
-void gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
+void s5p_gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg);
+void s5p_gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en);
+void s5p_gpio_direction_input(struct s5p_gpio_bank *bank, int gpio);
+void s5p_gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en);
+unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
+void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
+void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
+void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
 #endif
 
 /* Pin configurations */
diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c
index 581935d..e24cd29 100644
--- a/board/samsung/goni/goni.c
+++ b/board/samsung/goni/goni.c
@@ -73,7 +73,7 @@ int board_mmc_init(bd_t *bis)
 	int i;
 
 	/* MASSMEMORY_EN: XMSMDATA7: GPJ2[7] output high */
-	gpio_direction_output(&s5pc110_gpio->j2, 7, 1);
+	s5p_gpio_direction_output(&s5pc110_gpio->j2, 7, 1);
 
 	/*
 	 * MMC0 GPIO
@@ -86,11 +86,11 @@ int board_mmc_init(bd_t *bis)
 		if (i == 2)
 			continue;
 		/* GPG0[0:6] special function 2 */
-		gpio_cfg_pin(&s5pc110_gpio->g0, i, 0x2);
+		s5p_gpio_cfg_pin(&s5pc110_gpio->g0, i, 0x2);
 		/* GPG0[0:6] pull disable */
-		gpio_set_pull(&s5pc110_gpio->g0, i, GPIO_PULL_NONE);
+		s5p_gpio_set_pull(&s5pc110_gpio->g0, i, GPIO_PULL_NONE);
 		/* GPG0[0:6] drv 4x */
-		gpio_set_drv(&s5pc110_gpio->g0, i, GPIO_DRV_4X);
+		s5p_gpio_set_drv(&s5pc110_gpio->g0, i, GPIO_DRV_4X);
 	}
 
 	return s5p_mmc_init(0, 4);
diff --git a/board/samsung/smdkc100/smdkc100.c b/board/samsung/smdkc100/smdkc100.c
index 1ad68b9..c41e610 100644
--- a/board/samsung/smdkc100/smdkc100.c
+++ b/board/samsung/smdkc100/smdkc100.c
@@ -41,7 +41,7 @@ static void smc9115_pre_init(void)
 		(struct s5pc100_gpio *)samsung_get_base_gpio();
 
 	/* gpio configuration GPK0CON */
-	gpio_cfg_pin(&gpio->k0, CONFIG_ENV_SROM_BANK, GPIO_FUNC(2));
+	s5p_gpio_cfg_pin(&gpio->k0, CONFIG_ENV_SROM_BANK, GPIO_FUNC(2));
 
 	/* Ethernet needs bus width of 16 bits */
 	smc_bw_conf = SMC_DATA16_WIDTH(CONFIG_ENV_SROM_BANK);
diff --git a/board/samsung/smdkv310/smdkv310.c b/board/samsung/smdkv310/smdkv310.c
index acf9ee7..173520e 100644
--- a/board/samsung/smdkv310/smdkv310.c
+++ b/board/samsung/smdkv310/smdkv310.c
@@ -37,7 +37,7 @@ static void smc9115_pre_init(void)
 	u32 smc_bw_conf, smc_bc_conf;
 
 	/* gpio configuration GPK0CON */
-	gpio_cfg_pin(&gpio2->y0, CONFIG_ENV_SROM_BANK, GPIO_FUNC(2));
+	s5p_gpio_cfg_pin(&gpio2->y0, CONFIG_ENV_SROM_BANK, GPIO_FUNC(2));
 
 	/* Ethernet needs bus width of 16 bits */
 	smc_bw_conf = SROMC_DATA16_WIDTH(CONFIG_ENV_SROM_BANK);
@@ -116,10 +116,10 @@ int board_mmc_init(bd_t *bis)
 	 */
 	for (i = 0; i < 7; i++) {
 		/* GPK2[0:6] special function 2 */
-		gpio_cfg_pin(&gpio2->k2, i, GPIO_FUNC(0x2));
+		s5p_gpio_cfg_pin(&gpio2->k2, i, GPIO_FUNC(0x2));
 
 		/* GPK2[0:6] drv 4x */
-		gpio_set_drv(&gpio2->k2, i, GPIO_DRV_4X);
+		s5p_gpio_set_drv(&gpio2->k2, i, GPIO_DRV_4X);
 
 		/* GPK2[0:1] pull disable */
 		if (i == 0 || i == 1) {
@@ -128,7 +128,7 @@ int board_mmc_init(bd_t *bis)
 		}
 
 		/* GPK2[2:6] pull up */
-		gpio_set_pull(&gpio2->k2, i, GPIO_PULL_UP);
+		s5p_gpio_set_pull(&gpio2->k2, i, GPIO_PULL_UP);
 	}
 	err = s5p_mmc_init(2, 4);
 	return err;
diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c
index a1bcddc..2043859 100644
--- a/drivers/gpio/s5p_gpio.c
+++ b/drivers/gpio/s5p_gpio.c
@@ -36,7 +36,7 @@
 #define RATE_MASK(x)		(0x1 << (x + 16))
 #define RATE_SET(x)		(0x1 << (x + 16))
 
-void gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg)
+void s5p_gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg)
 {
 	unsigned int value;
 
@@ -46,11 +46,11 @@ void gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg)
 	writel(value, &bank->con);
 }
 
-void gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en)
+void s5p_gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en)
 {
 	unsigned int value;
 
-	gpio_cfg_pin(bank, gpio, GPIO_OUTPUT);
+	s5p_gpio_cfg_pin(bank, gpio, GPIO_OUTPUT);
 
 	value = readl(&bank->dat);
 	value &= ~DAT_MASK(gpio);
@@ -59,12 +59,12 @@ void gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en)
 	writel(value, &bank->dat);
 }
 
-void gpio_direction_input(struct s5p_gpio_bank *bank, int gpio)
+void s5p_gpio_direction_input(struct s5p_gpio_bank *bank, int gpio)
 {
-	gpio_cfg_pin(bank, gpio, GPIO_INPUT);
+	s5p_gpio_cfg_pin(bank, gpio, GPIO_INPUT);
 }
 
-void gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en)
+void s5p_gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en)
 {
 	unsigned int value;
 
@@ -75,7 +75,7 @@ void gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en)
 	writel(value, &bank->dat);
 }
 
-unsigned int gpio_get_value(struct s5p_gpio_bank *bank, int gpio)
+unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio)
 {
 	unsigned int value;
 
@@ -83,7 +83,7 @@ unsigned int gpio_get_value(struct s5p_gpio_bank *bank, int gpio)
 	return !!(value & DAT_MASK(gpio));
 }
 
-void gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode)
+void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode)
 {
 	unsigned int value;
 
@@ -102,7 +102,7 @@ void gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode)
 	writel(value, &bank->pull);
 }
 
-void gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode)
+void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode)
 {
 	unsigned int value;
 
@@ -123,7 +123,7 @@ void gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode)
 	writel(value, &bank->drv);
 }
 
-void gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode)
+void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode)
 {
 	unsigned int value;
 
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH 2/2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
  2011-07-11  8:18 [U-Boot] [PATCH 0/2] i2c:gpio:s5p I2C GPIO rework Lukasz Majewski
  2011-07-11  8:18 ` [U-Boot] [PATCH 1/2] gpio:s5p s5p_ suffix add for GPIO functions Lukasz Majewski
@ 2011-07-11  8:18 ` Lukasz Majewski
  2011-07-15  9:52   ` Minkyu Kang
  2011-07-20  8:35 ` [U-Boot] [PATCH v2] " Lukasz Majewski
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 24+ messages in thread
From: Lukasz Majewski @ 2011-07-11  8:18 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
---
 arch/arm/include/asm/arch-s5pc1xx/gpio.h |    2 +
 board/samsung/goni/goni.c                |   55 +++++++++++++++++++++++++++++-
 include/configs/s5p_goni.h               |   13 +++++++
 3 files changed, 69 insertions(+), 1 deletions(-)

diff --git a/arch/arm/include/asm/arch-s5pc1xx/gpio.h b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
index 903de9c..108fb64 100644
--- a/arch/arm/include/asm/arch-s5pc1xx/gpio.h
+++ b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
@@ -155,4 +155,6 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
 #define GPIO_DRV_FAST	0x0
 #define GPIO_DRV_SLOW	0x1
 
+/* GPIO pins per bank  */
+#define GPIO_PER_BANK 8
 #endif
diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c
index e24cd29..dbbd7ed 100644
--- a/board/samsung/goni/goni.c
+++ b/board/samsung/goni/goni.c
@@ -1,7 +1,8 @@
 /*
- *  Copyright (C) 2008-2009 Samsung Electronics
+ *  Copyright (C) 2008-2011 Samsung Electronics
  *  Minkyu Kang <mk7.kang@samsung.com>
  *  Kyungmin Park <kyungmin.park@samsung.com>
+ *  Lukasz Majewski <l.majewski@samsung.com>
  *
  * See file CREDITS for list of people who contributed to this
  * project.
@@ -96,3 +97,55 @@ int board_mmc_init(bd_t *bis)
 	return s5p_mmc_init(0, 4);
 }
 #endif
+
+#ifdef CONFIG_SOFT_I2C
+
+enum { I2C_PMIC, I2C_NUM, };
+
+void i2c_init_board(void) {}
+
+int s5p_gpio_get_nr(void *gp_ptr, int gpio)
+{
+	unsigned int offset = gp_ptr - (void *) s5pc110_gpio;
+	offset /= sizeof(struct s5p_gpio_bank);
+
+	return (offset * GPIO_PER_BANK) + gpio;
+}
+
+struct s5p_gpio_bank *s5p_gpio_get_bank(int nr)
+{
+	int bank = nr / GPIO_PER_BANK;
+	bank *= sizeof(struct s5p_gpio_bank);
+
+	return (struct s5p_gpio_bank *) ((void *) s5pc110_gpio + bank);
+}
+
+inline int s5p_gpio_get_pin(int nr)
+{
+	return nr % GPIO_PER_BANK;
+}
+
+inline int gpio_direction_input(int nr)
+{
+	s5p_gpio_direction_input(s5p_gpio_get_bank(nr),
+				 s5p_gpio_get_pin(nr));
+}
+
+inline int gpio_direction_output(int nr, int value)
+{
+	s5p_gpio_direction_output(s5p_gpio_get_bank(nr),
+				  s5p_gpio_get_pin(nr), value);
+}
+
+inline int gpio_get_value(int nr)
+{
+	return (int) s5p_gpio_get_value(s5p_gpio_get_bank(nr),
+					s5p_gpio_get_pin(nr));
+}
+
+inline void gpio_set_value(int nr, int value)
+{
+	s5p_gpio_set_value(s5p_gpio_get_bank(nr),
+			   s5p_gpio_get_pin(nr), value);
+}
+#endif
diff --git a/include/configs/s5p_goni.h b/include/configs/s5p_goni.h
index 010428b..ee87927 100644
--- a/include/configs/s5p_goni.h
+++ b/include/configs/s5p_goni.h
@@ -224,4 +224,17 @@
 
 #define CONFIG_SYS_INIT_SP_ADDR	(CONFIG_SYS_LOAD_ADDR - 0x1000000)
 
+#include <asm/arch/gpio.h>
+/*
+ * I2C Settings
+ */
+#define S5PC110_GPIO_J3        (S5PC110_GPIO_BASE + 0x2C0)
+#define CONFIG_SOFT_I2C_GPIO_SCL s5p_gpio_get_nr(S5PC110_GPIO_J3, 3)
+#define CONFIG_SOFT_I2C_GPIO_SDA s5p_gpio_get_nr(S5PC110_GPIO_J3, 0)
+
+#define CONFIG_SOFT_I2C		1
+#define CONFIG_SYS_I2C_INIT_BOARD
+#define CONFIG_SYS_I2C_SPEED	50000
+#define CONFIG_I2C_MULTI_BUS
+#define CONFIG_SYS_MAX_I2C_BUS	7
 #endif	/* __CONFIG_H */
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH 1/2] gpio:s5p s5p_ suffix add for GPIO functions
  2011-07-11  8:18 ` [U-Boot] [PATCH 1/2] gpio:s5p s5p_ suffix add for GPIO functions Lukasz Majewski
@ 2011-07-15  9:36   ` Minkyu Kang
  2011-07-15 10:16   ` [U-Boot] [RESEND PATCH] gpio:samsung " Lukasz Majewski
  2011-08-10  9:18   ` [U-Boot] [PATCH] gpio:samsung: s5p_ suffix add for GPIO functions (C210_universal) Lukasz Majewski
  2 siblings, 0 replies; 24+ messages in thread
From: Minkyu Kang @ 2011-07-15  9:36 UTC (permalink / raw)
  To: u-boot

Dear Lukasz Majewski,

On 11 July 2011 17:18, Lukasz Majewski <l.majewski@samsung.com> wrote:
> This change is driven by need of general gpio_* functions,
> which as their parameter are accepting the GPIO pin number, NOT
> block and pin.
>
> This makes the code alike to omap, and allows for using I2C software
> generic framework.
>
> Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> ---
> ?arch/arm/include/asm/arch-s5pc1xx/gpio.h | ? 16 ++++++++--------
> ?arch/arm/include/asm/arch-s5pc2xx/gpio.h | ? 16 ++++++++--------
> ?board/samsung/goni/goni.c ? ? ? ? ? ? ? ?| ? ?8 ++++----
> ?board/samsung/smdkc100/smdkc100.c ? ? ? ?| ? ?2 +-
> ?board/samsung/smdkv310/smdkv310.c ? ? ? ?| ? ?8 ++++----
> ?drivers/gpio/s5p_gpio.c ? ? ? ? ? ? ? ? ?| ? 20 ++++++++++----------
> ?6 files changed, 35 insertions(+), 35 deletions(-)

Please make it single patch. separate from i2c patch.

Thanks
Minkyu Kang
-- 
from. prom.
www.promsoft.net

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH 2/2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
  2011-07-11  8:18 ` [U-Boot] [PATCH 2/2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c) Lukasz Majewski
@ 2011-07-15  9:52   ` Minkyu Kang
  2011-07-15 10:50     ` Lukasz Majewski
  0 siblings, 1 reply; 24+ messages in thread
From: Minkyu Kang @ 2011-07-15  9:52 UTC (permalink / raw)
  To: u-boot

Dear Lukasz Majewski,

On 11 July 2011 17:18, Lukasz Majewski <l.majewski@samsung.com> wrote:
> Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> ---
> ?arch/arm/include/asm/arch-s5pc1xx/gpio.h | ? ?2 +
> ?board/samsung/goni/goni.c ? ? ? ? ? ? ? ?| ? 55 +++++++++++++++++++++++++++++-
> ?include/configs/s5p_goni.h ? ? ? ? ? ? ? | ? 13 +++++++
> ?3 files changed, 69 insertions(+), 1 deletions(-)

You missing commit message.

>
> diff --git a/arch/arm/include/asm/arch-s5pc1xx/gpio.h b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
> index 903de9c..108fb64 100644
> --- a/arch/arm/include/asm/arch-s5pc1xx/gpio.h
> +++ b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
> @@ -155,4 +155,6 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
> ?#define GPIO_DRV_FAST ?0x0
> ?#define GPIO_DRV_SLOW ?0x1
>
> +/* GPIO pins per bank ?*/
> +#define GPIO_PER_BANK 8
> ?#endif
> diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c
> index e24cd29..dbbd7ed 100644
> --- a/board/samsung/goni/goni.c
> +++ b/board/samsung/goni/goni.c
> @@ -1,7 +1,8 @@
> ?/*
> - * ?Copyright (C) 2008-2009 Samsung Electronics
> + * ?Copyright (C) 2008-2011 Samsung Electronics
> ?* ?Minkyu Kang <mk7.kang@samsung.com>
> ?* ?Kyungmin Park <kyungmin.park@samsung.com>
> + * ?Lukasz Majewski <l.majewski@samsung.com>
> ?*
> ?* See file CREDITS for list of people who contributed to this
> ?* project.
> @@ -96,3 +97,55 @@ int board_mmc_init(bd_t *bis)
> ? ? ? ?return s5p_mmc_init(0, 4);
> ?}
> ?#endif
> +
> +#ifdef CONFIG_SOFT_I2C
> +
> +enum { I2C_PMIC, I2C_NUM, };

What purpose of these enum?
Where these used?

> +
> +void i2c_init_board(void) {}
> +
> +int s5p_gpio_get_nr(void *gp_ptr, int gpio)
> +{
> + ? ? ? unsigned int offset = gp_ptr - (void *) s5pc110_gpio;
> + ? ? ? offset /= sizeof(struct s5p_gpio_bank);
> +
> + ? ? ? return (offset * GPIO_PER_BANK) + gpio;
> +}
> +
> +struct s5p_gpio_bank *s5p_gpio_get_bank(int nr)
> +{
> + ? ? ? int bank = nr / GPIO_PER_BANK;
> + ? ? ? bank *= sizeof(struct s5p_gpio_bank);
> +
> + ? ? ? return (struct s5p_gpio_bank *) ((void *) s5pc110_gpio + bank);
> +}
> +
> +inline int s5p_gpio_get_pin(int nr)
> +{
> + ? ? ? return nr % GPIO_PER_BANK;
> +}
> +
> +inline int gpio_direction_input(int nr)
> +{
> + ? ? ? s5p_gpio_direction_input(s5p_gpio_get_bank(nr),
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s5p_gpio_get_pin(nr));
> +}
> +
> +inline int gpio_direction_output(int nr, int value)
> +{
> + ? ? ? s5p_gpio_direction_output(s5p_gpio_get_bank(nr),
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s5p_gpio_get_pin(nr), value);
> +}
> +
> +inline int gpio_get_value(int nr)
> +{
> + ? ? ? return (int) s5p_gpio_get_value(s5p_gpio_get_bank(nr),
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s5p_gpio_get_pin(nr));
> +}
> +
> +inline void gpio_set_value(int nr, int value)
> +{
> + ? ? ? s5p_gpio_set_value(s5p_gpio_get_bank(nr),
> + ? ? ? ? ? ? ? ? ? ? ? ? ?s5p_gpio_get_pin(nr), value);
> +}
> +#endif

I think It's not a board specific.
Please make common file for I2C gpio for s5p.

> diff --git a/include/configs/s5p_goni.h b/include/configs/s5p_goni.h
> index 010428b..ee87927 100644
> --- a/include/configs/s5p_goni.h
> +++ b/include/configs/s5p_goni.h
> @@ -224,4 +224,17 @@
>
> ?#define CONFIG_SYS_INIT_SP_ADDR ? ? ? ?(CONFIG_SYS_LOAD_ADDR - 0x1000000)
>
> +#include <asm/arch/gpio.h>
> +/*
> + * I2C Settings
> + */
> +#define S5PC110_GPIO_J3 ? ? ? ?(S5PC110_GPIO_BASE + 0x2C0)
> +#define CONFIG_SOFT_I2C_GPIO_SCL s5p_gpio_get_nr(S5PC110_GPIO_J3, 3)
> +#define CONFIG_SOFT_I2C_GPIO_SDA s5p_gpio_get_nr(S5PC110_GPIO_J3, 0)

I have one question.
How we can handle multiple bus?
I mean.. how we can change SCL and SDA?

> +
> +#define CONFIG_SOFT_I2C ? ? ? ? ? ? ? ?1
> +#define CONFIG_SYS_I2C_INIT_BOARD
> +#define CONFIG_SYS_I2C_SPEED ? 50000
> +#define CONFIG_I2C_MULTI_BUS
> +#define CONFIG_SYS_MAX_I2C_BUS 7
> ?#endif /* __CONFIG_H */
> --
> 1.7.2.3

Thanks
Minkyu Kang
-- 
from. prom.
www.promsoft.net

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [U-Boot] [RESEND PATCH] gpio:samsung s5p_ suffix add for GPIO functions
  2011-07-11  8:18 ` [U-Boot] [PATCH 1/2] gpio:s5p s5p_ suffix add for GPIO functions Lukasz Majewski
  2011-07-15  9:36   ` Minkyu Kang
@ 2011-07-15 10:16   ` Lukasz Majewski
  2011-07-18 18:05     ` Mike Frysinger
  2011-08-10  9:18   ` [U-Boot] [PATCH] gpio:samsung: s5p_ suffix add for GPIO functions (C210_universal) Lukasz Majewski
  2 siblings, 1 reply; 24+ messages in thread
From: Lukasz Majewski @ 2011-07-15 10:16 UTC (permalink / raw)
  To: u-boot

This change is driven by need of general gpio_* functions,
which as their parameter are accepting the GPIO pin number, NOT
block and pin.

This makes the code alike to omap, and allows for using more
generic frameworks (e.g. software I2C).

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
---
 arch/arm/include/asm/arch-s5pc1xx/gpio.h |   16 ++++++++--------
 arch/arm/include/asm/arch-s5pc2xx/gpio.h |   16 ++++++++--------
 board/samsung/goni/goni.c                |    8 ++++----
 board/samsung/smdkc100/smdkc100.c        |    2 +-
 board/samsung/smdkv310/smdkv310.c        |    8 ++++----
 drivers/gpio/s5p_gpio.c                  |   20 ++++++++++----------
 6 files changed, 35 insertions(+), 35 deletions(-)

diff --git a/arch/arm/include/asm/arch-s5pc1xx/gpio.h b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
index 485b9bf..903de9c 100644
--- a/arch/arm/include/asm/arch-s5pc1xx/gpio.h
+++ b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
@@ -126,14 +126,14 @@ struct s5pc110_gpio {
 };
 
 /* functions */
-void gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg);
-void gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en);
-void gpio_direction_input(struct s5p_gpio_bank *bank, int gpio);
-void gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en);
-unsigned int gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
-void gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
-void gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
-void gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
+void s5p_gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg);
+void s5p_gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en);
+void s5p_gpio_direction_input(struct s5p_gpio_bank *bank, int gpio);
+void s5p_gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en);
+unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
+void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
+void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
+void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
 #endif
 
 /* Pin configurations */
diff --git a/arch/arm/include/asm/arch-s5pc2xx/gpio.h b/arch/arm/include/asm/arch-s5pc2xx/gpio.h
index 38303e4..8db5895 100644
--- a/arch/arm/include/asm/arch-s5pc2xx/gpio.h
+++ b/arch/arm/include/asm/arch-s5pc2xx/gpio.h
@@ -80,14 +80,14 @@ struct s5pc210_gpio_part3 {
 };
 
 /* functions */
-void gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg);
-void gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en);
-void gpio_direction_input(struct s5p_gpio_bank *bank, int gpio);
-void gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en);
-unsigned int gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
-void gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
-void gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
-void gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
+void s5p_gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg);
+void s5p_gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en);
+void s5p_gpio_direction_input(struct s5p_gpio_bank *bank, int gpio);
+void s5p_gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en);
+unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
+void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
+void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
+void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
 #endif
 
 /* Pin configurations */
diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c
index 581935d..e24cd29 100644
--- a/board/samsung/goni/goni.c
+++ b/board/samsung/goni/goni.c
@@ -73,7 +73,7 @@ int board_mmc_init(bd_t *bis)
 	int i;
 
 	/* MASSMEMORY_EN: XMSMDATA7: GPJ2[7] output high */
-	gpio_direction_output(&s5pc110_gpio->j2, 7, 1);
+	s5p_gpio_direction_output(&s5pc110_gpio->j2, 7, 1);
 
 	/*
 	 * MMC0 GPIO
@@ -86,11 +86,11 @@ int board_mmc_init(bd_t *bis)
 		if (i == 2)
 			continue;
 		/* GPG0[0:6] special function 2 */
-		gpio_cfg_pin(&s5pc110_gpio->g0, i, 0x2);
+		s5p_gpio_cfg_pin(&s5pc110_gpio->g0, i, 0x2);
 		/* GPG0[0:6] pull disable */
-		gpio_set_pull(&s5pc110_gpio->g0, i, GPIO_PULL_NONE);
+		s5p_gpio_set_pull(&s5pc110_gpio->g0, i, GPIO_PULL_NONE);
 		/* GPG0[0:6] drv 4x */
-		gpio_set_drv(&s5pc110_gpio->g0, i, GPIO_DRV_4X);
+		s5p_gpio_set_drv(&s5pc110_gpio->g0, i, GPIO_DRV_4X);
 	}
 
 	return s5p_mmc_init(0, 4);
diff --git a/board/samsung/smdkc100/smdkc100.c b/board/samsung/smdkc100/smdkc100.c
index 1ad68b9..c41e610 100644
--- a/board/samsung/smdkc100/smdkc100.c
+++ b/board/samsung/smdkc100/smdkc100.c
@@ -41,7 +41,7 @@ static void smc9115_pre_init(void)
 		(struct s5pc100_gpio *)samsung_get_base_gpio();
 
 	/* gpio configuration GPK0CON */
-	gpio_cfg_pin(&gpio->k0, CONFIG_ENV_SROM_BANK, GPIO_FUNC(2));
+	s5p_gpio_cfg_pin(&gpio->k0, CONFIG_ENV_SROM_BANK, GPIO_FUNC(2));
 
 	/* Ethernet needs bus width of 16 bits */
 	smc_bw_conf = SMC_DATA16_WIDTH(CONFIG_ENV_SROM_BANK);
diff --git a/board/samsung/smdkv310/smdkv310.c b/board/samsung/smdkv310/smdkv310.c
index acf9ee7..173520e 100644
--- a/board/samsung/smdkv310/smdkv310.c
+++ b/board/samsung/smdkv310/smdkv310.c
@@ -37,7 +37,7 @@ static void smc9115_pre_init(void)
 	u32 smc_bw_conf, smc_bc_conf;
 
 	/* gpio configuration GPK0CON */
-	gpio_cfg_pin(&gpio2->y0, CONFIG_ENV_SROM_BANK, GPIO_FUNC(2));
+	s5p_gpio_cfg_pin(&gpio2->y0, CONFIG_ENV_SROM_BANK, GPIO_FUNC(2));
 
 	/* Ethernet needs bus width of 16 bits */
 	smc_bw_conf = SROMC_DATA16_WIDTH(CONFIG_ENV_SROM_BANK);
@@ -116,10 +116,10 @@ int board_mmc_init(bd_t *bis)
 	 */
 	for (i = 0; i < 7; i++) {
 		/* GPK2[0:6] special function 2 */
-		gpio_cfg_pin(&gpio2->k2, i, GPIO_FUNC(0x2));
+		s5p_gpio_cfg_pin(&gpio2->k2, i, GPIO_FUNC(0x2));
 
 		/* GPK2[0:6] drv 4x */
-		gpio_set_drv(&gpio2->k2, i, GPIO_DRV_4X);
+		s5p_gpio_set_drv(&gpio2->k2, i, GPIO_DRV_4X);
 
 		/* GPK2[0:1] pull disable */
 		if (i == 0 || i == 1) {
@@ -128,7 +128,7 @@ int board_mmc_init(bd_t *bis)
 		}
 
 		/* GPK2[2:6] pull up */
-		gpio_set_pull(&gpio2->k2, i, GPIO_PULL_UP);
+		s5p_gpio_set_pull(&gpio2->k2, i, GPIO_PULL_UP);
 	}
 	err = s5p_mmc_init(2, 4);
 	return err;
diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c
index a1bcddc..2043859 100644
--- a/drivers/gpio/s5p_gpio.c
+++ b/drivers/gpio/s5p_gpio.c
@@ -36,7 +36,7 @@
 #define RATE_MASK(x)		(0x1 << (x + 16))
 #define RATE_SET(x)		(0x1 << (x + 16))
 
-void gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg)
+void s5p_gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg)
 {
 	unsigned int value;
 
@@ -46,11 +46,11 @@ void gpio_cfg_pin(struct s5p_gpio_bank *bank, int gpio, int cfg)
 	writel(value, &bank->con);
 }
 
-void gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en)
+void s5p_gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en)
 {
 	unsigned int value;
 
-	gpio_cfg_pin(bank, gpio, GPIO_OUTPUT);
+	s5p_gpio_cfg_pin(bank, gpio, GPIO_OUTPUT);
 
 	value = readl(&bank->dat);
 	value &= ~DAT_MASK(gpio);
@@ -59,12 +59,12 @@ void gpio_direction_output(struct s5p_gpio_bank *bank, int gpio, int en)
 	writel(value, &bank->dat);
 }
 
-void gpio_direction_input(struct s5p_gpio_bank *bank, int gpio)
+void s5p_gpio_direction_input(struct s5p_gpio_bank *bank, int gpio)
 {
-	gpio_cfg_pin(bank, gpio, GPIO_INPUT);
+	s5p_gpio_cfg_pin(bank, gpio, GPIO_INPUT);
 }
 
-void gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en)
+void s5p_gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en)
 {
 	unsigned int value;
 
@@ -75,7 +75,7 @@ void gpio_set_value(struct s5p_gpio_bank *bank, int gpio, int en)
 	writel(value, &bank->dat);
 }
 
-unsigned int gpio_get_value(struct s5p_gpio_bank *bank, int gpio)
+unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio)
 {
 	unsigned int value;
 
@@ -83,7 +83,7 @@ unsigned int gpio_get_value(struct s5p_gpio_bank *bank, int gpio)
 	return !!(value & DAT_MASK(gpio));
 }
 
-void gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode)
+void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode)
 {
 	unsigned int value;
 
@@ -102,7 +102,7 @@ void gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode)
 	writel(value, &bank->pull);
 }
 
-void gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode)
+void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode)
 {
 	unsigned int value;
 
@@ -123,7 +123,7 @@ void gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode)
 	writel(value, &bank->drv);
 }
 
-void gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode)
+void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode)
 {
 	unsigned int value;
 
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH 2/2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
  2011-07-15  9:52   ` Minkyu Kang
@ 2011-07-15 10:50     ` Lukasz Majewski
  0 siblings, 0 replies; 24+ messages in thread
From: Lukasz Majewski @ 2011-07-15 10:50 UTC (permalink / raw)
  To: u-boot

Hi Minkyu,

> > +
> > +#ifdef CONFIG_SOFT_I2C
> > +
> > +enum { I2C_PMIC, I2C_NUM, };  
> 
> What purpose of these enum?
> Where these used?

For now goni reference target is going to use only one I2C bus
(implemented as soft_i2c GPIO). Therefore this enum will be erased for
v2. In the future, however this might be needed.

> > +#define S5PC110_GPIO_J3 ? ? ? ?(S5PC110_GPIO_BASE + 0x2C0)
> > +#define CONFIG_SOFT_I2C_GPIO_SCL s5p_gpio_get_nr(S5PC110_GPIO_J3,
> > 3) +#define CONFIG_SOFT_I2C_GPIO_SDA
> > s5p_gpio_get_nr(S5PC110_GPIO_J3, 0)  
> 
> I have one question.
> How we can handle multiple bus?
> I mean.. how we can change SCL and SDA?

I've asked this question to Heiko Schocher already.
Please refer to this reply:

http://lists.denx.de/pipermail/u-boot/2011-July/095610.html


-- 
Best regards,

Lukasz Majewski

Samsung Poland R&D Center
Platform Group

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [U-Boot] [RESEND PATCH] gpio:samsung s5p_ suffix add for GPIO functions
  2011-07-15 10:16   ` [U-Boot] [RESEND PATCH] gpio:samsung " Lukasz Majewski
@ 2011-07-18 18:05     ` Mike Frysinger
  2011-07-26  5:54       ` Minkyu Kang
  0 siblings, 1 reply; 24+ messages in thread
From: Mike Frysinger @ 2011-07-18 18:05 UTC (permalink / raw)
  To: u-boot

On Fri, Jul 15, 2011 at 06:16, Lukasz Majewski wrote:
> This change is driven by need of general gpio_* functions,
> which as their parameter are accepting the GPIO pin number, NOT
> block and pin.

Acked-by: Mike Frysinger <vapier@gentoo.org>
-mike

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH v2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
  2011-07-11  8:18 [U-Boot] [PATCH 0/2] i2c:gpio:s5p I2C GPIO rework Lukasz Majewski
  2011-07-11  8:18 ` [U-Boot] [PATCH 1/2] gpio:s5p s5p_ suffix add for GPIO functions Lukasz Majewski
  2011-07-11  8:18 ` [U-Boot] [PATCH 2/2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c) Lukasz Majewski
@ 2011-07-20  8:35 ` Lukasz Majewski
  2011-08-09  2:19   ` Minkyu Kang
  2011-08-10  9:21 ` [U-Boot] [PATCH v3] " Lukasz Majewski
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 24+ messages in thread
From: Lukasz Majewski @ 2011-07-20  8:35 UTC (permalink / raw)
  To: u-boot

This patch adds support for software I2C for GONI reference target.
It adds support for access to GPIOs by number, not as it is present,
by bank and offset.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Heiko Schocher <hs@denx.de>

---
Changes for v2:
	- Generic GPIO code added to arch/arm/gpio.h
	- Platform dependent GPIO code added to board/samsung/goni.c
	- Code cleanup
---
 arch/arm/include/asm/arch-s5pc1xx/gpio.h |   36 ++++++++++++++++++++++++++++++
 board/samsung/goni/goni.c                |   30 +++++++++++++++++++++++-
 include/configs/s5p_goni.h               |   13 ++++++++++
 3 files changed, 77 insertions(+), 2 deletions(-)

diff --git a/arch/arm/include/asm/arch-s5pc1xx/gpio.h b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
index 903de9c..8d2e2e9 100644
--- a/arch/arm/include/asm/arch-s5pc1xx/gpio.h
+++ b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
@@ -134,6 +134,40 @@ unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
 void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
 void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
 void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
+struct s5p_gpio_bank *s5p_gpio_get_bank(int nr);
+int s5p_gpio_get_pin(int nr);
+
+static inline int gpio_request(int gpio, const char *label)
+{
+	return 0;
+}
+
+static inline int gpio_direction_input(int nr)
+{
+	s5p_gpio_direction_input(s5p_gpio_get_bank(nr),
+				 s5p_gpio_get_pin(nr));
+	return 0;
+}
+
+static inline int gpio_direction_output(int nr, int value)
+{
+	s5p_gpio_direction_output(s5p_gpio_get_bank(nr),
+				  s5p_gpio_get_pin(nr), value);
+	return 0;
+}
+
+static inline int gpio_get_value(int nr)
+{
+	return (int) s5p_gpio_get_value(s5p_gpio_get_bank(nr),
+					s5p_gpio_get_pin(nr));
+}
+
+static inline void gpio_set_value(int nr, int value)
+{
+	s5p_gpio_set_value(s5p_gpio_get_bank(nr),
+			   s5p_gpio_get_pin(nr), value);
+}
+
 #endif
 
 /* Pin configurations */
@@ -155,4 +189,6 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
 #define GPIO_DRV_FAST	0x0
 #define GPIO_DRV_SLOW	0x1
 
+/* GPIO pins per bank  */
+#define GPIO_PER_BANK 8
 #endif
diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c
index e24cd29..d1ff956 100644
--- a/board/samsung/goni/goni.c
+++ b/board/samsung/goni/goni.c
@@ -1,7 +1,8 @@
 /*
- *  Copyright (C) 2008-2009 Samsung Electronics
+ *  Copyright (C) 2008-2011 Samsung Electronics
  *  Minkyu Kang <mk7.kang@samsung.com>
  *  Kyungmin Park <kyungmin.park@samsung.com>
+ *  Lukasz Majewski <l.majewski@samsung.com>
  *
  * See file CREDITS for list of people who contributed to this
  * project.
@@ -28,7 +29,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static struct s5pc110_gpio *s5pc110_gpio;
+struct s5pc110_gpio *s5pc110_gpio;
 
 int board_init(void)
 {
@@ -96,3 +97,28 @@ int board_mmc_init(bd_t *bis)
 	return s5p_mmc_init(0, 4);
 }
 #endif
+
+#ifdef CONFIG_SOFT_I2C
+void i2c_init_board(void) {}
+/* Platform dependent functions for extracting GPIO number */
+int s5p_gpio_get_nr(void *gp_ptr, int gpio)
+{
+	unsigned int offset = gp_ptr - (void *) s5pc110_gpio;
+	offset /= sizeof(struct s5p_gpio_bank);
+
+	return (offset * GPIO_PER_BANK) + gpio;
+}
+
+struct s5p_gpio_bank *s5p_gpio_get_bank(int nr)
+{
+	int bank = nr / GPIO_PER_BANK;
+	bank *= sizeof(struct s5p_gpio_bank);
+
+	return (struct s5p_gpio_bank *) ((void *) s5pc110_gpio + bank);
+}
+
+int s5p_gpio_get_pin(int nr)
+{
+	return nr % GPIO_PER_BANK;
+}
+#endif
diff --git a/include/configs/s5p_goni.h b/include/configs/s5p_goni.h
index 010428b..7af1b5f 100644
--- a/include/configs/s5p_goni.h
+++ b/include/configs/s5p_goni.h
@@ -224,4 +224,17 @@
 
 #define CONFIG_SYS_INIT_SP_ADDR	(CONFIG_SYS_LOAD_ADDR - 0x1000000)
 
+#include <asm/arch/gpio.h>
+/*
+ * I2C Settings
+ */
+#define S5PC110_GPIO_J3          (S5PC110_GPIO_BASE + 0x2C0)
+#define CONFIG_SOFT_I2C_GPIO_SCL s5p_gpio_get_nr(S5PC110_GPIO_J3, 3)
+#define CONFIG_SOFT_I2C_GPIO_SDA s5p_gpio_get_nr(S5PC110_GPIO_J3, 0)
+
+#define CONFIG_SOFT_I2C	1
+#define CONFIG_SYS_I2C_SPEED	50000
+#define CONFIG_I2C_MULTI_BUS
+#define CONFIG_SYS_MAX_I2C_BUS	7
+
 #endif	/* __CONFIG_H */
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [U-Boot] [RESEND PATCH] gpio:samsung s5p_ suffix add for GPIO functions
  2011-07-18 18:05     ` Mike Frysinger
@ 2011-07-26  5:54       ` Minkyu Kang
  0 siblings, 0 replies; 24+ messages in thread
From: Minkyu Kang @ 2011-07-26  5:54 UTC (permalink / raw)
  To: u-boot

Dear Lukasz Majewski,

On 19 July 2011 03:05, Mike Frysinger <vapier@gentoo.org> wrote:
> On Fri, Jul 15, 2011 at 06:16, Lukasz Majewski wrote:
>> This change is driven by need of general gpio_* functions,
>> which as their parameter are accepting the GPIO pin number, NOT
>> block and pin.
>
> Acked-by: Mike Frysinger <vapier@gentoo.org>
> -mike

applied to u-boot-samsung

Thanks
Minkyu Kang
-- 
from. prom.
www.promsoft.net

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH v2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
  2011-07-20  8:35 ` [U-Boot] [PATCH v2] " Lukasz Majewski
@ 2011-08-09  2:19   ` Minkyu Kang
  0 siblings, 0 replies; 24+ messages in thread
From: Minkyu Kang @ 2011-08-09  2:19 UTC (permalink / raw)
  To: u-boot

Dear Lukasz Majewski,

On 20 July 2011 17:35, Lukasz Majewski <l.majewski@samsung.com> wrote:
> This patch adds support for software I2C for GONI reference target.
> It adds support for access to GPIOs by number, not as it is present,
> by bank and offset.
>
> Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> Cc: Heiko Schocher <hs@denx.de>
>
> ---
> Changes for v2:
> ? ? ? ?- Generic GPIO code added to arch/arm/gpio.h
> ? ? ? ?- Platform dependent GPIO code added to board/samsung/goni.c
> ? ? ? ?- Code cleanup
> ---
> ?arch/arm/include/asm/arch-s5pc1xx/gpio.h | ? 36 ++++++++++++++++++++++++++++++
> ?board/samsung/goni/goni.c ? ? ? ? ? ? ? ?| ? 30 +++++++++++++++++++++++-
> ?include/configs/s5p_goni.h ? ? ? ? ? ? ? | ? 13 ++++++++++
> ?3 files changed, 77 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-s5pc1xx/gpio.h b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
> index 903de9c..8d2e2e9 100644
> --- a/arch/arm/include/asm/arch-s5pc1xx/gpio.h
> +++ b/arch/arm/include/asm/arch-s5pc1xx/gpio.h

please add s5pc2xx also.

> diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c
> index e24cd29..d1ff956 100644
> --- a/board/samsung/goni/goni.c
> +++ b/board/samsung/goni/goni.c
> @@ -1,7 +1,8 @@
> ?/*
> - * ?Copyright (C) 2008-2009 Samsung Electronics
> + * ?Copyright (C) 2008-2011 Samsung Electronics
> ?* ?Minkyu Kang <mk7.kang@samsung.com>
> ?* ?Kyungmin Park <kyungmin.park@samsung.com>
> + * ?Lukasz Majewski <l.majewski@samsung.com>
> ?*
> ?* See file CREDITS for list of people who contributed to this
> ?* project.
> @@ -28,7 +29,7 @@
>
> ?DECLARE_GLOBAL_DATA_PTR;
>
> -static struct s5pc110_gpio *s5pc110_gpio;
> +struct s5pc110_gpio *s5pc110_gpio;

Why?

>
> ?int board_init(void)
> ?{
> @@ -96,3 +97,28 @@ int board_mmc_init(bd_t *bis)
> ? ? ? ?return s5p_mmc_init(0, 4);
> ?}
> ?#endif
> +
> +#ifdef CONFIG_SOFT_I2C
> +void i2c_init_board(void) {}
> +/* Platform dependent functions for extracting GPIO number */
> +int s5p_gpio_get_nr(void *gp_ptr, int gpio)
> +{
> + ? ? ? unsigned int offset = gp_ptr - (void *) s5pc110_gpio;
> + ? ? ? offset /= sizeof(struct s5p_gpio_bank);
> +
> + ? ? ? return (offset * GPIO_PER_BANK) + gpio;
> +}
> +
> +struct s5p_gpio_bank *s5p_gpio_get_bank(int nr)
> +{
> + ? ? ? int bank = nr / GPIO_PER_BANK;
> + ? ? ? bank *= sizeof(struct s5p_gpio_bank);
> +
> + ? ? ? return (struct s5p_gpio_bank *) ((void *) s5pc110_gpio + bank);
> +}
> +
> +int s5p_gpio_get_pin(int nr)
> +{
> + ? ? ? return nr % GPIO_PER_BANK;
> +}
> +#endif

I think these codes are not board specific.
Please make common file for I2C gpio for s5p.

Thanks
Minkyu Kang
-- 
from. prom.
www.promsoft.net

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH] gpio:samsung: s5p_ suffix add for GPIO functions (C210_universal)
  2011-07-11  8:18 ` [U-Boot] [PATCH 1/2] gpio:s5p s5p_ suffix add for GPIO functions Lukasz Majewski
  2011-07-15  9:36   ` Minkyu Kang
  2011-07-15 10:16   ` [U-Boot] [RESEND PATCH] gpio:samsung " Lukasz Majewski
@ 2011-08-10  9:18   ` Lukasz Majewski
  2011-08-11  9:51     ` Minkyu Kang
  2 siblings, 1 reply; 24+ messages in thread
From: Lukasz Majewski @ 2011-08-10  9:18 UTC (permalink / raw)
  To: u-boot

This is a cosmetic patch, which is changing the gpio_ prefix to
s5p_gpio_.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
---
 board/samsung/universal_c210/universal.c |   28 ++++++++++++++--------------
 1 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c
index b65bc6e..1b27e8b 100644
--- a/board/samsung/universal_c210/universal.c
+++ b/board/samsung/universal_c210/universal.c
@@ -160,7 +160,7 @@ int board_mmc_init(bd_t *bis)
 		 * you should set it HIGH since it removes the inverter
 		 */
 		/* MASSMEMORY_EN: XMDMDATA_6: GPE3[6] */
-		gpio_direction_output(&gpio1->e3, 6, 0);
+		s5p_gpio_direction_output(&gpio1->e3, 6, 0);
 		break;
 	default:
 		/*
@@ -168,7 +168,7 @@ int board_mmc_init(bd_t *bis)
 		 * But set it as HIGH to ensure
 		 */
 		/* MASSMEMORY_EN: XMDMADDR_3: GPE1[3] */
-		gpio_direction_output(&gpio1->e1, 3, 1);
+		s5p_gpio_direction_output(&gpio1->e1, 3, 1);
 		break;
 	}
 
@@ -192,25 +192,25 @@ int board_mmc_init(bd_t *bis)
 		if (i == 2)
 			continue;
 		/* GPK0[0:6] special function 2 */
-		gpio_cfg_pin(&gpio2->k0, i, 0x2);
+		s5p_gpio_cfg_pin(&gpio2->k0, i, 0x2);
 		/* GPK0[0:6] pull disable */
-		gpio_set_pull(&gpio2->k0, i, GPIO_PULL_NONE);
+		s5p_gpio_set_pull(&gpio2->k0, i, GPIO_PULL_NONE);
 		/* GPK0[0:6] drv 4x */
-		gpio_set_drv(&gpio2->k0, i, GPIO_DRV_4X);
+		s5p_gpio_set_drv(&gpio2->k0, i, GPIO_DRV_4X);
 	}
 
 	for (i = 3; i < 7; i++) {
 		/* GPK1[3:6] special function 3 */
-		gpio_cfg_pin(&gpio2->k1, i, 0x3);
+		s5p_gpio_cfg_pin(&gpio2->k1, i, 0x3);
 		/* GPK1[3:6] pull disable */
-		gpio_set_pull(&gpio2->k1, i, GPIO_PULL_NONE);
+		s5p_gpio_set_pull(&gpio2->k1, i, GPIO_PULL_NONE);
 		/* GPK1[3:6] drv 4x */
-		gpio_set_drv(&gpio2->k1, i, GPIO_DRV_4X);
+		s5p_gpio_set_drv(&gpio2->k1, i, GPIO_DRV_4X);
 	}
 
 	/* T-flash detect */
-	gpio_cfg_pin(&gpio2->x3, 4, 0xf);
-	gpio_set_pull(&gpio2->x3, 4, GPIO_PULL_UP);
+	s5p_gpio_cfg_pin(&gpio2->x3, 4, 0xf);
+	s5p_gpio_set_pull(&gpio2->x3, 4, GPIO_PULL_UP);
 
 	/*
 	 * MMC device init
@@ -223,7 +223,7 @@ int board_mmc_init(bd_t *bis)
 	 * Check the T-flash  detect pin
 	 * GPX3[4] T-flash detect pin
 	 */
-	if (!gpio_get_value(&gpio2->x3, 4)) {
+	if (!s5p_gpio_get_value(&gpio2->x3, 4)) {
 		/*
 		 * SD card GPIO:
 		 * GPK2[0]	SD_2_CLK(2)
@@ -235,11 +235,11 @@ int board_mmc_init(bd_t *bis)
 			if (i == 2)
 				continue;
 			/* GPK2[0:6] special function 2 */
-			gpio_cfg_pin(&gpio2->k2, i, 0x2);
+			s5p_gpio_cfg_pin(&gpio2->k2, i, 0x2);
 			/* GPK2[0:6] pull disable */
-			gpio_set_pull(&gpio2->k2, i, GPIO_PULL_NONE);
+			s5p_gpio_set_pull(&gpio2->k2, i, GPIO_PULL_NONE);
 			/* GPK2[0:6] drv 4x */
-			gpio_set_drv(&gpio2->k2, i, GPIO_DRV_4X);
+			s5p_gpio_set_drv(&gpio2->k2, i, GPIO_DRV_4X);
 		}
 		err = s5p_mmc_init(2, 4);
 	}
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH v3] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
  2011-07-11  8:18 [U-Boot] [PATCH 0/2] i2c:gpio:s5p I2C GPIO rework Lukasz Majewski
                   ` (2 preceding siblings ...)
  2011-07-20  8:35 ` [U-Boot] [PATCH v2] " Lukasz Majewski
@ 2011-08-10  9:21 ` Lukasz Majewski
  2011-08-11  9:43   ` Minkyu Kang
  2011-08-12  8:32 ` [U-Boot] [PATCH 0/2] i2c:gpio:s5p: I2C GPIO SW " Lukasz Majewski
  2011-08-23  8:34 ` [U-Boot] [PATCH v2 0/2] i2c:gpio:s5p I2C GPIO rework Lukasz Majewski
  5 siblings, 1 reply; 24+ messages in thread
From: Lukasz Majewski @ 2011-08-10  9:21 UTC (permalink / raw)
  To: u-boot

This patch adds support for software I2C for GONI reference target.
It adds support for access to GPIOs by number, not as it is present,
by bank and offset.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Heiko Schocher <hs@denx.de>

---
Changes for v2:
        - Generic GPIO code added to arch/arm/gpio.h
        - Platform dependent GPIO code added to board/samsung/goni.c
        - Code cleanup
Changes for v3:
        - I2C GPIO common code added to drivers/gpio/s5p_gpio.c
	- i2c_init_board() function added(required by soft_i2c)
---
 arch/arm/include/asm/arch-s5pc1xx/gpio.h |   38 ++++++++++++++++++++++++++++++
 board/samsung/goni/goni.c                |   16 ++++++++----
 drivers/gpio/s5p_gpio.c                  |   24 +++++++++++++++++++
 include/configs/s5p_goni.h               |   14 +++++++++++
 4 files changed, 86 insertions(+), 6 deletions(-)

diff --git a/arch/arm/include/asm/arch-s5pc1xx/gpio.h b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
index 903de9c..619ba6f 100644
--- a/arch/arm/include/asm/arch-s5pc1xx/gpio.h
+++ b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
@@ -134,6 +134,41 @@ unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
 void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
 void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
 void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
+struct s5p_gpio_bank *s5p_gpio_get_bank(int nr);
+int s5p_gpio_get_pin(int nr);
+
+static inline int gpio_request(int gpio, const char *label)
+{
+       return 0;
+}
+
+static inline int gpio_direction_input(int nr)
+{
+       s5p_gpio_direction_input(s5p_gpio_get_bank(nr),
+				s5p_gpio_get_pin(nr));
+       return 0;
+}
+
+static inline int gpio_direction_output(int nr, int value)
+{
+       s5p_gpio_direction_output(s5p_gpio_get_bank(nr),
+				 s5p_gpio_get_pin(nr), value);
+       return 0;
+}
+
+static inline int gpio_get_value(int nr)
+{
+       return (int) s5p_gpio_get_value(s5p_gpio_get_bank(nr),
+				       s5p_gpio_get_pin(nr));
+}
+
+static inline void gpio_set_value(int nr, int value)
+{
+       s5p_gpio_set_value(s5p_gpio_get_bank(nr),
+			  s5p_gpio_get_pin(nr), value);
+}
+
+extern struct s5pc110_gpio *s5p_gpio;
 #endif
 
 /* Pin configurations */
@@ -155,4 +190,7 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
 #define GPIO_DRV_FAST	0x0
 #define GPIO_DRV_SLOW	0x1
 
+/* GPIO pins per bank  */
+#define GPIO_PER_BANK 8
+
 #endif
diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c
index e24cd29..354f5ad 100644
--- a/board/samsung/goni/goni.c
+++ b/board/samsung/goni/goni.c
@@ -28,12 +28,12 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static struct s5pc110_gpio *s5pc110_gpio;
+struct s5pc110_gpio *s5p_gpio;
 
 int board_init(void)
 {
 	/* Set Initial global variables */
-	s5pc110_gpio = (struct s5pc110_gpio *)S5PC110_GPIO_BASE;
+	s5p_gpio = (struct s5pc110_gpio *)S5PC110_GPIO_BASE;
 
 	gd->bd->bi_arch_number = MACH_TYPE_GONI;
 	gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
@@ -67,13 +67,17 @@ int checkboard(void)
 }
 #endif
 
+#ifdef CONFIG_SOFT_I2C
+void i2c_init_board(void) {}
+#endif
+
 #ifdef CONFIG_GENERIC_MMC
 int board_mmc_init(bd_t *bis)
 {
 	int i;
 
 	/* MASSMEMORY_EN: XMSMDATA7: GPJ2[7] output high */
-	s5p_gpio_direction_output(&s5pc110_gpio->j2, 7, 1);
+	s5p_gpio_direction_output(&s5p_gpio->j2, 7, 1);
 
 	/*
 	 * MMC0 GPIO
@@ -86,11 +90,11 @@ int board_mmc_init(bd_t *bis)
 		if (i == 2)
 			continue;
 		/* GPG0[0:6] special function 2 */
-		s5p_gpio_cfg_pin(&s5pc110_gpio->g0, i, 0x2);
+		s5p_gpio_cfg_pin(&s5p_gpio->g0, i, 0x2);
 		/* GPG0[0:6] pull disable */
-		s5p_gpio_set_pull(&s5pc110_gpio->g0, i, GPIO_PULL_NONE);
+		s5p_gpio_set_pull(&s5p_gpio->g0, i, GPIO_PULL_NONE);
 		/* GPG0[0:6] drv 4x */
-		s5p_gpio_set_drv(&s5pc110_gpio->g0, i, GPIO_DRV_4X);
+		s5p_gpio_set_drv(&s5p_gpio->g0, i, GPIO_DRV_4X);
 	}
 
 	return s5p_mmc_init(0, 4);
diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c
index 2043859..e247b6f 100644
--- a/drivers/gpio/s5p_gpio.c
+++ b/drivers/gpio/s5p_gpio.c
@@ -141,3 +141,27 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode)
 
 	writel(value, &bank->drv);
 }
+
+#ifdef CONFIG_SOFT_I2C
+/* Platform dependent functions for extracting GPIO number */
+int s5p_gpio_get_nr(void *gp_ptr, int gpio)
+{
+	unsigned int offset = gp_ptr - (void *) s5p_gpio;
+	offset /= sizeof(struct s5p_gpio_bank);
+
+	return (offset * GPIO_PER_BANK) + gpio;
+}
+
+struct s5p_gpio_bank *s5p_gpio_get_bank(int nr)
+{
+	int bank = nr / GPIO_PER_BANK;
+	bank *= sizeof(struct s5p_gpio_bank);
+
+	return (struct s5p_gpio_bank *) ((void *) s5p_gpio + bank);
+}
+
+int s5p_gpio_get_pin(int nr)
+{
+	return nr % GPIO_PER_BANK;
+}
+#endif
diff --git a/include/configs/s5p_goni.h b/include/configs/s5p_goni.h
index 381bb39..620dca7 100644
--- a/include/configs/s5p_goni.h
+++ b/include/configs/s5p_goni.h
@@ -223,4 +223,18 @@
 
 #define CONFIG_SYS_INIT_SP_ADDR	(CONFIG_SYS_LOAD_ADDR - 0x1000000)
 
+#include <asm/arch/gpio.h>
+/*
+ * I2C Settings
+ */
+#define S5PC110_GPIO_J3          (S5PC110_GPIO_BASE + 0x2C0)
+#define CONFIG_SOFT_I2C_GPIO_SCL s5p_gpio_get_nr(S5PC110_GPIO_J3, 3)
+#define CONFIG_SOFT_I2C_GPIO_SDA s5p_gpio_get_nr(S5PC110_GPIO_J3, 0)
+
+#define CONFIG_SOFT_I2C	1
+#define CONFIG_SYS_I2C_SPEED	50000
+#define CONFIG_SYS_I2C_INIT_BOARD
+#define CONFIG_I2C_MULTI_BUS
+#define CONFIG_SYS_MAX_I2C_BUS	7
+
 #endif	/* __CONFIG_H */
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH v3] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
  2011-08-10  9:21 ` [U-Boot] [PATCH v3] " Lukasz Majewski
@ 2011-08-11  9:43   ` Minkyu Kang
  0 siblings, 0 replies; 24+ messages in thread
From: Minkyu Kang @ 2011-08-11  9:43 UTC (permalink / raw)
  To: u-boot

Dear Lukasz Majewski,

On 10 August 2011 18:21, Lukasz Majewski <l.majewski@samsung.com> wrote:
> This patch adds support for software I2C for GONI reference target.
> It adds support for access to GPIOs by number, not as it is present,
> by bank and offset.
>
> Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> Cc: Heiko Schocher <hs@denx.de>
>
> ---
> Changes for v2:
> ? ? ? ?- Generic GPIO code added to arch/arm/gpio.h
> ? ? ? ?- Platform dependent GPIO code added to board/samsung/goni.c
> ? ? ? ?- Code cleanup
> Changes for v3:
> ? ? ? ?- I2C GPIO common code added to drivers/gpio/s5p_gpio.c
> ? ? ? ?- i2c_init_board() function added(required by soft_i2c)
> ---
> ?arch/arm/include/asm/arch-s5pc1xx/gpio.h | ? 38 ++++++++++++++++++++++++++++++

Please adds s5pc2xx also.

> ?board/samsung/goni/goni.c ? ? ? ? ? ? ? ?| ? 16 ++++++++----
> ?drivers/gpio/s5p_gpio.c ? ? ? ? ? ? ? ? ?| ? 24 +++++++++++++++++++
> ?include/configs/s5p_goni.h ? ? ? ? ? ? ? | ? 14 +++++++++++
> ?4 files changed, 86 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-s5pc1xx/gpio.h b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
> index 903de9c..619ba6f 100644
> --- a/arch/arm/include/asm/arch-s5pc1xx/gpio.h
> +++ b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
> @@ -134,6 +134,41 @@ unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
> ?void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
> ?void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
> ?void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
> +struct s5p_gpio_bank *s5p_gpio_get_bank(int nr);
> +int s5p_gpio_get_pin(int nr);
> +
> +static inline int gpio_request(int gpio, const char *label)
> +{
> + ? ? ? return 0;
> +}
> +
> +static inline int gpio_direction_input(int nr)
> +{
> + ? ? ? s5p_gpio_direction_input(s5p_gpio_get_bank(nr),
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s5p_gpio_get_pin(nr));
> + ? ? ? return 0;
> +}
> +
> +static inline int gpio_direction_output(int nr, int value)
> +{
> + ? ? ? s5p_gpio_direction_output(s5p_gpio_get_bank(nr),
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s5p_gpio_get_pin(nr), value);
> + ? ? ? return 0;
> +}
> +
> +static inline int gpio_get_value(int nr)
> +{
> + ? ? ? return (int) s5p_gpio_get_value(s5p_gpio_get_bank(nr),
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s5p_gpio_get_pin(nr));
> +}
> +
> +static inline void gpio_set_value(int nr, int value)
> +{
> + ? ? ? s5p_gpio_set_value(s5p_gpio_get_bank(nr),
> + ? ? ? ? ? ? ? ? ? ? ? ? s5p_gpio_get_pin(nr), value);
> +}
> +
> +extern struct s5pc110_gpio *s5p_gpio;
> ?#endif
>
> ?/* Pin configurations */
> @@ -155,4 +190,7 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
> ?#define GPIO_DRV_FAST ?0x0
> ?#define GPIO_DRV_SLOW ?0x1
>
> +/* GPIO pins per bank ?*/
> +#define GPIO_PER_BANK 8
> +
> ?#endif
> diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c
> index e24cd29..354f5ad 100644
> --- a/board/samsung/goni/goni.c
> +++ b/board/samsung/goni/goni.c
> @@ -28,12 +28,12 @@
>
> ?DECLARE_GLOBAL_DATA_PTR;
>
> -static struct s5pc110_gpio *s5pc110_gpio;
> +struct s5pc110_gpio *s5p_gpio;

Why you removed the "static"?
And.. why you change s5pc110_gpio to s5p_gpio?
It is unrelated changes with this patch.

>
> ?int board_init(void)
> ?{
> ? ? ? ?/* Set Initial global variables */
> - ? ? ? s5pc110_gpio = (struct s5pc110_gpio *)S5PC110_GPIO_BASE;
> + ? ? ? s5p_gpio = (struct s5pc110_gpio *)S5PC110_GPIO_BASE;
>
> ? ? ? ?gd->bd->bi_arch_number = MACH_TYPE_GONI;
> ? ? ? ?gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
> @@ -67,13 +67,17 @@ int checkboard(void)
> ?}
> ?#endif
>
> +#ifdef CONFIG_SOFT_I2C
> +void i2c_init_board(void) {}
> +#endif

Empty function?
then please undef CONFIG_SYS_I2C_INIT_BOARD.

> +
> ?#ifdef CONFIG_GENERIC_MMC
> ?int board_mmc_init(bd_t *bis)
> ?{
> ? ? ? ?int i;
>
> ? ? ? ?/* MASSMEMORY_EN: XMSMDATA7: GPJ2[7] output high */
> - ? ? ? s5p_gpio_direction_output(&s5pc110_gpio->j2, 7, 1);
> + ? ? ? s5p_gpio_direction_output(&s5p_gpio->j2, 7, 1);

unrelated change.

>
> ? ? ? ?/*
> ? ? ? ? * MMC0 GPIO
> @@ -86,11 +90,11 @@ int board_mmc_init(bd_t *bis)
> ? ? ? ? ? ? ? ?if (i == 2)
> ? ? ? ? ? ? ? ? ? ? ? ?continue;
> ? ? ? ? ? ? ? ?/* GPG0[0:6] special function 2 */
> - ? ? ? ? ? ? ? s5p_gpio_cfg_pin(&s5pc110_gpio->g0, i, 0x2);
> + ? ? ? ? ? ? ? s5p_gpio_cfg_pin(&s5p_gpio->g0, i, 0x2);

ditto.

> ? ? ? ? ? ? ? ?/* GPG0[0:6] pull disable */
> - ? ? ? ? ? ? ? s5p_gpio_set_pull(&s5pc110_gpio->g0, i, GPIO_PULL_NONE);
> + ? ? ? ? ? ? ? s5p_gpio_set_pull(&s5p_gpio->g0, i, GPIO_PULL_NONE);

ditto.


> ? ? ? ? ? ? ? ?/* GPG0[0:6] drv 4x */
> - ? ? ? ? ? ? ? s5p_gpio_set_drv(&s5pc110_gpio->g0, i, GPIO_DRV_4X);
> + ? ? ? ? ? ? ? s5p_gpio_set_drv(&s5p_gpio->g0, i, GPIO_DRV_4X);

ditto.


> ? ? ? ?}
>
> ? ? ? ?return s5p_mmc_init(0, 4);
> diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c
> index 2043859..e247b6f 100644
> --- a/drivers/gpio/s5p_gpio.c
> +++ b/drivers/gpio/s5p_gpio.c
> @@ -141,3 +141,27 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode)
>
> ? ? ? ?writel(value, &bank->drv);
> ?}
> +
> +#ifdef CONFIG_SOFT_I2C

I think, we don't have to use ifdef here.
These are looks common functions of GPIO.

> +/* Platform dependent functions for extracting GPIO number */
> +int s5p_gpio_get_nr(void *gp_ptr, int gpio)
> +{
> + ? ? ? unsigned int offset = gp_ptr - (void *) s5p_gpio;
> + ? ? ? offset /= sizeof(struct s5p_gpio_bank);
> +
> + ? ? ? return (offset * GPIO_PER_BANK) + gpio;
> +}
> +
> +struct s5p_gpio_bank *s5p_gpio_get_bank(int nr)
> +{
> + ? ? ? int bank = nr / GPIO_PER_BANK;
> + ? ? ? bank *= sizeof(struct s5p_gpio_bank);
> +
> + ? ? ? return (struct s5p_gpio_bank *) ((void *) s5p_gpio + bank);
> +}
> +
> +int s5p_gpio_get_pin(int nr)
> +{
> + ? ? ? return nr % GPIO_PER_BANK;
> +}
> +#endif
> diff --git a/include/configs/s5p_goni.h b/include/configs/s5p_goni.h
> index 381bb39..620dca7 100644
> --- a/include/configs/s5p_goni.h
> +++ b/include/configs/s5p_goni.h
> @@ -223,4 +223,18 @@
>
> ?#define CONFIG_SYS_INIT_SP_ADDR ? ? ? ?(CONFIG_SYS_LOAD_ADDR - 0x1000000)
>
> +#include <asm/arch/gpio.h>
> +/*
> + * I2C Settings
> + */
> +#define S5PC110_GPIO_J3 ? ? ? ? ?(S5PC110_GPIO_BASE + 0x2C0)
> +#define CONFIG_SOFT_I2C_GPIO_SCL s5p_gpio_get_nr(S5PC110_GPIO_J3, 3)
> +#define CONFIG_SOFT_I2C_GPIO_SDA s5p_gpio_get_nr(S5PC110_GPIO_J3, 0)
> +
> +#define CONFIG_SOFT_I2C ? ? ? ?1
> +#define CONFIG_SYS_I2C_SPEED ? 50000
> +#define CONFIG_SYS_I2C_INIT_BOARD
> +#define CONFIG_I2C_MULTI_BUS
> +#define CONFIG_SYS_MAX_I2C_BUS 7
> +
> ?#endif /* __CONFIG_H */

I think, you can divide into 2 patches.
One is for GPIO.
Another is for enabling soft i2c.

Thanks
Minkyu Kang
-- 
from. prom.
www.promsoft.net

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH] gpio:samsung: s5p_ suffix add for GPIO functions (C210_universal)
  2011-08-10  9:18   ` [U-Boot] [PATCH] gpio:samsung: s5p_ suffix add for GPIO functions (C210_universal) Lukasz Majewski
@ 2011-08-11  9:51     ` Minkyu Kang
  0 siblings, 0 replies; 24+ messages in thread
From: Minkyu Kang @ 2011-08-11  9:51 UTC (permalink / raw)
  To: u-boot

Dear Lukasz,

On 10 August 2011 18:18, Lukasz Majewski <l.majewski@samsung.com> wrote:
> This is a cosmetic patch, which is changing the gpio_ prefix to
> s5p_gpio_.
>
> Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> ---
> ?board/samsung/universal_c210/universal.c | ? 28 ++++++++++++++--------------
> ?1 files changed, 14 insertions(+), 14 deletions(-)

applied to u-boot-samsung

Thanks
Minkyu Kang
-- 
from. prom.
www.promsoft.net

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH 0/2] i2c:gpio:s5p: I2C GPIO SW implementation (via soft_i2c)
  2011-07-11  8:18 [U-Boot] [PATCH 0/2] i2c:gpio:s5p I2C GPIO rework Lukasz Majewski
                   ` (3 preceding siblings ...)
  2011-08-10  9:21 ` [U-Boot] [PATCH v3] " Lukasz Majewski
@ 2011-08-12  8:32 ` Lukasz Majewski
  2011-08-12  8:32   ` [U-Boot] [PATCH 1/2 v4] i2c:gpio:s5p: I2C GPIO Software " Lukasz Majewski
  2011-08-12  8:32   ` [U-Boot] [PATCH 2/2] i2c:gpio:s5p: Enable I2C GPIO on the GONI target Lukasz Majewski
  2011-08-23  8:34 ` [U-Boot] [PATCH v2 0/2] i2c:gpio:s5p I2C GPIO rework Lukasz Majewski
  5 siblings, 2 replies; 24+ messages in thread
From: Lukasz Majewski @ 2011-08-12  8:32 UTC (permalink / raw)
  To: u-boot

This patches adds support for I2C GPIO S5PC1xx and S5PC2xx targets.
Moreover the I2C GPIO on the S5PC110 GONI reference target is enabled.

Lukasz Majewski (2):
  i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
  i2c:gpio:s5p: Enable I2C GPIO on the GONI target

 arch/arm/include/asm/arch-s5pc1xx/gpio.h |   38 +++++++++++++++++++++++++++++
 arch/arm/include/asm/arch-s5pc2xx/gpio.h |   39 ++++++++++++++++++++++++++++++
 board/samsung/goni/goni.c                |    2 +
 board/samsung/universal_c210/universal.c |    2 +
 drivers/gpio/s5p_gpio.c                  |   21 ++++++++++++++++
 include/configs/s5p_goni.h               |   13 ++++++++++
 6 files changed, 115 insertions(+), 0 deletions(-)

-- 
1.7.2.3

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH 1/2 v4] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
  2011-08-12  8:32 ` [U-Boot] [PATCH 0/2] i2c:gpio:s5p: I2C GPIO SW " Lukasz Majewski
@ 2011-08-12  8:32   ` Lukasz Majewski
  2011-08-18  8:13     ` Minkyu Kang
  2011-08-12  8:32   ` [U-Boot] [PATCH 2/2] i2c:gpio:s5p: Enable I2C GPIO on the GONI target Lukasz Majewski
  1 sibling, 1 reply; 24+ messages in thread
From: Lukasz Majewski @ 2011-08-12  8:32 UTC (permalink / raw)
  To: u-boot

This patch adds support for software I2C for GONI reference target.
It adds support for access to GPIOs by number, not as it is present,
by bank and offset.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Heiko Schocher <hs@denx.de>

---
Changes for v2:
        - Generic GPIO code added to arch/arm/gpio.h
        - Platform dependent GPIO code added to board/samsung/goni.c
        - Code cleanup
Changes for v3:
        - I2C GPIO common code added to drivers/gpio/s5p_gpio.c
	- i2c_init_board() function added(required by soft_i2c)
Changes for v4:
	- i2x_init_board() removed
	- s5pc210 support added
	- GPIO code and I2C enable code split to separate patches
---
 arch/arm/include/asm/arch-s5pc1xx/gpio.h |   38 +++++++++++++++++++++++++++++
 arch/arm/include/asm/arch-s5pc2xx/gpio.h |   39 ++++++++++++++++++++++++++++++
 board/samsung/goni/goni.c                |    2 +
 board/samsung/universal_c210/universal.c |    2 +
 drivers/gpio/s5p_gpio.c                  |   21 ++++++++++++++++
 5 files changed, 102 insertions(+), 0 deletions(-)

diff --git a/arch/arm/include/asm/arch-s5pc1xx/gpio.h b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
index 903de9c..4a5ca87 100644
--- a/arch/arm/include/asm/arch-s5pc1xx/gpio.h
+++ b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
@@ -134,6 +134,41 @@ unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
 void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
 void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
 void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
+struct s5p_gpio_bank *s5p_gpio_get_bank(int nr);
+int s5p_gpio_get_pin(int nr);
+
+static inline int gpio_request(int gpio, const char *label)
+{
+	return 0;
+}
+
+static inline int gpio_direction_input(int nr)
+{
+	s5p_gpio_direction_input(s5p_gpio_get_bank(nr),
+				s5p_gpio_get_pin(nr));
+	return 0;
+}
+
+static inline int gpio_direction_output(int nr, int value)
+{
+	s5p_gpio_direction_output(s5p_gpio_get_bank(nr),
+				 s5p_gpio_get_pin(nr), value);
+	return 0;
+}
+
+static inline int gpio_get_value(int nr)
+{
+	return (int) s5p_gpio_get_value(s5p_gpio_get_bank(nr),
+				       s5p_gpio_get_pin(nr));
+}
+
+static inline void gpio_set_value(int nr, int value)
+{
+	s5p_gpio_set_value(s5p_gpio_get_bank(nr),
+			  s5p_gpio_get_pin(nr), value);
+}
+
+extern void *s5p_gpio;
 #endif
 
 /* Pin configurations */
@@ -155,4 +190,7 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
 #define GPIO_DRV_FAST	0x0
 #define GPIO_DRV_SLOW	0x1
 
+/* GPIO pins per bank  */
+#define GPIO_PER_BANK 8
+
 #endif
diff --git a/arch/arm/include/asm/arch-s5pc2xx/gpio.h b/arch/arm/include/asm/arch-s5pc2xx/gpio.h
index 8db5895..82aaab5 100644
--- a/arch/arm/include/asm/arch-s5pc2xx/gpio.h
+++ b/arch/arm/include/asm/arch-s5pc2xx/gpio.h
@@ -88,6 +88,41 @@ unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
 void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
 void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
 void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
+struct s5p_gpio_bank *s5p_gpio_get_bank(int nr);
+int s5p_gpio_get_pin(int nr);
+
+static inline int gpio_request(int gpio, const char *label)
+{
+	return 0;
+}
+
+static inline int gpio_direction_input(int nr)
+{
+	s5p_gpio_direction_input(s5p_gpio_get_bank(nr),
+				s5p_gpio_get_pin(nr));
+	return 0;
+}
+
+static inline int gpio_direction_output(int nr, int value)
+{
+	s5p_gpio_direction_output(s5p_gpio_get_bank(nr),
+				 s5p_gpio_get_pin(nr), value);
+	return 0;
+}
+
+static inline int gpio_get_value(int nr)
+{
+	return (int) s5p_gpio_get_value(s5p_gpio_get_bank(nr),
+				       s5p_gpio_get_pin(nr));
+}
+
+static inline void gpio_set_value(int nr, int value)
+{
+	s5p_gpio_set_value(s5p_gpio_get_bank(nr),
+			  s5p_gpio_get_pin(nr), value);
+}
+
+extern void *s5p_gpio;
 #endif
 
 /* Pin configurations */
@@ -108,4 +143,8 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
 #define GPIO_DRV_4X	0x3
 #define GPIO_DRV_FAST	0x0
 #define GPIO_DRV_SLOW	0x1
+
+/* GPIO pins per bank  */
+#define GPIO_PER_BANK 8
+
 #endif
diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c
index e24cd29..adc1e0e 100644
--- a/board/samsung/goni/goni.c
+++ b/board/samsung/goni/goni.c
@@ -29,11 +29,13 @@
 DECLARE_GLOBAL_DATA_PTR;
 
 static struct s5pc110_gpio *s5pc110_gpio;
+void *s5p_gpio;
 
 int board_init(void)
 {
 	/* Set Initial global variables */
 	s5pc110_gpio = (struct s5pc110_gpio *)S5PC110_GPIO_BASE;
+	s5p_gpio = (void *) s5pc110_gpio;
 
 	gd->bd->bi_arch_number = MACH_TYPE_GONI;
 	gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c
index 1b27e8b..b4a7f86 100644
--- a/board/samsung/universal_c210/universal.c
+++ b/board/samsung/universal_c210/universal.c
@@ -32,6 +32,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 struct s5pc210_gpio_part1 *gpio1;
 struct s5pc210_gpio_part2 *gpio2;
+void *s5p_gpio;
 unsigned int board_rev;
 
 u32 get_board_rev(void)
@@ -50,6 +51,7 @@ int board_init(void)
 {
 	gpio1 = (struct s5pc210_gpio_part1 *) S5PC210_GPIO_PART1_BASE;
 	gpio2 = (struct s5pc210_gpio_part2 *) S5PC210_GPIO_PART2_BASE;
+	s5p_gpio = (void *) gpio1; /* ptr used with I2C SW implementation */
 
 	gd->bd->bi_arch_number = MACH_TYPE_UNIVERSAL_C210;
 	gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c
index 2043859..49c43c7 100644
--- a/drivers/gpio/s5p_gpio.c
+++ b/drivers/gpio/s5p_gpio.c
@@ -141,3 +141,24 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode)
 
 	writel(value, &bank->drv);
 }
+
+int s5p_gpio_get_nr(void *gp_ptr, int gpio)
+{
+	unsigned int offset = gp_ptr - (void *) s5p_gpio;
+	offset /= sizeof(struct s5p_gpio_bank);
+
+	return (offset * GPIO_PER_BANK) + gpio;
+}
+
+struct s5p_gpio_bank *s5p_gpio_get_bank(int nr)
+{
+	int bank = nr / GPIO_PER_BANK;
+	bank *= sizeof(struct s5p_gpio_bank);
+
+	return (struct s5p_gpio_bank *) ((void *) s5p_gpio + bank);
+}
+
+int s5p_gpio_get_pin(int nr)
+{
+	return nr % GPIO_PER_BANK;
+}
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH 2/2] i2c:gpio:s5p: Enable I2C GPIO on the GONI target
  2011-08-12  8:32 ` [U-Boot] [PATCH 0/2] i2c:gpio:s5p: I2C GPIO SW " Lukasz Majewski
  2011-08-12  8:32   ` [U-Boot] [PATCH 1/2 v4] i2c:gpio:s5p: I2C GPIO Software " Lukasz Majewski
@ 2011-08-12  8:32   ` Lukasz Majewski
  1 sibling, 0 replies; 24+ messages in thread
From: Lukasz Majewski @ 2011-08-12  8:32 UTC (permalink / raw)
  To: u-boot

This patch enables the software I2C for GONI reference target.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Heiko Schocher <hs@denx.de>
---
 include/configs/s5p_goni.h |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/include/configs/s5p_goni.h b/include/configs/s5p_goni.h
index 381bb39..79f45b3 100644
--- a/include/configs/s5p_goni.h
+++ b/include/configs/s5p_goni.h
@@ -223,4 +223,17 @@
 
 #define CONFIG_SYS_INIT_SP_ADDR	(CONFIG_SYS_LOAD_ADDR - 0x1000000)
 
+#include <asm/arch/gpio.h>
+/*
+ * I2C Settings
+ */
+#define S5PC110_GPIO_J3          (S5PC110_GPIO_BASE + 0x2C0)
+#define CONFIG_SOFT_I2C_GPIO_SCL s5p_gpio_get_nr(S5PC110_GPIO_J3, 3)
+#define CONFIG_SOFT_I2C_GPIO_SDA s5p_gpio_get_nr(S5PC110_GPIO_J3, 0)
+
+#define CONFIG_SOFT_I2C	1
+#define CONFIG_SYS_I2C_SPEED	50000
+#define CONFIG_I2C_MULTI_BUS
+#define CONFIG_SYS_MAX_I2C_BUS	7
+
 #endif	/* __CONFIG_H */
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH 1/2 v4] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
  2011-08-12  8:32   ` [U-Boot] [PATCH 1/2 v4] i2c:gpio:s5p: I2C GPIO Software " Lukasz Majewski
@ 2011-08-18  8:13     ` Minkyu Kang
  0 siblings, 0 replies; 24+ messages in thread
From: Minkyu Kang @ 2011-08-18  8:13 UTC (permalink / raw)
  To: u-boot

Dear Lukasz Majewski,

On 12 August 2011 17:32, Lukasz Majewski <l.majewski@samsung.com> wrote:
> This patch adds support for software I2C for GONI reference target.
> It adds support for access to GPIOs by number, not as it is present,
> by bank and offset.
>
> Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> Cc: Heiko Schocher <hs@denx.de>
>
> ---
> Changes for v2:
> ? ? ? ?- Generic GPIO code added to arch/arm/gpio.h
> ? ? ? ?- Platform dependent GPIO code added to board/samsung/goni.c
> ? ? ? ?- Code cleanup
> Changes for v3:
> ? ? ? ?- I2C GPIO common code added to drivers/gpio/s5p_gpio.c
> ? ? ? ?- i2c_init_board() function added(required by soft_i2c)
> Changes for v4:
> ? ? ? ?- i2x_init_board() removed
> ? ? ? ?- s5pc210 support added
> ? ? ? ?- GPIO code and I2C enable code split to separate patches
> ---
> ?arch/arm/include/asm/arch-s5pc1xx/gpio.h | ? 38 +++++++++++++++++++++++++++++
> ?arch/arm/include/asm/arch-s5pc2xx/gpio.h | ? 39 ++++++++++++++++++++++++++++++
> ?board/samsung/goni/goni.c ? ? ? ? ? ? ? ?| ? ?2 +
> ?board/samsung/universal_c210/universal.c | ? ?2 +
> ?drivers/gpio/s5p_gpio.c ? ? ? ? ? ? ? ? ?| ? 21 ++++++++++++++++
> ?5 files changed, 102 insertions(+), 0 deletions(-)
> diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c
> index e24cd29..adc1e0e 100644
> --- a/board/samsung/goni/goni.c
> +++ b/board/samsung/goni/goni.c
> @@ -29,11 +29,13 @@
> ?DECLARE_GLOBAL_DATA_PTR;
>
> ?static struct s5pc110_gpio *s5pc110_gpio;
> +void *s5p_gpio;
>
> ?int board_init(void)
> ?{
> ? ? ? ?/* Set Initial global variables */
> ? ? ? ?s5pc110_gpio = (struct s5pc110_gpio *)S5PC110_GPIO_BASE;
> + ? ? ? s5p_gpio = (void *) s5pc110_gpio;

I can't understand it.
Why is it need?
If you want to get gpio base address, then use the define value directly.
s5p_gpio pointer is unnecessary.

>
> ? ? ? ?gd->bd->bi_arch_number = MACH_TYPE_GONI;
> ? ? ? ?gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
> diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c
> index 1b27e8b..b4a7f86 100644
> --- a/board/samsung/universal_c210/universal.c
> +++ b/board/samsung/universal_c210/universal.c
> @@ -32,6 +32,7 @@ DECLARE_GLOBAL_DATA_PTR;
>
> ?struct s5pc210_gpio_part1 *gpio1;
> ?struct s5pc210_gpio_part2 *gpio2;
> +void *s5p_gpio;
> ?unsigned int board_rev;
>
> ?u32 get_board_rev(void)
> @@ -50,6 +51,7 @@ int board_init(void)
> ?{
> ? ? ? ?gpio1 = (struct s5pc210_gpio_part1 *) S5PC210_GPIO_PART1_BASE;
> ? ? ? ?gpio2 = (struct s5pc210_gpio_part2 *) S5PC210_GPIO_PART2_BASE;
> + ? ? ? s5p_gpio = (void *) gpio1; /* ptr used with I2C SW implementation */

How can use gpio part2??

>
> ? ? ? ?gd->bd->bi_arch_number = MACH_TYPE_UNIVERSAL_C210;
> ? ? ? ?gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
> diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c
> index 2043859..49c43c7 100644
> --- a/drivers/gpio/s5p_gpio.c
> +++ b/drivers/gpio/s5p_gpio.c
> @@ -141,3 +141,24 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode)
>
> ? ? ? ?writel(value, &bank->drv);
> ?}
> +
> +int s5p_gpio_get_nr(void *gp_ptr, int gpio)
> +{
> + ? ? ? unsigned int offset = gp_ptr - (void *) s5p_gpio;

As I said..
the purpose of s5p_gpio is to get base address, then please use define value.

> + ? ? ? offset /= sizeof(struct s5p_gpio_bank);
> +
> + ? ? ? return (offset * GPIO_PER_BANK) + gpio;
> +}
> +
> +struct s5p_gpio_bank *s5p_gpio_get_bank(int nr)
> +{
> + ? ? ? int bank = nr / GPIO_PER_BANK;
> + ? ? ? bank *= sizeof(struct s5p_gpio_bank);
> +
> + ? ? ? return (struct s5p_gpio_bank *) ((void *) s5p_gpio + bank);
> +}
> +
> +int s5p_gpio_get_pin(int nr)
> +{
> + ? ? ? return nr % GPIO_PER_BANK;
> +}
> --

And you should solve how can use gpio part2.

Thanks
Minkyu Kang.
-- 
from. prom.
www.promsoft.net

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH v2 0/2] i2c:gpio:s5p I2C GPIO rework
  2011-07-11  8:18 [U-Boot] [PATCH 0/2] i2c:gpio:s5p I2C GPIO rework Lukasz Majewski
                   ` (4 preceding siblings ...)
  2011-08-12  8:32 ` [U-Boot] [PATCH 0/2] i2c:gpio:s5p: I2C GPIO SW " Lukasz Majewski
@ 2011-08-23  8:34 ` Lukasz Majewski
  2011-08-23  8:34   ` [U-Boot] [PATCH v6 1/2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c) Lukasz Majewski
  2011-08-23  8:34   ` [U-Boot] [PATCH v2 2/2] i2c:gpio:s5p: Enable I2C GPIO on the GONI target Lukasz Majewski
  5 siblings, 2 replies; 24+ messages in thread
From: Lukasz Majewski @ 2011-08-23  8:34 UTC (permalink / raw)
  To: u-boot

Below patches are supposed to adapt S5P processor's GPIO
subsystem to soft_i2c software GPIO framework.

Lukasz Majewski (2):
  i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
  i2c:gpio:s5p: Enable I2C GPIO on the GONI target

 arch/arm/include/asm/arch-s5pc1xx/gpio.h |   13 +++++++++
 arch/arm/include/asm/arch-s5pc2xx/gpio.h |   29 +++++++++++++++++++
 drivers/gpio/s5p_gpio.c                  |   44 ++++++++++++++++++++++++++++++
 include/configs/s5p_goni.h               |   12 ++++++++
 4 files changed, 98 insertions(+), 0 deletions(-)

---
Changes for v2:
        - Macros for calculating the pin number from block pointer
        - Removal of the s5p_gpio generic pointer
-- 
1.7.2.3

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH v6 1/2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
  2011-08-23  8:34 ` [U-Boot] [PATCH v2 0/2] i2c:gpio:s5p I2C GPIO rework Lukasz Majewski
@ 2011-08-23  8:34   ` Lukasz Majewski
  2011-08-30  3:47     ` Minkyu Kang
  2011-08-23  8:34   ` [U-Boot] [PATCH v2 2/2] i2c:gpio:s5p: Enable I2C GPIO on the GONI target Lukasz Majewski
  1 sibling, 1 reply; 24+ messages in thread
From: Lukasz Majewski @ 2011-08-23  8:34 UTC (permalink / raw)
  To: u-boot

This patch adds support for software I2C for GONI and Universal C210 reference targets.
It adds support for access to GPIOs by number, not as it is present,
by bank and offset.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Heiko Schocher <hs@denx.de>

---
Changes for v2:
	- Generic GPIO code added to arch/arm/gpio.h
	- Platform dependent GPIO code added to board/samsung/goni.c
	- Code cleanup
Changes for v3:
	- I2C GPIO common code added to drivers/gpio/s5p_gpio.c
	- i2c_init_board() function added(required by soft_i2c)
Changes for v4:
	- i2x_init_board() removed
	- s5pc210 support added
	- GPIO code and I2C enable code split to separate patches
Changes for v5:
	- s5p_gpio pointer removed and replaced with generic s5p_gpio_base
	function
	- removed duplicated code
Changes for v6:
	- s5pc[1|2]10_gpio_get_nr macro added. More redable code for I2C
        gpio pins definition
---
 arch/arm/include/asm/arch-s5pc1xx/gpio.h |   13 +++++++++
 arch/arm/include/asm/arch-s5pc2xx/gpio.h |   29 +++++++++++++++++++
 drivers/gpio/s5p_gpio.c                  |   44 ++++++++++++++++++++++++++++++
 3 files changed, 86 insertions(+), 0 deletions(-)

diff --git a/arch/arm/include/asm/arch-s5pc1xx/gpio.h b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
index 903de9c..76b901b 100644
--- a/arch/arm/include/asm/arch-s5pc1xx/gpio.h
+++ b/arch/arm/include/asm/arch-s5pc1xx/gpio.h
@@ -134,6 +134,19 @@ unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
 void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
 void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
 void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
+
+/* GPIO pins per bank  */
+#define GPIO_PER_BANK 8
+
+static inline unsigned int s5p_gpio_base(int nr)
+{
+	return S5PC110_GPIO_BASE;
+}
+
+#define s5pc110_gpio_get_nr(bank, pin) \
+	((((((unsigned int)&(((struct s5pc110_gpio *)S5PC110_GPIO_BASE)->bank))\
+	    - S5PC110_GPIO_BASE) / sizeof(struct s5p_gpio_bank)) \
+	  * GPIO_PER_BANK) + pin)
 #endif
 
 /* Pin configurations */
diff --git a/arch/arm/include/asm/arch-s5pc2xx/gpio.h b/arch/arm/include/asm/arch-s5pc2xx/gpio.h
index 8db5895..8be620c 100644
--- a/arch/arm/include/asm/arch-s5pc2xx/gpio.h
+++ b/arch/arm/include/asm/arch-s5pc2xx/gpio.h
@@ -88,6 +88,35 @@ unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio);
 void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode);
 void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode);
 void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
+
+/* GPIO pins per bank  */
+#define GPIO_PER_BANK 8
+
+#define s5pc210_gpio_part1_get_nr(bank, pin) \
+	((((((unsigned int) &(((struct s5pc210_gpio_part1 *) \
+			       S5PC210_GPIO_PART1_BASE)->bank)) \
+	    - S5PC210_GPIO_PART1_BASE) / sizeof(struct s5p_gpio_bank)) \
+	  * GPIO_PER_BANK) + pin)
+
+#define GPIO_PART1_MAX ((sizeof(struct s5pc210_gpio_part1) \
+			    / sizeof(struct s5p_gpio_bank)) * GPIO_PER_BANK)
+
+#define s5pc210_gpio_part2_get_nr(bank, pin) \
+	(((((((unsigned int) &(((struct s5pc210_gpio_part2 *) \
+				S5PC210_GPIO_PART2_BASE)->bank)) \
+	    - S5PC210_GPIO_PART2_BASE) / sizeof(struct s5p_gpio_bank)) \
+	  * GPIO_PER_BANK) + pin) + GPIO_PART1_MAX)
+
+static inline unsigned int s5p_gpio_base(int nr)
+{
+	if (nr < GPIO_PART1_MAX)
+		return S5PC210_GPIO_PART1_BASE;
+	else
+		return S5PC210_GPIO_PART2_BASE;
+
+	return 0;
+}
+
 #endif
 
 /* Pin configurations */
diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c
index 2043859..1edf9a2 100644
--- a/drivers/gpio/s5p_gpio.c
+++ b/drivers/gpio/s5p_gpio.c
@@ -141,3 +141,47 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode)
 
 	writel(value, &bank->drv);
 }
+
+struct s5p_gpio_bank *s5p_gpio_get_bank(int nr)
+{
+	int bank = nr / GPIO_PER_BANK;
+	bank *= sizeof(struct s5p_gpio_bank);
+
+	return (struct s5p_gpio_bank *) (s5p_gpio_base(nr) + bank);
+}
+
+int s5p_gpio_get_pin(int nr)
+{
+	return nr % GPIO_PER_BANK;
+}
+
+int gpio_request(int gpio, const char *label)
+{
+	return 0;
+}
+
+int gpio_direction_input(int nr)
+{
+	s5p_gpio_direction_input(s5p_gpio_get_bank(nr),
+				s5p_gpio_get_pin(nr));
+	return 0;
+}
+
+int gpio_direction_output(int nr, int value)
+{
+	s5p_gpio_direction_output(s5p_gpio_get_bank(nr),
+				 s5p_gpio_get_pin(nr), value);
+	return 0;
+}
+
+int gpio_get_value(int nr)
+{
+	return (int) s5p_gpio_get_value(s5p_gpio_get_bank(nr),
+				       s5p_gpio_get_pin(nr));
+}
+
+void gpio_set_value(int nr, int value)
+{
+	s5p_gpio_set_value(s5p_gpio_get_bank(nr),
+			  s5p_gpio_get_pin(nr), value);
+}
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH v2 2/2] i2c:gpio:s5p: Enable I2C GPIO on the GONI target
  2011-08-23  8:34 ` [U-Boot] [PATCH v2 0/2] i2c:gpio:s5p I2C GPIO rework Lukasz Majewski
  2011-08-23  8:34   ` [U-Boot] [PATCH v6 1/2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c) Lukasz Majewski
@ 2011-08-23  8:34   ` Lukasz Majewski
  2011-08-30  3:47     ` Minkyu Kang
  1 sibling, 1 reply; 24+ messages in thread
From: Lukasz Majewski @ 2011-08-23  8:34 UTC (permalink / raw)
  To: u-boot

This patch enables the software I2C for GONI reference target.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Heiko Schocher <hs@denx.de>

---
Changes for v2:
	- Replace explicit GPIO definition with more readable one
---
 include/configs/s5p_goni.h |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/include/configs/s5p_goni.h b/include/configs/s5p_goni.h
index 381bb39..886c8be 100644
--- a/include/configs/s5p_goni.h
+++ b/include/configs/s5p_goni.h
@@ -223,4 +223,16 @@
 
 #define CONFIG_SYS_INIT_SP_ADDR	(CONFIG_SYS_LOAD_ADDR - 0x1000000)
 
+#include <asm/arch/gpio.h>
+/*
+ * I2C Settings
+ */
+#define CONFIG_SOFT_I2C_GPIO_SCL s5pc110_gpio_get_nr(j4, 3)
+#define CONFIG_SOFT_I2C_GPIO_SDA s5pc110_gpio_get_nr(j4, 0)
+
+#define CONFIG_SOFT_I2C	1
+#define CONFIG_SYS_I2C_SPEED	50000
+#define CONFIG_I2C_MULTI_BUS
+#define CONFIG_SYS_MAX_I2C_BUS	7
+
 #endif	/* __CONFIG_H */
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH v6 1/2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
  2011-08-23  8:34   ` [U-Boot] [PATCH v6 1/2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c) Lukasz Majewski
@ 2011-08-30  3:47     ` Minkyu Kang
  0 siblings, 0 replies; 24+ messages in thread
From: Minkyu Kang @ 2011-08-30  3:47 UTC (permalink / raw)
  To: u-boot

Dear Lukasz Majewski,

On 23 August 2011 17:34, Lukasz Majewski <l.majewski@samsung.com> wrote:
> This patch adds support for software I2C for GONI and Universal C210 reference targets.
> It adds support for access to GPIOs by number, not as it is present,
> by bank and offset.
>
> Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> Cc: Heiko Schocher <hs@denx.de>
>
> ---
> Changes for v2:
> ? ? ? ?- Generic GPIO code added to arch/arm/gpio.h
> ? ? ? ?- Platform dependent GPIO code added to board/samsung/goni.c
> ? ? ? ?- Code cleanup
> Changes for v3:
> ? ? ? ?- I2C GPIO common code added to drivers/gpio/s5p_gpio.c
> ? ? ? ?- i2c_init_board() function added(required by soft_i2c)
> Changes for v4:
> ? ? ? ?- i2x_init_board() removed
> ? ? ? ?- s5pc210 support added
> ? ? ? ?- GPIO code and I2C enable code split to separate patches
> Changes for v5:
> ? ? ? ?- s5p_gpio pointer removed and replaced with generic s5p_gpio_base
> ? ? ? ?function
> ? ? ? ?- removed duplicated code
> Changes for v6:
> ? ? ? ?- s5pc[1|2]10_gpio_get_nr macro added. More redable code for I2C
> ? ? ? ?gpio pins definition
> ---
> ?arch/arm/include/asm/arch-s5pc1xx/gpio.h | ? 13 +++++++++
> ?arch/arm/include/asm/arch-s5pc2xx/gpio.h | ? 29 +++++++++++++++++++
> ?drivers/gpio/s5p_gpio.c ? ? ? ? ? ? ? ? ?| ? 44 ++++++++++++++++++++++++++++++
> ?3 files changed, 86 insertions(+), 0 deletions(-)
>

applied to u-boot-samsung

Thanks
Minkyu Kang
-- 
from. prom.
www.promsoft.net

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [U-Boot] [PATCH v2 2/2] i2c:gpio:s5p: Enable I2C GPIO on the GONI target
  2011-08-23  8:34   ` [U-Boot] [PATCH v2 2/2] i2c:gpio:s5p: Enable I2C GPIO on the GONI target Lukasz Majewski
@ 2011-08-30  3:47     ` Minkyu Kang
  0 siblings, 0 replies; 24+ messages in thread
From: Minkyu Kang @ 2011-08-30  3:47 UTC (permalink / raw)
  To: u-boot

Dear Lukasz Majewski,

On 23 August 2011 17:34, Lukasz Majewski <l.majewski@samsung.com> wrote:
> This patch enables the software I2C for GONI reference target.
>
> Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> Cc: Heiko Schocher <hs@denx.de>
>
> ---
> Changes for v2:
> ? ? ? ?- Replace explicit GPIO definition with more readable one
> ---
> ?include/configs/s5p_goni.h | ? 12 ++++++++++++
> ?1 files changed, 12 insertions(+), 0 deletions(-)
>

applied to u-boot-samsung

Thanks
Minkyu Kang
-- 
from. prom.
www.promsoft.net

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2011-08-30  3:47 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-11  8:18 [U-Boot] [PATCH 0/2] i2c:gpio:s5p I2C GPIO rework Lukasz Majewski
2011-07-11  8:18 ` [U-Boot] [PATCH 1/2] gpio:s5p s5p_ suffix add for GPIO functions Lukasz Majewski
2011-07-15  9:36   ` Minkyu Kang
2011-07-15 10:16   ` [U-Boot] [RESEND PATCH] gpio:samsung " Lukasz Majewski
2011-07-18 18:05     ` Mike Frysinger
2011-07-26  5:54       ` Minkyu Kang
2011-08-10  9:18   ` [U-Boot] [PATCH] gpio:samsung: s5p_ suffix add for GPIO functions (C210_universal) Lukasz Majewski
2011-08-11  9:51     ` Minkyu Kang
2011-07-11  8:18 ` [U-Boot] [PATCH 2/2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c) Lukasz Majewski
2011-07-15  9:52   ` Minkyu Kang
2011-07-15 10:50     ` Lukasz Majewski
2011-07-20  8:35 ` [U-Boot] [PATCH v2] " Lukasz Majewski
2011-08-09  2:19   ` Minkyu Kang
2011-08-10  9:21 ` [U-Boot] [PATCH v3] " Lukasz Majewski
2011-08-11  9:43   ` Minkyu Kang
2011-08-12  8:32 ` [U-Boot] [PATCH 0/2] i2c:gpio:s5p: I2C GPIO SW " Lukasz Majewski
2011-08-12  8:32   ` [U-Boot] [PATCH 1/2 v4] i2c:gpio:s5p: I2C GPIO Software " Lukasz Majewski
2011-08-18  8:13     ` Minkyu Kang
2011-08-12  8:32   ` [U-Boot] [PATCH 2/2] i2c:gpio:s5p: Enable I2C GPIO on the GONI target Lukasz Majewski
2011-08-23  8:34 ` [U-Boot] [PATCH v2 0/2] i2c:gpio:s5p I2C GPIO rework Lukasz Majewski
2011-08-23  8:34   ` [U-Boot] [PATCH v6 1/2] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c) Lukasz Majewski
2011-08-30  3:47     ` Minkyu Kang
2011-08-23  8:34   ` [U-Boot] [PATCH v2 2/2] i2c:gpio:s5p: Enable I2C GPIO on the GONI target Lukasz Majewski
2011-08-30  3:47     ` Minkyu Kang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.