Re: [PATCH v2 1/1] i2c: rcar: modify I2C driver
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
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
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
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
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