Re: [PATCH v2 1/1] i2c: rcar: modify I2C driver

2013-07-22 Thread Nguyen Viet Dung

Hi Wolfram,

I'm sorry ,I had mistake for your'address.

Please consider this patch.
It have tested on Lager board (R8A7790 soc) and it seen like goood.

Thanks you,
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/1] i2c: rcar: modify I2C driver

2013-07-22 Thread Nguyen Viet Dung

Hi Wolfram, Morimoto-san

On 07/11/2013 06:03 PM, Kuninori Morimoto wrote:

Hi Wolfram, Dung-san

# I added Wolfram's email address


From: Nguyen Viet Dung 

This patch modify calculate for clock in I2C driver.

Signed-off-by: Nguyen Viet Dung 
---

You forgot to add Wolfram's email address on this patch

Acked-by: Kuninori Morimoto 

I am sorry, I have forgot  to add Wolfram's email address on the patch.

Wolfram,please consider this patch.
It have tested on Lager board (R8A7790 soc) and it seen like goood.

Thanks you,
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/1] i2c: rcar: modify I2C driver

2013-07-21 Thread Nguyen Viet Dung

Hi Wolfram, Morimoto-san

On 07/11/2013 06:03 PM, Kuninori Morimoto wrote:

Hi Wolfram, Dung-san

# I added Wolfram's email address


From: Nguyen Viet Dung 

This patch modify calculate for clock in I2C driver.

Signed-off-by: Nguyen Viet Dung 
---

You forgot to add Wolfram's email address on this patch :)

Acked-by: Kuninori Morimoto 

I am sorry, I have forgot  to add Wolfram's email address on the patch.

Wolfram,please consider this patch.
It have tested on Lager board (R8A7790 soc) and it seen like goood.

Thanks you,



--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/1] i2c: rcar: modify I2C driver

2013-07-11 Thread Kuninori Morimoto

Hi Wolfram, Dung-san

# I added Wolfram's email address

> From: Nguyen Viet Dung 
> 
> This patch modify calculate for clock in I2C driver.
> 
> Signed-off-by: Nguyen Viet Dung 
> ---

You forgot to add Wolfram's email address on this patch :)

Acked-by: Kuninori Morimoto 

