Patchwork [U-Boot,V6,10/10] EXYNOS5: I2C: Added FDT and non-FDT support for I2C

login
register
mail settings
Submitter Amar
Date Feb. 15, 2013, 6:34 a.m.
Message ID <1360910091-6285-11-git-send-email-amarendra.xt@samsung.com>
Download mbox | patch
Permalink /patch/220655/
State Changes Requested
Delegated to: Minkyu Kang
Headers show

Comments

Amar - Feb. 15, 2013, 6:34 a.m.
This patch adds FDT and non-FDT support for I2C, and initialise
the I2C channels.

Signed-off-by: Amar <amarendra.xt@samsung.com>
---
Changes since V4:
	New patch.

Changes since V5:
	1)Removed the function call i2c_init() present inside the
	function board_i2c_init().

 drivers/i2c/s3c24x0_i2c.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)
Simon Glass - Feb. 16, 2013, 4:26 a.m.
Hi Amar,

On Thu, Feb 14, 2013 at 10:34 PM, Amar <amarendra.xt@samsung.com> wrote:
> This patch adds FDT and non-FDT support for I2C, and initialise
> the I2C channels.
>
> Signed-off-by: Amar <amarendra.xt@samsung.com>

Acked-by: Simon Glass <sjg@chromium.org>

(please see below)

> ---
> Changes since V4:
>         New patch.
>
> Changes since V5:
>         1)Removed the function call i2c_init() present inside the
>         function board_i2c_init().
>
>  drivers/i2c/s3c24x0_i2c.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/i2c/s3c24x0_i2c.c b/drivers/i2c/s3c24x0_i2c.c
> index 769a2ba..5b4c3d2 100644
> --- a/drivers/i2c/s3c24x0_i2c.c
> +++ b/drivers/i2c/s3c24x0_i2c.c
> @@ -524,11 +524,12 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)
>                  len) != 0);
>  }
>
> -#ifdef CONFIG_OF_CONTROL
>  void board_i2c_init(const void *blob)
>  {
> +       int i;

Please check that you don't get an unused variable warning here.

> +#ifdef CONFIG_OF_CONTROL
>         int node_list[CONFIG_MAX_I2C_NUM];
> -       int count, i;
> +       int count;
>
>         count = fdtdec_find_aliases_for_id(blob, "i2c",
>                 COMPAT_SAMSUNG_S3C2440_I2C, node_list,
> @@ -548,8 +549,15 @@ void board_i2c_init(const void *blob)
>                 bus->bus_num = i2c_busses++;
>                 exynos_pinmux_config(bus->id, 0);
>         }
> +#else
> +       for (i = 0; i < CONFIG_MAX_I2C_NUM; i++) {
> +               exynos_pinmux_config((PERIPH_ID_I2C0 + i),
> +                                       PINMUX_FLAG_NONE);
> +       }
> +#endif
>  }
>
> +#ifdef CONFIG_OF_CONTROL
>  static struct s3c24x0_i2c_bus *get_bus(unsigned int bus_idx)
>  {
>         if (bus_idx < i2c_busses)
> --
> 1.8.0
>

Regards,
Simon

Patch

diff --git a/drivers/i2c/s3c24x0_i2c.c b/drivers/i2c/s3c24x0_i2c.c
index 769a2ba..5b4c3d2 100644
--- a/drivers/i2c/s3c24x0_i2c.c
+++ b/drivers/i2c/s3c24x0_i2c.c
@@ -524,11 +524,12 @@  int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)
 		 len) != 0);
 }
 
-#ifdef CONFIG_OF_CONTROL
 void board_i2c_init(const void *blob)
 {
+	int i;
+#ifdef CONFIG_OF_CONTROL
 	int node_list[CONFIG_MAX_I2C_NUM];
-	int count, i;
+	int count;
 
 	count = fdtdec_find_aliases_for_id(blob, "i2c",
 		COMPAT_SAMSUNG_S3C2440_I2C, node_list,
@@ -548,8 +549,15 @@  void board_i2c_init(const void *blob)
 		bus->bus_num = i2c_busses++;
 		exynos_pinmux_config(bus->id, 0);
 	}
+#else
+	for (i = 0; i < CONFIG_MAX_I2C_NUM; i++) {
+		exynos_pinmux_config((PERIPH_ID_I2C0 + i),
+					PINMUX_FLAG_NONE);
+	}
+#endif
 }
 
+#ifdef CONFIG_OF_CONTROL
 static struct s3c24x0_i2c_bus *get_bus(unsigned int bus_idx)
 {
 	if (bus_idx < i2c_busses)