LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Esben Haabendal <esben.haabendal@gmail.com>
To: linux-i2c@vger.kernel.org
Cc: "Esben Haabendal" <eha@deif.com>,
"Wolfram Sang" <wsa+renesas@sang-engineering.com>,
"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
"Lucas Stach" <l.stach@pengutronix.de>,
"Philipp Zabel" <p.zabel@pengutronix.de>,
"Michail Georgios Etairidis" <m.etairidis@beck-ipc.com>,
"Wei Jinhua" <wei.jinhua1@zte.com.cn>,
"Phil Reid" <preid@electromag.com.au>,
linux-kernel@vger.kernel.org
Subject: [PATCH 3/4] i2c: imx: Simplify stopped state tracking
Date: Wed, 23 May 2018 11:56:22 +0200 [thread overview]
Message-ID: <20180523095623.3347-4-esben.haabendal@gmail.com> (raw)
In-Reply-To: <20180523095623.3347-1-esben.haabendal@gmail.com>
From: Esben Haabendal <eha@deif.com>
Always update the stopped state when busy status have been checked.
This is identical to what was done before, with the exception of error
handling.
Without this change, some errors cause the stopped state to be left in
incorrect state in i2c_imx_stop(), i2c_imx_dma_read(), i2c_imx_read() and
i2c_imx_xfer().
Signed-off-by: Esben Haabendal <eha@deif.com>
---
drivers/i2c/busses/i2c-imx.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index 742b548437af..f9c99b123188 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -430,10 +430,14 @@ static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx, int for_busy)
return -EAGAIN;
}
- if (for_busy && (temp & I2SR_IBB))
+ if (for_busy && (temp & I2SR_IBB)) {
+ i2c_imx->stopped = 0;
break;
- if (!for_busy && !(temp & I2SR_IBB))
+ }
+ if (!for_busy && !(temp & I2SR_IBB)) {
+ i2c_imx->stopped = 1;
break;
+ }
if (time_after(jiffies, orig_jiffies + msecs_to_jiffies(500))) {
dev_dbg(&i2c_imx->adapter.dev,
"<%s> I2C bus is busy\n", __func__);
@@ -547,7 +551,6 @@ static int i2c_imx_start(struct imx_i2c_struct *i2c_imx)
result = i2c_imx_bus_busy(i2c_imx, 1);
if (result)
return result;
- i2c_imx->stopped = 0;
temp |= I2CR_IIEN | I2CR_MTX | I2CR_TXAK;
temp &= ~I2CR_DMAEN;
@@ -578,7 +581,6 @@ static void i2c_imx_stop(struct imx_i2c_struct *i2c_imx)
if (!i2c_imx->stopped) {
i2c_imx_bus_busy(i2c_imx, 0);
- i2c_imx->stopped = 1;
}
/* Disable I2C controller */
@@ -733,7 +735,6 @@ static int i2c_imx_dma_read(struct imx_i2c_struct *i2c_imx,
temp &= ~(I2CR_MSTA | I2CR_MTX);
imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR);
i2c_imx_bus_busy(i2c_imx, 0);
- i2c_imx->stopped = 1;
} else {
/*
* For i2c master receiver repeat restart operation like:
@@ -861,7 +862,6 @@ static int i2c_imx_read(struct imx_i2c_struct *i2c_imx, struct i2c_msg *msgs, bo
temp &= ~(I2CR_MSTA | I2CR_MTX);
imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR);
i2c_imx_bus_busy(i2c_imx, 0);
- i2c_imx->stopped = 1;
} else {
/*
* For i2c master receiver repeat restart operation like:
--
2.17.0
next prev parent reply other threads:[~2018-05-23 9:56 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20180523095623.3347-1-esben.haabendal@gmail.com>
2018-05-23 9:56 ` [PATCH 1/4] i2c: imx: Fix reinit_completion() use Esben Haabendal
2018-07-04 7:03 ` Uwe Kleine-König
2018-07-09 9:20 ` Esben Haabendal
2018-05-23 9:56 ` [PATCH 2/4] i2c: imx: Fix race condition in dma read Esben Haabendal
2018-07-05 6:32 ` Uwe Kleine-König
2018-07-09 9:22 ` Esben Haabendal
2018-05-23 9:56 ` Esben Haabendal [this message]
2018-05-23 9:56 ` [PATCH 4/4] arm: dts: ls1021a: Enable I2C DMA support Esben Haabendal
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=20180523095623.3347-4-esben.haabendal@gmail.com \
--to=esben.haabendal@gmail.com \
--cc=eha@deif.com \
--cc=l.stach@pengutronix.de \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=m.etairidis@beck-ipc.com \
--cc=p.zabel@pengutronix.de \
--cc=preid@electromag.com.au \
--cc=u.kleine-koenig@pengutronix.de \
--cc=wei.jinhua1@zte.com.cn \
--cc=wsa+renesas@sang-engineering.com \
--subject='Re: [PATCH 3/4] i2c: imx: Simplify stopped state tracking' \
/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
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).