i2c-omap: OMAP3: PM: (re)init for every transfer to support off-mode
authorRajendra Nayak <[email protected]>
Mon, 23 Nov 2009 16:59:18 +0000 (08:59 -0800)
committerBen Dooks <[email protected]>
Wed, 9 Dec 2009 00:19:13 +0000 (00:19 +0000)
commitef871432e1334dea4c79f9875f4db87cee7b9b50
tree54f3a4ae1853429f5cd23ffe05bca3913f0980ce
parent6d1ea0f6afde6887d6dea2ace1714a23d9b5820d
i2c-omap: OMAP3: PM: (re)init for every transfer to support off-mode

Because of OMAP off-mode, powerdomain can go off when I2C is idle.
Save enough state, and do a re-init for each transfer.

Additional save/restore state added by Jagadeesh Bhaskar Pakaravoor
(SYSC_REG) and Aaro Koskinen (wakeup sources.)

Also, The OMAP3430 TRM states:

"During active mode (I2Ci.I2C_CON[15] I2C_EN bit is set to 1), make no
changes to the I2Ci.I2C_SCLL and I2Ci.I2C_SCLH registers.  Changes may
result in unpredictable behavior."

Hence, the I2C_EN bit should be clearer when modifying these
registers. Please note that clearing the entire I2C_CON register to
disable the I2C module is safe, because the I2C_CON register is
re-configured for each transfer.

Signed-off-by: Jouni Hogander <[email protected]>
Signed-off-by: Rajendra Nayak <[email protected]>
Cc: Jagadeesh Bhaskar Pakaravoor <[email protected]>
Cc: Aaro Koskinen <[email protected]>
Cc: Jon Hunter <[email protected]>
Cc: Hu Tao <[email protected]>
Cc: Xiaolong Chen <[email protected]>
Signed-off-by: Kevin Hilman <[email protected]>
Signed-off-by: Ben Dooks <[email protected]>
drivers/i2c/busses/i2c-omap.c