i2c: Add bus recovery infrastructure
authorViresh Kumar <viresh.kumar@linaro.org>
Tue, 28 Feb 2012 12:56:31 +0000 (18:26 +0530)
committerWolfram Sang <wsa@the-dreams.de>
Sun, 24 Mar 2013 09:30:54 +0000 (10:30 +0100)
commit5f9296ba21b3c395e53dd84e7ff9578f97f24295
treeddc02adbdaa1b703b04aeee9b8d8f1ca13fa2443
parentee5c27440cc24d62ec463cce4c000bb32c5692c7
i2c: Add bus recovery infrastructure

Add i2c bus recovery infrastructure to i2c adapters as specified in the i2c
protocol Rev. 03 section 3.1.16 titled "Bus clear".

http://www.nxp.com/documents/user_manual/UM10204.pdf

Sometimes during operation i2c bus hangs and we need to give dummy clocks to
slave device to start the transfer again. Now we may have capability in the bus
controller to generate these clocks or platform may have gpio pins which can be
toggled to generate dummy clocks. This patch supports both.

This patch also adds in generic bus recovery routines gpio or scl line based
which can be used by bus controller. In addition controller driver may provide
its own version of the bus recovery routine.

This doesn't support multi-master recovery for now.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
[wsa: changed gpio type to int and minor reformatting]
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/i2c-core.c
include/linux/i2c.h