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

Commit 3e5f06be authored by Wolfram Sang's avatar Wolfram Sang Committed by Wolfram Sang
Browse files

i2c: algo-bit: init the bus to a known state



Ensure the bus is free when we register the adapter. Before the SCL/SDA
wires were in an unknown state. It used to work because sending a byte
has a retry mechanism which was triggered if the bus was initially in a
non-free state. But the graceful way to do it is to initialize
correctly.

Signed-off-by: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent e5353765
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -649,6 +649,11 @@ static int __i2c_bit_add_bus(struct i2c_adapter *adap,
	if (bit_adap->getscl == NULL)
		adap->quirks = &i2c_bit_quirk_no_clk_stretch;

	/* Bring bus to a known state. Looks like STOP if bus is not free yet */
	setscl(bit_adap, 1);
	udelay(bit_adap->udelay);
	setsda(bit_adap, 1);

	ret = add_adapter(adap);
	if (ret < 0)
		return ret;