Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 606fd278 authored by Jean Delvare's avatar Jean Delvare Committed by Wolfram Sang
Browse files

i2c: algo-bit: add support for I2C_M_STOP



Support for enforced STOPs will allow us to use SCCB compatible devices.

Based on a preliminary patch by Wolfram Sang.

Signed-off-by: default avatarJean Delvare <jdelvare@suse.de>
Tested-by: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent 413dfbbf
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -553,10 +553,17 @@ static int bit_xfer(struct i2c_adapter *i2c_adap,
		nak_ok = pmsg->flags & I2C_M_IGNORE_NAK;
		if (!(pmsg->flags & I2C_M_NOSTART)) {
			if (i) {
				bit_dbg(3, &i2c_adap->dev, "emitting "
					"repeated start condition\n");
				if (msgs[i - 1].flags & I2C_M_STOP) {
					bit_dbg(3, &i2c_adap->dev,
						"emitting enforced stop/start condition\n");
					i2c_stop(adap);
					i2c_start(adap);
				} else {
					bit_dbg(3, &i2c_adap->dev,
						"emitting repeated start condition\n");
					i2c_repstart(adap);
				}
			}
			ret = bit_doAddress(i2c_adap, pmsg);
			if ((ret != 0) && !nak_ok) {
				bit_dbg(1, &i2c_adap->dev, "NAK from "