1
0
Fork 0
alistair23-linux/drivers/i2c
Raviteja Narayanam a14d6a9ddf Revert "i2c: cadence: Fix the hold bit setting"
[ Upstream commit 0db9254d6b ]

This reverts commit d358def706.

There are two issues with "i2c: cadence: Fix the hold bit setting" commit.

1. In case of combined message request from user space, when the HOLD
bit is cleared in cdns_i2c_mrecv function, a STOP condition is sent
on the bus even before the last message is started. This is because when
the HOLD bit is cleared, the FIFOS are empty and there is no pending
transfer. The STOP condition should occur only after the last message
is completed.

2. The code added by the commit is redundant. Driver is handling the
setting/clearing of HOLD bit in right way before the commit.

The setting of HOLD bit based on 'bus_hold_flag' is taken care in
cdns_i2c_master_xfer function even before cdns_i2c_msend/cdns_i2c_recv
functions.

The clearing of HOLD bit is taken care at the end of cdns_i2c_msend and
cdns_i2c_recv functions based on bus_hold_flag and byte count.
Since clearing of HOLD bit is done after the slave address is written to
the register (writing to address register triggers the message transfer),
it is ensured that STOP condition occurs at the right time after
completion of the pending transfer (last message).

Signed-off-by: Raviteja Narayanam <raviteja.narayanam@xilinx.com>
Acked-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-08-05 09:59:50 +02:00
..
algos i2c: algo-pca: Add 0x78 as SCL stuck low status for PCA9665 2020-07-09 09:37:54 +02:00
busses Revert "i2c: cadence: Fix the hold bit setting" 2020-08-05 09:59:50 +02:00
muxes i2c: mux: demux-pinctrl: Fix an error handling path in 'i2c_demux_pinctrl_probe()' 2020-05-27 17:46:18 +02:00
Kconfig docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
Makefile i2c: don't use any __deprecated handling anymore 2018-08-24 17:26:43 +02:00
i2c-boardinfo.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
i2c-core-acpi.c i2c: acpi: put device when verifying client fails 2020-03-18 07:17:58 +01:00
i2c-core-base.c i2c: fix missing pm_runtime_put_sync in i2c_device_probe 2020-05-27 17:46:15 +02:00
i2c-core-of.c i2c: core: fix use after free in of_i2c_notify 2019-11-15 22:01:13 +01:00
i2c-core-slave.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
i2c-core-smbus.c i2c: core: check returned size of emulated smbus block read 2020-06-30 15:37:02 -04:00
i2c-core.h Merge branch 'i2c/for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2019-07-15 21:10:39 -07:00
i2c-dev.c i2c: dev: Fix the race between the release of i2c_dev and cdev 2020-05-27 17:46:07 +02:00
i2c-mux.c i2c: mux: add sysfs header 2019-06-22 07:32:33 +02:00
i2c-slave-eeprom.c i2c: slave-eeprom: Add read only mode 2019-09-28 20:44:12 +02:00
i2c-smbus.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
i2c-stub.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00