>  drivers/i2c/busses/i2c-rcar.c |   17 +++--
>  include/linux/i2c/i2c-rcar.h  |4 
>  2 files changed, 19 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c
> index 4ba4a95..85987c1 100644
> --- a/drivers/i2c/busses/i2c-rcar.c
> +++ b/drivers/i2c/busses/i2c-rcar.c
> @@ -221,15 +221,28 @@ static int rcar_i2c_clock_calculate(struct 
> rcar_i2c_priv *priv,
>   struct device *dev)
>  {
>   struct clk *clkp = clk_get(NULL, "peripheral_clk");
> + struct i2c_rcar_platform_data *pdata = dev->platform_data;
>   u32 scgd, cdf;
>   u32 round, ick;
>   u32 scl;
> + u32 cdf_width;
> + u32 flags = pdata ? pdata->flags : 0;
>  
>   if (!clkp) {
>   dev_err(dev, "there is no peripheral_clk\n");
>   return -EIO;
>   }
>  
> + switch (flags & I2C_RCAR_FLAGS_ICCCR_MASK) {
> + default:
> + case I2C_RCAR_FLAGS_ICCCR_IS_2BIT:
> + cdf_width = 2;
> + break;
> + case I2C_RCAR_FLAGS_ICCCR_IS_3BIT:
> + cdf_width = 3;
> + break;
> + }
> +
>   /*
>* calculate SCL clock
>* see
> @@ -245,7 +258,7 @@ static int rcar_i2c_clock_calculate(struct rcar_i2c_priv 
> *priv,
>* clkp : peripheral_clk
>* F[]  : integer up-valuation
>*/
> - for (cdf = 0; cdf < 4; cdf++) {
> + for (cdf = 0; cdf < (1 << cdf_width); cdf++) {
>   ick = clk_get_rate(clkp) / (1 + cdf);
>   if (ick < 2000)
>   goto ick_find;
> @@ -287,7 +300,7 @@ scgd_find:
>   /*
>* keep icccr value
>*/
> - priv->icccr = (scgd << 2 | cdf);
> + priv->icccr = (scgd << (cdf_width) | cdf);
>  
>   return 0;
>  }
> diff --git a/include/linux/i2c/i2c-rcar.h b/include/linux/i2c/i2c-rcar.h
> index 496f5c2..572a6e5 100644
> --- a/include/linux/i2c/i2c-rcar.h
> +++ b/include/linux/i2c/i2c-rcar.h
> @@ -5,6 +5,10 @@
>  
>  struct i2c_rcar_platform_data {
>   u32 bus_speed;
> + u32 flags;
> +#define I2C_RCAR_FLAGS_ICCCR_MASK(0xF << 0)
> +#define I2C_RCAR_FLAGS_ICCCR_IS_2BIT (0 << 0) /* default */
> +#define I2C_RCAR_FLAGS_ICCCR_IS_3BIT (1 << 0)
>  };
>  
>  #endif /* __I2C_R_CAR_H__ */
> -- 
> 1.7.9.5
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 1/1] i2c: rcar: modify I2C driver

2013-07-10 Thread Nguyen Viet Dung
From: Nguyen Viet Dung 

This patch modify calculate for clock in I2C driver.

Signed-off-by: Nguyen Viet Dung 
---
 drivers/i2c/busses/i2c-rcar.c |   17 +++--
 include/linux/i2c/i2c-rcar.h  |4 
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c
index 4ba4a95..85987c1 100644
--- a/drivers/i2c/busses/i2c-rcar.c
+++ b/drivers/i2c/busses/i2c-rcar.c
@@ -221,15 +221,28 @@ static int rcar_i2c_clock_calculate(struct rcar_i2c_priv 
*priv,
struct device *dev)
 {
struct clk *clkp = clk_get(NULL, "peripheral_clk");
+   struct i2c_rcar_platform_data *pdata = dev->platform_data;
u32 scgd, cdf;
u32 round, ick;
u32 scl;
+   u32 cdf_width;
+   u32 flags = pdata ? pdata->flags : 0;
 
if (!clkp) {
dev_err(dev, "there is no peripheral_clk\n");
return -EIO;
}
 
+   switch (flags & I2C_RCAR_FLAGS_ICCCR_MASK) {
+   default:
+   case I2C_RCAR_FLAGS_ICCCR_IS_2BIT:
+   cdf_width = 2;
+   break;
+   case I2C_RCAR_FLAGS_ICCCR_IS_3BIT:
+   cdf_width = 3;
+   break;
+   }
+
/*
 * calculate SCL clock
 * see
@@ -245,7 +258,7 @@ static int rcar_i2c_clock_calculate(struct rcar_i2c_priv 
*priv,
 * clkp : peripheral_clk
 * F[]  : integer up-valuation
 */
-   for (cdf = 0; cdf < 4; cdf++) {
+   for (cdf = 0; cdf < (1 << cdf_width); cdf++) {
ick = clk_get_rate(clkp) / (1 + cdf);
if (ick < 2000)
goto ick_find;
@@ -287,7 +300,7 @@ scgd_find:
/*
 * keep icccr value
 */
-   priv->icccr = (scgd << 2 | cdf);
+   priv->icccr = (scgd << (cdf_width) | cdf);
 
return 0;
 }
diff --git a/include/linux/i2c/i2c-rcar.h b/include/linux/i2c/i2c-rcar.h
index 496f5c2..572a6e5 100644
--- a/include/linux/i2c/i2c-rcar.h
+++ b/include/linux/i2c/i2c-rcar.h
@@ -5,6 +5,10 @@
 
 struct i2c_rcar_platform_data {
u32 bus_speed;
+   u32 flags;
+#define I2C_RCAR_FLAGS_ICCCR_MASK  (0xF << 0)
+#define I2C_RCAR_FLAGS_ICCCR_IS_2BIT   (0 << 0) /* default */
+#define I2C_RCAR_FLAGS_ICCCR_IS_3BIT   (1 << 0)
 };
 
 #endif /* __I2C_R_CAR_H__ */
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html