this series fixes an issue with the I2C driver of the Renesas R-Car and RZ/G1 family of chips. The issue is clearly visible with the CIP kernel (4.4) running on a iwg20d board from iWave due to the way the bq32000 driver/device is interacting with the I2C driver/controller. In the stable kernel (4.4) there is no support for the iwg20d, I tried to replicate the same problem on a Koelsch board with no success, but the problem is there.
For the record, this patchset was developed on a Lager board (R-Car H2) but the issue was known to be present on other Gen2 SoCs, too. This was a nasty race condition. IIRC I was able to reproduce the issue only with the first transfer after boot (for whatever reason). And fixing it, together with another issue (double address byte), needed all this refactoring.
I might try to recap how this double data byte problem was triggered. This is somewhere on my todo-list anyhow. Just to check if the same problem is still present with Gen3 SoCs. No promises, but I'll see what I can do.