linux-i2c.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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

* [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>
       [not found] ` <1390752337-22386-1-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>
@ 2014-01-26 16:05 ` Ben Dooks
  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

* [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>
       [not found] ` <1390752337-22386-1-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>
  2014-01-26 16:05 ` [PATCH 4/6] i2c: rcar: use devm_clk_get to ensure clock is properly ref-counted Ben Dooks
@ 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

* 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

* 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

* 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

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>
     [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 4/6] i2c: rcar: use devm_clk_get to ensure clock is properly ref-counted 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).