i2c: cadence: Fix the hold bit setting
authorShubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Tue, 5 Feb 2019 11:12:53 +0000 (16:42 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 23 Mar 2019 07:18:59 +0000 (08:18 +0100)
commit8086ef79de57b3b03262694bdf1c425a559a3fd2
treee6a91890e29303edf1e5c8ac8bc2dca17b4bf360
parent3c05cf982f0ee405b12d542704d8dc0b9bb19b00
i2c: cadence: Fix the hold bit setting

[ Upstream commit d358def706880defa4c9e87381c5bf086a97d5f9 ]

In case the hold bit is not needed we are carrying the old values.
Fix the same by resetting the bit when not needed.

Fixes the sporadic i2c bus lockups on National Instruments
Zynq-based devices.

Fixes: df8eb5691c48 ("i2c: Add driver for Cadence I2C controller")
Reported-by: Kyle Roeschley <kyle.roeschley@ni.com>
Acked-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Tested-by: Kyle Roeschley <kyle.roeschley@ni.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/i2c/busses/i2c-cadence.c