diff mbox

i2c: mxs: dont print error on NAK

Message ID 20170518141450.30938-1-michael.thalmeier@hale.at
State Superseded
Headers show

Commit Message

Michael Thalmeier May 18, 2017, 2:14 p.m. UTC
When mxs_i2c_pio_wait_xfer_end returns with a return code of -ENXIO, the
NO_SLAVE_ACK_IRQ bit is set in CTRL1.
In this case, do not print an error message, because every NAK would
otherwise generate a new message.

Signed-off-by: Michael Thalmeier <michael.thalmeier@hale.at>
---
 drivers/i2c/busses/i2c-mxs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Wolfram Sang May 19, 2017, 12:44 p.m. UTC | #1
On Thu, May 18, 2017 at 04:14:50PM +0200, Michael Thalmeier wrote:
> When mxs_i2c_pio_wait_xfer_end returns with a return code of -ENXIO, the
> NO_SLAVE_ACK_IRQ bit is set in CTRL1.
> In this case, do not print an error message, because every NAK would
> otherwise generate a new message.

Why not also for the read case?

Also, I think all the error printing for mxs_i2c_pio_wait_xfer_end()
could go. NAK can happen on the bus as well as timeouts, e.g. EEPROMs
currently erasing a page. Upper layers ought to handle that.

Thanks,

   Wolfram

> 
> Signed-off-by: Michael Thalmeier <michael.thalmeier@hale.at>
> ---
>  drivers/i2c/busses/i2c-mxs.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/i2c/busses/i2c-mxs.c b/drivers/i2c/busses/i2c-mxs.c
> index 5738556..e2dbb9c 100644
> --- a/drivers/i2c/busses/i2c-mxs.c
> +++ b/drivers/i2c/busses/i2c-mxs.c
> @@ -527,7 +527,7 @@ static int mxs_i2c_pio_setup_xfer(struct i2c_adapter *adap,
>  
>  			/* Wait for the end of the transfer. */
>  			ret = mxs_i2c_pio_wait_xfer_end(i2c);
> -			if (ret) {
> +			if (ret && ret != -ENXIO) {
>  				dev_err(i2c->dev,
>  					"PIO: Failed to finish WRITE cmd!\n");
>  				break;
> -- 
> 2.9.2
>
diff mbox

Patch

diff --git a/drivers/i2c/busses/i2c-mxs.c b/drivers/i2c/busses/i2c-mxs.c
index 5738556..e2dbb9c 100644
--- a/drivers/i2c/busses/i2c-mxs.c
+++ b/drivers/i2c/busses/i2c-mxs.c
@@ -527,7 +527,7 @@  static int mxs_i2c_pio_setup_xfer(struct i2c_adapter *adap,
 
 			/* Wait for the end of the transfer. */
 			ret = mxs_i2c_pio_wait_xfer_end(i2c);
-			if (ret) {
+			if (ret && ret != -ENXIO) {
 				dev_err(i2c->dev,
 					"PIO: Failed to finish WRITE cmd!\n");
 				break;