i2c: designware: fix poll-after-enable regression
authorAlexander Monakov <amonakov@ispras.ru>
Sat, 28 Apr 2018 13:56:06 +0000 (16:56 +0300)
committerWolfram Sang <wsa@the-dreams.de>
Thu, 10 May 2018 10:30:20 +0000 (12:30 +0200)
commit06cb616b1bca7080824acfedb3d4c898e7a64836
tree06acef331b438d39e151dd3b2ab909bbc5c0d690
parent4c0330208f6bfe5285bae239fdb2a7ec1ce1f78d
i2c: designware: fix poll-after-enable regression

Not all revisions of DW I2C controller implement the enable status register.
On platforms where that's the case (e.g. BG2CD and SPEAr ARM SoCs), waiting
for enable will time out as reading the unimplemented register yields zero.

It was observed that reading the IC_ENABLE_STATUS register once suffices to
avoid getting it stuck on Bay Trail hardware, so replace polling with one
dummy read of the register.

Fixes: fba4adbbf670 ("i2c: designware: must wait for enable")
Signed-off-by: Alexander Monakov <amonakov@ispras.ru>
Tested-by: Ben Gardner <gardner.ben@gmail.com>
Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Cc: stable@kernel.org
drivers/i2c/busses/i2c-designware-master.c