i2c: omap: fix bus recovery setup
authorJan Luebbe <jlu@pengutronix.de>
Wed, 8 Jul 2015 14:35:27 +0000 (16:35 +0200)
committerWolfram Sang <wsa@the-dreams.de>
Fri, 31 Jul 2015 11:32:31 +0000 (13:32 +0200)
commit828e66c0edf97bcb79b59b1ddd803a50629b3937
tree1e44d06f112c47c003f649fc64d6d7fae75893d9
parent8b06260836ab47abbb5ea49d889660a0ed8adf90
i2c: omap: fix bus recovery setup

At least on the AM335x, enabling OMAP_I2C_SYSTEST_ST_EN is not enough to
allow direct access to the SCL and SDA pins. In addition to ST_EN, we
need to set the TMODE to 0b11 (Loop back & SDA/SCL IO mode select).
Also, as the reset values of SCL_O and SDA_O are 0 (which means "drive
low level"), we need to set them to 1 (which means "high-impedance") to
avoid unwanted changes on the pins.

As a precaution, reset all these bits to their default values after
recovery is complete.

Signed-off-by: Jan Luebbe <jlu@pengutronix.de>
Tested-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-omap.c