i2c: xiic: Switch to Xiic standard mode for i2c-read
authorRaviteja Narayanam <raviteja.narayanam@xilinx.com>
Thu, 2 Feb 2023 09:41:32 +0000 (15:11 +0530)
committerWolfram Sang <wsa@kernel.org>
Fri, 3 Feb 2023 16:34:00 +0000 (17:34 +0100)
commit2fd5cf352efa0c62dd20d1e046bc8767395b1ec0
treed20c20bf784052d179526fd7e0ab1f6c6e46554b
parent813eac4fcb839bdf22aacfda0f2713fe50a82974
i2c: xiic: Switch to Xiic standard mode for i2c-read

Xilinx I2C IP has two modes of operation, both of which implement
I2C transactions. The only difference from sw perspective is the
programming sequence for these modes.
Dynamic mode  -> Simple to program, less number of steps in sequence.
Standard mode -> Gives flexibility, more number of steps in sequence.

In dynamic mode, during the i2c-read transactions, if there is a
delay(> 200us) between the register writes (address & byte count),
read transaction fails. On a system with load, this scenario is
occurring frequently.
To avoid this, switch to standard mode if there is a read request.

Added a quirk to identify the IP version effected by this and follow
the standard mode.

Signed-off-by: Raviteja Narayanam <raviteja.narayanam@xilinx.com>
Signed-off-by: Manikanta Guntupalli <manikanta.guntupalli@amd.com>
Acked-by: Michal Simek <michal.simek@amd.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-xiic.c