i2c: rcar: init new messages in irq
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Thu, 3 Sep 2015 20:20:09 +0000 (22:20 +0200)
committerWolfram Sang <wsa@the-dreams.de>
Fri, 9 Oct 2015 21:30:53 +0000 (22:30 +0100)
commit2bc3c5a8631db6d88f3a83188b069ca46b301315
treef13c2031a401eae4986a96dafe3631f8598fc862
parent344beeb23bfc11502fc54875f37ccdf51b6639b9
i2c: rcar: init new messages in irq

Setting up new messages was done in process context while handling a
message was in interrupt context. Because of the HW design, this IP core
is sensitive to timing, so the context switches were too expensive. Move
this setup to interrupt context as well.

In my test setup, this fixed the occasional 'data byte sent twice' issue
which a number of people have seen. It also fixes to send REP_START
after a read message which was wrongly send as a STOP + START sequence
before.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-rcar.c