From 858d6e7b509d9f8bfd4e895de4050594edb62319 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Povi=C5=A1er?= Date: Mon, 28 Mar 2022 23:47:28 +0200 Subject: [PATCH] i2c: pasemi: Wait for write xfers to finish Wait for completion of write transfers before returning from the driver. This fixes some unreliability issues with I2C transfers. (Maybe the FIFO was overflowing when too many write transfers were batched? Or batched write xfers completed when the driver was waiting on subsequent read xfer and so it got confused by the 'xfer complete' signal?) --- drivers/i2c/busses/i2c-pasemi-core.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/i2c/busses/i2c-pasemi-core.c b/drivers/i2c/busses/i2c-pasemi-core.c index 7728c8460dc0..9028ffb58cc0 100644 --- a/drivers/i2c/busses/i2c-pasemi-core.c +++ b/drivers/i2c/busses/i2c-pasemi-core.c @@ -137,6 +137,12 @@ static int pasemi_i2c_xfer_msg(struct i2c_adapter *adapter, TXFIFO_WR(smbus, msg->buf[msg->len-1] | (stop ? MTXFIFO_STOP : 0)); + + if (stop) { + err = pasemi_smb_waitready(smbus); + if (err) + goto reset_out; + } } return 0; -- 2.32.0 (Apple Git-132)