* [PATCH 4/6] i2c: rcar: use devm_clk_get to ensure clock is properly ref-counted [not found] <1390752337-22386-1-git-send-email-ben.dooks@codethink.co.uk> @ 2014-01-26 16:05 ` Ben Dooks [not found] ` <1390752337-22386-1-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> 2014-01-26 16:05 ` [PATCH 6/6] i2c: rcar: fix NACK error code Ben Dooks 2 siblings, 0 replies; 13+ messages in thread From: Ben Dooks @ 2014-01-26 16:05 UTC (permalink / raw) To: linux-kernel; +Cc: Ben Dooks, Simon Horman, Wolfram Sang, linux-i2c, linux-sh The current i2c-rcar driver does clk_get() without a corresponding clk_put(). Add the clk to the driver private data and then get it with the devm functions so that it is released when the driver is unbound. Note, we do not call clk_prepare_enable() at this point due to the very possible magic that is being done by the pm_runtime system underneath the driver. Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> --- Changes since v1: - use PTR_ERR() if devm_clk_get() fails Cc: Simon Horman <horms+renesas@verge.net.au> Cc: Wolfram Sang <wsa@the-dreams.de> Cc: linux-i2c@vger.kernel.org Cc: linux-sh@vger.kernel.org --- drivers/i2c/busses/i2c-rcar.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c index 0d25104..dc8c224 100644 --- a/drivers/i2c/busses/i2c-rcar.c +++ b/drivers/i2c/busses/i2c-rcar.c @@ -111,6 +111,7 @@ struct rcar_i2c_priv { void __iomem *io; struct i2c_adapter adap; struct i2c_msg *msg; + struct clk *clk; spinlock_t lock; wait_queue_head_t wait; @@ -227,18 +228,12 @@ static int rcar_i2c_clock_calculate(struct rcar_i2c_priv *priv, u32 bus_speed, struct device *dev) { - struct clk *clkp = clk_get(dev, NULL); u32 scgd, cdf; u32 round, ick; u32 scl; u32 cdf_width; unsigned long rate; - if (IS_ERR(clkp)) { - dev_err(dev, "couldn't get clock\n"); - return PTR_ERR(clkp); - } - switch (priv->devtype) { case I2C_RCAR_GEN1: cdf_width = 2; @@ -266,7 +261,7 @@ static int rcar_i2c_clock_calculate(struct rcar_i2c_priv *priv, * clkp : peripheral_clk * F[] : integer up-valuation */ - rate = clk_get_rate(clkp); + rate = clk_get_rate(priv->clk); cdf = rate / 20000000; if (cdf >= 1 << cdf_width) { dev_err(dev, "Input clock %lu too high\n", rate); @@ -308,7 +303,7 @@ static int rcar_i2c_clock_calculate(struct rcar_i2c_priv *priv, scgd_find: dev_dbg(dev, "clk %d/%d(%lu), round %u, CDF:0x%x, SCGD: 0x%x\n", - scl, bus_speed, clk_get_rate(clkp), round, cdf, scgd); + scl, bus_speed, clk_get_rate(priv->clk), round, cdf, scgd); /* * keep icccr value @@ -664,6 +659,12 @@ static int rcar_i2c_probe(struct platform_device *pdev) return -ENOMEM; } + priv->clk = devm_clk_get(dev, NULL); + if (IS_ERR(priv->clk)) { + dev_err(dev, "cannot get clock\n"); + return PTR_ERR(priv->clk); + } + bus_speed = 100000; /* default 100 kHz */ ret = of_property_read_u32(dev->of_node, "clock-frequency", &bus_speed); if (ret < 0 && pdata && pdata->bus_speed) -- 1.8.5.2 ^ permalink raw reply related [flat|nested] 13+ messages in thread
[parent not found: <1390752337-22386-1-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>]
* [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer [not found] ` <1390752337-22386-1-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> @ 2014-01-26 16:05 ` Ben Dooks [not found] ` <1390752337-22386-4-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> ` (2 more replies) 2014-01-26 16:05 ` [PATCH 5/6] i2c: update i2c_algorithm documentation Ben Dooks 1 sibling, 3 replies; 13+ messages in thread From: Ben Dooks @ 2014-01-26 16:05 UTC (permalink / raw) To: linux-kernel-81qHHgoATdFT9dQujB1mzip2UmYkHbXO Cc: Ben Dooks, Simon Horman, Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA The i2c-rcar driver currently prints an error message if the master_xfer callback fails. However if the bus is being probed then lots of NAKs will be generated, causing the output of a number of errors printed. To solve this, disable the print if the error is not -EREMOTEIO. An example of running i2cdetect: 10: i2c-rcar e6530000.i2c: error -121 : 15 -- i2c-rcar e6530000.i2c: error -121 : 15 -- 12 i2c-rcar e6530000.i2c: error -121 : 15 -- i2c-rcar e6530000.i2c: error -121 : 15 -- i2c-rcar e6530000.i2c: error -121 : 15 -- i2c-rcar e6530000.i2c: error -121 : 15 -- i2c-rcar e6530000.i2c: error -121 : 15 -- i2c-rcar e6530000.i2c: error -121 : 15 Cc: Simon Horman <horms+renesas-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org> Cc: Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org> Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: linux-sh-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Signed-off-by: Ben Dooks <ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> --- drivers/i2c/busses/i2c-rcar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c index 2c2fd7c..0d25104 100644 --- a/drivers/i2c/busses/i2c-rcar.c +++ b/drivers/i2c/busses/i2c-rcar.c @@ -623,7 +623,7 @@ static int rcar_i2c_master_xfer(struct i2c_adapter *adap, pm_runtime_put(dev); - if (ret < 0) + if (ret < 0 && ret != -EREMOTEIO) dev_err(dev, "error %d : %x\n", ret, priv->flags); return ret; -- 1.8.5.2 ^ permalink raw reply related [flat|nested] 13+ messages in thread
[parent not found: <1390752337-22386-4-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>]
* Re: [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer [not found] ` <1390752337-22386-4-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> @ 2014-01-26 21:50 ` Wolfram Sang 0 siblings, 0 replies; 13+ messages in thread From: Wolfram Sang @ 2014-01-26 21:50 UTC (permalink / raw) To: Ben Dooks Cc: linux-kernel-81qHHgoATdFT9dQujB1mzip2UmYkHbXO, Simon Horman, linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA [-- Attachment #1: Type: text/plain, Size: 1191 bytes --] On Sun, Jan 26, 2014 at 04:05:34PM +0000, Ben Dooks wrote: > The i2c-rcar driver currently prints an error message if the master_xfer > callback fails. However if the bus is being probed then lots of NAKs > will be generated, causing the output of a number of errors printed. > > To solve this, disable the print if the error is not -EREMOTEIO. > > An example of running i2cdetect: > > 10: i2c-rcar e6530000.i2c: error -121 : 15 > -- i2c-rcar e6530000.i2c: error -121 : 15 > -- 12 i2c-rcar e6530000.i2c: error -121 : 15 > -- i2c-rcar e6530000.i2c: error -121 : 15 > -- i2c-rcar e6530000.i2c: error -121 : 15 > -- i2c-rcar e6530000.i2c: error -121 : 15 > -- i2c-rcar e6530000.i2c: error -121 : 15 > -- i2c-rcar e6530000.i2c: error -121 : 15 > > Cc: Simon Horman <horms+renesas-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org> > Cc: Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org> > Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > Cc: linux-sh-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > Signed-off-by: Ben Dooks <ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> All applied to for-current, thanks, especially for doing the extra kernel-doc update! [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer 2014-01-26 16:05 ` [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer Ben Dooks [not found] ` <1390752337-22386-4-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> @ 2014-02-16 9:46 ` Wolfram Sang 2014-02-16 10:25 ` Geert Uytterhoeven 2014-02-17 8:04 ` Ben Dooks 2014-05-08 22:03 ` Sergei Shtylyov 2 siblings, 2 replies; 13+ messages in thread From: Wolfram Sang @ 2014-02-16 9:46 UTC (permalink / raw) To: Ben Dooks; +Cc: linux-kernel, Simon Horman, linux-i2c, linux-sh [-- Attachment #1: Type: text/plain, Size: 547 bytes --] On Sun, Jan 26, 2014 at 04:05:34PM +0000, Ben Dooks wrote: > The i2c-rcar driver currently prints an error message if the master_xfer > callback fails. However if the bus is being probed then lots of NAKs > will be generated, causing the output of a number of errors printed. > > To solve this, disable the print if the error is not -EREMOTEIO. > > An example of running i2cdetect: So, after this patch i2cdetect runs fine for you? I assume you are working with the lager/r8a7790 board? With koelsch/r8a7791, it stalls the bus :( [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer 2014-02-16 9:46 ` Wolfram Sang @ 2014-02-16 10:25 ` Geert Uytterhoeven 2014-02-16 11:46 ` Wolfram Sang 2014-02-17 8:04 ` Ben Dooks 1 sibling, 1 reply; 13+ messages in thread From: Geert Uytterhoeven @ 2014-02-16 10:25 UTC (permalink / raw) To: Wolfram Sang Cc: Ben Dooks, linux-kernel, Simon Horman, Linux I2C, Linux-sh list On Sun, Feb 16, 2014 at 10:46 AM, Wolfram Sang <wsa@the-dreams.de> wrote: > On Sun, Jan 26, 2014 at 04:05:34PM +0000, Ben Dooks wrote: >> The i2c-rcar driver currently prints an error message if the master_xfer >> callback fails. However if the bus is being probed then lots of NAKs >> will be generated, causing the output of a number of errors printed. >> >> To solve this, disable the print if the error is not -EREMOTEIO. >> >> An example of running i2cdetect: > > So, after this patch i2cdetect runs fine for you? I assume you are > working with the lager/r8a7790 board? With koelsch/r8a7791, it stalls > the bus :( Do you know at which i2c client device it stalls? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer 2014-02-16 10:25 ` Geert Uytterhoeven @ 2014-02-16 11:46 ` Wolfram Sang 0 siblings, 0 replies; 13+ messages in thread From: Wolfram Sang @ 2014-02-16 11:46 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Ben Dooks, linux-kernel, Simon Horman, Linux I2C, Linux-sh list [-- Attachment #1: Type: text/plain, Size: 1039 bytes --] On Sun, Feb 16, 2014 at 11:25:37AM +0100, Geert Uytterhoeven wrote: > On Sun, Feb 16, 2014 at 10:46 AM, Wolfram Sang <wsa@the-dreams.de> wrote: > > On Sun, Jan 26, 2014 at 04:05:34PM +0000, Ben Dooks wrote: > >> The i2c-rcar driver currently prints an error message if the master_xfer > >> callback fails. However if the bus is being probed then lots of NAKs > >> will be generated, causing the output of a number of errors printed. > >> > >> To solve this, disable the print if the error is not -EREMOTEIO. > >> > >> An example of running i2cdetect: > > > > So, after this patch i2cdetect runs fine for you? I assume you are > > working with the lager/r8a7790 board? With koelsch/r8a7791, it stalls > > the bus :( > > Do you know at which i2c client device it stalls? It gives errors when it scans for the first device. The errors are different depending on if I use SMBUS_QUICK or BYTE_READ, but the bus is unusable afterwards. I can read/write the eeprom on that bus before I use i2cdetect, but not afterwards. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer 2014-02-16 9:46 ` Wolfram Sang 2014-02-16 10:25 ` Geert Uytterhoeven @ 2014-02-17 8:04 ` Ben Dooks 1 sibling, 0 replies; 13+ messages in thread From: Ben Dooks @ 2014-02-17 8:04 UTC (permalink / raw) To: Wolfram Sang; +Cc: linux-kernel, Simon Horman, linux-i2c, linux-sh On 16/02/14 09:46, Wolfram Sang wrote: > On Sun, Jan 26, 2014 at 04:05:34PM +0000, Ben Dooks wrote: >> The i2c-rcar driver currently prints an error message if the master_xfer >> callback fails. However if the bus is being probed then lots of NAKs >> will be generated, causing the output of a number of errors printed. >> >> To solve this, disable the print if the error is not -EREMOTEIO. >> >> An example of running i2cdetect: > > So, after this patch i2cdetect runs fine for you? I assume you are > working with the lager/r8a7790 board? With koelsch/r8a7791, it stalls > the bus :( It runs fine most of the time, however I've seen some issues with the bus locking up. However it seems to be random and affects either of bus 2 or bus 3 randomly. Once the bus does lock up then there is no possibility of further transfers. I am trying to put together a breakout board to get at the signals involved as they are all pretty much only available on high-density connectors. I hope to have a look at this before the end of the week and see if there is a fix for this. -- Ben Dooks http://www.codethink.co.uk/ Senior Engineer Codethink - Providing Genius ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer 2014-01-26 16:05 ` [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer Ben Dooks [not found] ` <1390752337-22386-4-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> 2014-02-16 9:46 ` Wolfram Sang @ 2014-05-08 22:03 ` Sergei Shtylyov [not found] ` <536BFF39.40607-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org> 2014-05-09 9:32 ` Ben Dooks 2 siblings, 2 replies; 13+ messages in thread From: Sergei Shtylyov @ 2014-05-08 22:03 UTC (permalink / raw) To: Ben Dooks, linux-kernel; +Cc: Simon Horman, Wolfram Sang, linux-i2c, linux-sh Hello. On 01/26/2014 07:05 PM, Ben Dooks wrote: > The i2c-rcar driver currently prints an error message if the master_xfer > callback fails. However if the bus is being probed then lots of NAKs > will be generated, causing the output of a number of errors printed. > To solve this, disable the print if the error is not -EREMOTEIO. > An example of running i2cdetect: > 10: i2c-rcar e6530000.i2c: error -121 : 15 > -- i2c-rcar e6530000.i2c: error -121 : 15 > -- 12 i2c-rcar e6530000.i2c: error -121 : 15 > -- i2c-rcar e6530000.i2c: error -121 : 15 > -- i2c-rcar e6530000.i2c: error -121 : 15 > -- i2c-rcar e6530000.i2c: error -121 : 15 > -- i2c-rcar e6530000.i2c: error -121 : 15 > -- i2c-rcar e6530000.i2c: error -121 : 15 > Cc: Simon Horman <horms+renesas@verge.net.au> > Cc: Wolfram Sang <wsa@the-dreams.de> > Cc: linux-i2c@vger.kernel.org > Cc: linux-sh@vger.kernel.org > Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> > --- > drivers/i2c/busses/i2c-rcar.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c > index 2c2fd7c..0d25104 100644 > --- a/drivers/i2c/busses/i2c-rcar.c > +++ b/drivers/i2c/busses/i2c-rcar.c > @@ -623,7 +623,7 @@ static int rcar_i2c_master_xfer(struct i2c_adapter *adap, > > pm_runtime_put(dev); > > - if (ret < 0) > + if (ret < 0 && ret != -EREMOTEIO) > dev_err(dev, "error %d : %x\n", ret, priv->flags); Hm, I'm now getting -EBUSY and -EAGAIN running i2cdetect on R8A7791 base Henninger board. Only when I comment out the above 2 lines, I can get the bus scanned, otherwise I don't see any devices at all. WBR, Sergei ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <536BFF39.40607-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>]
* Re: [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer [not found] ` <536BFF39.40607-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org> @ 2014-05-09 5:04 ` Wolfram Sang 0 siblings, 0 replies; 13+ messages in thread From: Wolfram Sang @ 2014-05-09 5:04 UTC (permalink / raw) To: Sergei Shtylyov Cc: Ben Dooks, linux-kernel-81qHHgoATdFT9dQujB1mzip2UmYkHbXO, Simon Horman, linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA [-- Attachment #1: Type: text/plain, Size: 553 bytes --] > >- if (ret < 0) > >+ if (ret < 0 && ret != -EREMOTEIO) > > dev_err(dev, "error %d : %x\n", ret, priv->flags); > > Hm, I'm now getting -EBUSY and -EAGAIN running i2cdetect on > R8A7791 base Henninger board. Only when I comment out the above 2 > lines, I can get the bus scanned, otherwise I don't see any devices > at all. Huh, this is only a printout? Do you get those errors as well if you remove the printout and add a delay at that place? And -EAGAIN? This is arbitration lost. Do you have another I2C master on the bus? [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer 2014-05-08 22:03 ` Sergei Shtylyov [not found] ` <536BFF39.40607-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org> @ 2014-05-09 9:32 ` Ben Dooks [not found] ` <536CA0B1.4040300-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> 1 sibling, 1 reply; 13+ messages in thread From: Ben Dooks @ 2014-05-09 9:32 UTC (permalink / raw) To: Sergei Shtylyov, linux-kernel Cc: Simon Horman, Wolfram Sang, linux-i2c, linux-sh On 08/05/14 23:03, Sergei Shtylyov wrote: > Hello. > > On 01/26/2014 07:05 PM, Ben Dooks wrote: > >> The i2c-rcar driver currently prints an error message if the master_xfer >> callback fails. However if the bus is being probed then lots of NAKs >> will be generated, causing the output of a number of errors printed. > >> To solve this, disable the print if the error is not -EREMOTEIO. > >> An example of running i2cdetect: > >> 10: i2c-rcar e6530000.i2c: error -121 : 15 >> -- i2c-rcar e6530000.i2c: error -121 : 15 >> -- 12 i2c-rcar e6530000.i2c: error -121 : 15 >> -- i2c-rcar e6530000.i2c: error -121 : 15 >> -- i2c-rcar e6530000.i2c: error -121 : 15 >> -- i2c-rcar e6530000.i2c: error -121 : 15 >> -- i2c-rcar e6530000.i2c: error -121 : 15 >> -- i2c-rcar e6530000.i2c: error -121 : 15 > >> Cc: Simon Horman <horms+renesas@verge.net.au> >> Cc: Wolfram Sang <wsa@the-dreams.de> >> Cc: linux-i2c@vger.kernel.org >> Cc: linux-sh@vger.kernel.org >> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> >> --- >> drivers/i2c/busses/i2c-rcar.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> diff --git a/drivers/i2c/busses/i2c-rcar.c >> b/drivers/i2c/busses/i2c-rcar.c >> index 2c2fd7c..0d25104 100644 >> --- a/drivers/i2c/busses/i2c-rcar.c >> +++ b/drivers/i2c/busses/i2c-rcar.c >> @@ -623,7 +623,7 @@ static int rcar_i2c_master_xfer(struct i2c_adapter >> *adap, >> >> pm_runtime_put(dev); >> >> - if (ret < 0) >> + if (ret < 0 && ret != -EREMOTEIO) >> dev_err(dev, "error %d : %x\n", ret, priv->flags); > > Hm, I'm now getting -EBUSY and -EAGAIN running i2cdetect on R8A7791 > base Henninger board. Only when I comment out the above 2 lines, I can > get the bus scanned, otherwise I don't see any devices at all. i2c-detect does not work well on the i2c-rcar due to it insisting on sending or receiving at-least one byte of data. I think it is possible that it confuses some of the bus devices. -- Ben Dooks http://www.codethink.co.uk/ Senior Engineer Codethink - Providing Genius ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <536CA0B1.4040300-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>]
* Re: [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer [not found] ` <536CA0B1.4040300-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> @ 2014-05-09 22:55 ` Sergei Shtylyov 0 siblings, 0 replies; 13+ messages in thread From: Sergei Shtylyov @ 2014-05-09 22:55 UTC (permalink / raw) To: Ben Dooks, linux-kernel-81qHHgoATdFT9dQujB1mzip2UmYkHbXO Cc: Simon Horman, Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA Hello. On 05/09/2014 01:32 PM, Ben Dooks wrote: >>> The i2c-rcar driver currently prints an error message if the master_xfer >>> callback fails. However if the bus is being probed then lots of NAKs >>> will be generated, causing the output of a number of errors printed. >>> To solve this, disable the print if the error is not -EREMOTEIO. >>> An example of running i2cdetect: >>> 10: i2c-rcar e6530000.i2c: error -121 : 15 >>> -- i2c-rcar e6530000.i2c: error -121 : 15 >>> -- 12 i2c-rcar e6530000.i2c: error -121 : 15 >>> -- i2c-rcar e6530000.i2c: error -121 : 15 >>> -- i2c-rcar e6530000.i2c: error -121 : 15 >>> -- i2c-rcar e6530000.i2c: error -121 : 15 >>> -- i2c-rcar e6530000.i2c: error -121 : 15 >>> -- i2c-rcar e6530000.i2c: error -121 : 15 >>> Cc: Simon Horman <horms+renesas-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org> >>> Cc: Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org> >>> Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org >>> Cc: linux-sh-u79uwXL29TY76Z2rM5mHXA@public.gmane.org >>> Signed-off-by: Ben Dooks <ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> >>> --- >>> drivers/i2c/busses/i2c-rcar.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> diff --git a/drivers/i2c/busses/i2c-rcar.c >>> b/drivers/i2c/busses/i2c-rcar.c >>> index 2c2fd7c..0d25104 100644 >>> --- a/drivers/i2c/busses/i2c-rcar.c >>> +++ b/drivers/i2c/busses/i2c-rcar.c >>> @@ -623,7 +623,7 @@ static int rcar_i2c_master_xfer(struct i2c_adapter >>> *adap, >>> >>> pm_runtime_put(dev); >>> >>> - if (ret < 0) >>> + if (ret < 0 && ret != -EREMOTEIO) >>> dev_err(dev, "error %d : %x\n", ret, priv->flags); >> Hm, I'm now getting -EBUSY and -EAGAIN running i2cdetect on R8A7791 >> base Henninger board. Only when I comment out the above 2 lines, I can >> get the bus scanned, otherwise I don't see any devices at all. > i2c-detect does not work well on the i2c-rcar due to it insisting > on sending or receiving at-least one byte of data. I've noticed that it works more or less reliable only the first time I run it, on subsequent runs it only sees devices for which a driver is bound, IIRC. > I think it > is possible that it confuses some of the bus devices. Yes, it seems to be the case. However, with these lines commented out, it still works the first time... WBR, Sergei ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 5/6] i2c: update i2c_algorithm documentation [not found] ` <1390752337-22386-1-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> 2014-01-26 16:05 ` [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer Ben Dooks @ 2014-01-26 16:05 ` Ben Dooks 1 sibling, 0 replies; 13+ messages in thread From: Ben Dooks @ 2014-01-26 16:05 UTC (permalink / raw) To: linux-kernel-81qHHgoATdFT9dQujB1mzip2UmYkHbXO Cc: Ben Dooks, Linux I2C List, Wolfram Sang Add some kerneldoc style documentaton to the i2c_algorithm structure, and point the master_xfer return codes at the right place in Documentation/i2c/fault_codes Signed-off-by: Ben Dooks <ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> --- Cc: Linux I2C List <linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> Cc: Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org> --- include/linux/i2c.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/include/linux/i2c.h b/include/linux/i2c.h index eff50e0..2aeb091 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -342,11 +342,25 @@ i2c_register_board_info(int busnum, struct i2c_board_info const *info, } #endif /* I2C_BOARDINFO */ -/* +/** + * struct i2c_algorithm - represent I2C transfer method + * @master_xfer: Issue a set of i2c transactions to the given I2C adapter + * defined by the msgs array, with num messages available to transfer via + * the adapter specified by adap. + * @smbus_xfer: Issue smbus transactions to the given I2C adapter. If this + * is not present, then the bus layer will try and convert the SMBus calls + * into I2C transfers instead. + * @functionality: Return the flags that this algorithm/adapter pair supports + * from the I2C_FUNC_* flags. + * * The following structs are for those who like to implement new bus drivers: * i2c_algorithm is the interface to a class of hardware solutions which can * be addressed using the same bus algorithms - i.e. bit-banging or the PCF8584 * to name two of the most common. + * + * The return codes from the @master_xfer field should indicate the type of + * error code that occured during the transfer, as documented in the kernel + * Documentation file Documentation/i2c/fault-codes. */ struct i2c_algorithm { /* If an adapter algorithm can't do I2C-level access, set master_xfer -- 1.8.5.2 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 6/6] i2c: rcar: fix NACK error code [not found] <1390752337-22386-1-git-send-email-ben.dooks@codethink.co.uk> 2014-01-26 16:05 ` [PATCH 4/6] i2c: rcar: use devm_clk_get to ensure clock is properly ref-counted Ben Dooks [not found] ` <1390752337-22386-1-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> @ 2014-01-26 16:05 ` Ben Dooks 2 siblings, 0 replies; 13+ messages in thread From: Ben Dooks @ 2014-01-26 16:05 UTC (permalink / raw) To: linux-kernel Cc: Ben Dooks, Wolfram Sang, Simon Horman, Magnus Damm, linux-i2c, linux-sh The response to a bus NACK is to return -ENXIO instead of the -EREMOTEIO being currently returned by the driver. Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> --- Cc: Wolfram Sang <wsa@the-dreams.de> Cc: Simon Horman <horms+renesas@verge.net.au> Cc: Magnus Damm <damm@opensource.se> Cc: linux-i2c@vger.kernel.org Cc: linux-sh@vger.kernel.org --- drivers/i2c/busses/i2c-rcar.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c index dc8c224..fa16adf 100644 --- a/drivers/i2c/busses/i2c-rcar.c +++ b/drivers/i2c/busses/i2c-rcar.c @@ -599,7 +599,7 @@ static int rcar_i2c_master_xfer(struct i2c_adapter *adap, * error handling */ if (rcar_i2c_flags_has(priv, ID_NACK)) { - ret = -EREMOTEIO; + ret = -ENXIO; break; } @@ -618,7 +618,7 @@ static int rcar_i2c_master_xfer(struct i2c_adapter *adap, pm_runtime_put(dev); - if (ret < 0 && ret != -EREMOTEIO) + if (ret < 0 && ret != -ENXIO) dev_err(dev, "error %d : %x\n", ret, priv->flags); return ret; -- 1.8.5.2 ^ permalink raw reply related [flat|nested] 13+ messages in thread
end of thread, other threads:[~2014-05-09 22:55 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <1390752337-22386-1-git-send-email-ben.dooks@codethink.co.uk> 2014-01-26 16:05 ` [PATCH 4/6] i2c: rcar: use devm_clk_get to ensure clock is properly ref-counted Ben Dooks [not found] ` <1390752337-22386-1-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> 2014-01-26 16:05 ` [PATCH 3/6] i2c: rcar: do not print error if device nacks transfer Ben Dooks [not found] ` <1390752337-22386-4-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> 2014-01-26 21:50 ` Wolfram Sang 2014-02-16 9:46 ` Wolfram Sang 2014-02-16 10:25 ` Geert Uytterhoeven 2014-02-16 11:46 ` Wolfram Sang 2014-02-17 8:04 ` Ben Dooks 2014-05-08 22:03 ` Sergei Shtylyov [not found] ` <536BFF39.40607-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org> 2014-05-09 5:04 ` Wolfram Sang 2014-05-09 9:32 ` Ben Dooks [not found] ` <536CA0B1.4040300-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org> 2014-05-09 22:55 ` Sergei Shtylyov 2014-01-26 16:05 ` [PATCH 5/6] i2c: update i2c_algorithm documentation Ben Dooks 2014-01-26 16:05 ` [PATCH 6/6] i2c: rcar: fix NACK error code Ben Dooks
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).