From: Alexander Kochetkov <al.kochet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>,
Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>,
Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org>,
al.kochet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Subject: [PATCH v2 3/4] i2c: omap: don't reset controller if Arbitration Lost detected
Date: Sat, 22 Nov 2014 02:51:47 +0400 [thread overview]
Message-ID: <1416610307-3698-1-git-send-email-al.kochet@gmail.com> (raw)
In-Reply-To: <1416518925-20679-4-git-send-email-al.kochet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Arbitration Lost is an expected situation in a multimaster
environment. I2C controller (IP) correctly detect and report AL.
The only one visible reason for reseting IP in the AL case is
to avoid advisory 1.94 (omap3) and errata i595 (omap4): "I2C:
After an Arbitration is Lost the Module Incorrectly Starts
the Next Transfer".
Errata workaround states: "The MST and STT bits inside I2C_CON
should be set to 1 at the same moment (avoid setting the MST bit
to 1 while STT = 0)." The driver never set MST and STT bits
separately and doesn't create condition for errata. So the reset
is not necessary.
Also corrected return value for AL to -EAGAIN.
Tested on Beagleboard XM C.
Signed-off-by: Alexander Kochetkov <al.kochet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
On 21.10.2014 21:11, Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org> wrote:
> The errno for AL is -EAGAIN. Curly braces are not needed.
Thank you, Wolfram, fixed.
drivers/i2c/busses/i2c-omap.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index 3ffb9c0..02da567 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -707,13 +707,15 @@ static int omap_i2c_xfer_msg(struct i2c_adapter *adap,
return 0;
/* We have an error */
- if (dev->cmd_err & (OMAP_I2C_STAT_AL | OMAP_I2C_STAT_ROVR |
- OMAP_I2C_STAT_XUDF)) {
+ if (dev->cmd_err & (OMAP_I2C_STAT_ROVR | OMAP_I2C_STAT_XUDF)) {
omap_i2c_reset(dev);
__omap_i2c_init(dev);
return -EIO;
}
+ if (dev->cmd_err & OMAP_I2C_STAT_AL)
+ return -EAGAIN;
+
if (dev->cmd_err & OMAP_I2C_STAT_NACK) {
if (msg->flags & I2C_M_IGNORE_NAK)
return 0;
--
1.7.9.5
next prev parent reply other threads:[~2014-11-21 22:51 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-20 21:28 [RFC 0/4] i2c: omap: patch series related to multimaster mode Alexander Kochetkov
2014-11-20 21:28 ` [PATCH 1/4] i2c: omap: cleanup register definitions Alexander Kochetkov
[not found] ` <1416518925-20679-2-git-send-email-al.kochet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-21 16:08 ` Felipe Balbi
[not found] ` <1416518925-20679-1-git-send-email-al.kochet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-20 21:28 ` [PATCH 2/4] i2c: omap: implement workaround for handling invalid BB-bit values Alexander Kochetkov
2014-11-21 16:08 ` Felipe Balbi
2014-11-22 13:23 ` Wolfram Sang
2014-11-22 14:06 ` Alexander Kochetkov
[not found] ` <B6D9B4D7-25CB-456F-88B4-EB6A53E33A9D-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-22 18:02 ` Wolfram Sang
2014-11-23 4:43 ` Felipe Balbi
2014-11-23 13:18 ` Alexander Kochetkov
2014-11-24 19:08 ` Felipe Balbi
2014-11-24 19:09 ` Felipe Balbi
2014-11-22 19:47 ` [PATCH v3 0/4] i2c: omap: patch series related to multimaster mode Alexander Kochetkov
2014-11-22 19:47 ` [PATCH v3 2/4] i2c: omap: implement workaround for handling invalid BB-bit values Alexander Kochetkov
2014-11-24 19:08 ` Kevin Hilman
[not found] ` <CAMAWPa8whctBR6fBFaSzPvm3qn+QK06CimRrxFxxH=0kNkF4UA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-24 19:10 ` Felipe Balbi
2014-11-24 19:13 ` Wolfram Sang
2014-11-24 19:25 ` Tony Lindgren
2014-11-24 19:39 ` Alexander Kochetkov
[not found] ` <47A1A441-952C-4AC3-859C-5A8E405767E0-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-24 19:47 ` Tony Lindgren
2014-11-24 20:05 ` Alexander Kochetkov
[not found] ` <47749B61-5924-4E56-9931-77B0CFC0AAA0-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-25 0:09 ` Alexander Kochetkov
[not found] ` <06376010-5DED-49AA-9494-A9546567E7CA-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-25 15:41 ` Tony Lindgren
2014-11-24 21:08 ` Alexander Kochetkov
2014-11-26 22:30 ` Alexander Kochetkov
[not found] ` <1416685634-5864-3-git-send-email-al.kochet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-24 20:33 ` [PATCH] omap: i2c: don't check bus state IP rev3.3 and earlier Alexander Kochetkov
[not found] ` <1416861189-17109-1-git-send-email-al.kochet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-24 21:08 ` Tony Lindgren
[not found] ` <20141124210809.GG2817-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2014-11-24 22:20 ` [PATCH v2] " Alexander Kochetkov
2014-11-25 14:19 ` Wolfram Sang
2014-11-25 14:38 ` Alexander Kochetkov
[not found] ` <7E0A0B24-91D5-41A4-B007-004C5965D0D7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-25 19:13 ` Kevin Hilman
[not found] ` <7hvbm3jdq1.fsf-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org>
2014-11-26 19:26 ` Alexander Kochetkov
[not found] ` <65BAE81D-E894-48EB-B5A0-0D0FFB9B448F-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-26 21:33 ` Kevin Hilman
[not found] ` <1416867655-22232-1-git-send-email-al.kochet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-25 19:12 ` Kevin Hilman
2014-11-26 19:05 ` [RFC] i2c: omap: TEST: do IP reset during probe Alexander Kochetkov
2014-11-26 21:25 ` Kevin Hilman
[not found] ` <7hzjbdd57j.fsf-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org>
2014-11-28 22:13 ` Tony Lindgren
[not found] ` <20141128221350.GW2817-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2014-11-28 23:25 ` Alexander Kochetkov
[not found] ` <E4A4FA05-0752-41CB-B86B-84035C6EAF05-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-29 22:06 ` Tony Lindgren
2014-11-29 2:14 ` Alexander Kochetkov
[not found] ` <1416685634-5864-1-git-send-email-al.kochet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-22 19:47 ` [PATCH v3 1/4] i2c: omap: cleanup register definitions Alexander Kochetkov
2014-11-22 19:47 ` [PATCH v3 3/4] i2c: omap: don't reset controller if Arbitration Lost detected Alexander Kochetkov
2014-11-22 21:08 ` [PATCH v3 0/4] i2c: omap: patch series related to multimaster mode Wolfram Sang
2014-11-22 19:47 ` [PATCH v3 4/4] i2c: omap: add notes related to i2c " Alexander Kochetkov
2014-11-20 21:28 ` [PATCH 3/4] i2c: omap: don't reset controller if Arbitration Lost detected Alexander Kochetkov
2014-11-21 16:08 ` Felipe Balbi
2014-11-21 18:11 ` Wolfram Sang
[not found] ` <1416518925-20679-4-git-send-email-al.kochet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-21 22:51 ` Alexander Kochetkov [this message]
[not found] ` <1416610307-3698-1-git-send-email-al.kochet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-11-22 1:07 ` [PATCH v2 " Felipe Balbi
2014-11-20 21:28 ` [PATCH 4/4] i2c: omap: add notes related to i2c multimaster mode Alexander Kochetkov
2014-11-21 16:08 ` Felipe Balbi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1416610307-3698-1-git-send-email-al.kochet@gmail.com \
--to=al.kochet-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=balbi-l0cyMroinI0@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org \
--cc=wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).