i2c: rcar: implement STOP and REP_START according to docs
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Wed, 8 Aug 2018 07:59:28 +0000 (09:59 +0200)
committerWolfram Sang <wsa@the-dreams.de>
Mon, 20 Aug 2018 12:49:41 +0000 (14:49 +0200)
commit19358d4488db7e6a04e940730cc75909d7d1e0d8
tree34e8ef30c493874ed7705a463f99e79dc9ec627d
parentb07531acd55180efc95e334605f04ca1eaf4e003
i2c: rcar: implement STOP and REP_START according to docs

When doing a REP_START after a read message, the driver used to trigger
a STOP first which would then be overwritten by REP_START. This was the
only stable method found when doing the last refactoring. However, this
was not in accordance with the documentation.

After research from our BSP team and myself, we now can implement a
version which works and is according to the documentation. The new
approach ensures the ICMCR register is only changed when really needed.

Tested on a R-Car Gen2 (H2) and Gen3 with DMA (M3N).

Signed-off-by: Hiromitsu Yamasaki <hiromitsu.yamasaki.ym@renesas.com>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Ulrich Hecht <uli+renesas@fpond.eu>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-rcar.c