On Mon, Feb 20, 2012 at 07:22:00PM +0800, Daniel Kurtz wrote:
On Feb 15, 2012 6:48 PM, "Daniel Vetter" daniel@ffwll.ch wrote:
On Thu, Feb 09, 2012 at 12:03:17PM -0800, Benson Leung wrote:
gmbus_xfer with a single message (particularly a single message write) would set Bus Cycle Select to 100b, the Gen Stop cycle, instead of 101b, No Index, Stop cycle. This would not start single message i2c transactions.
Also, gmbus_xfer done: will disable the interface without checking if it is idle. In the case of writes, there will be no wait on status or delay to ensure the write starts and completes before the interface is turned off.
Fixed the former issue by using the same cycle selection as used in the I2C_M_RD for the write case. GMBUS_CYCLE_WAIT | (i + 1 == num ? GMBUS_CYCLE_STOP : 0) Fixed the latter by waiting on GMBUS_ACTIVE to deassert before disable.
Signed-off-by: Benson Leung bleung@chromium.org
Reviewed-by: Daniel Kurtz djkurtz@chromium.org
Queued for -next (with a grumpy noted added to the commit message), thanks for the patch. -Daniel