Input: raydium_ts_i2c - do not split tx transactions
authorFurquan Shaikh <furquan@google.com>
Mon, 7 Dec 2020 06:05:13 +0000 (22:05 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Mon, 7 Dec 2020 06:12:39 +0000 (22:12 -0800)
commit3b384bd6c3f2d6d3526c77bfb264dfbaf737bc2a
tree3e3255f9c16b3abc1d2ea2531e8775ae6ff8feab
parent8c3b55a299c325830a987de21dab6a89ecb71164
Input: raydium_ts_i2c - do not split tx transactions

Raydium device does not like splitting of tx transactions into multiple
messages - one for the register address and one for the actual data. This
results in incorrect behavior on the device side.

This change updates raydium_i2c_read and raydium_i2c_write to create
i2c_msg arrays separately and passes those arrays into raydium_i2c_xfer
which decides based on the address whether the bank switch command should
be sent. The bank switch header is still added by raydium_i2c_read and
raydium_i2c_write to ensure that all these operations are performed as part
of a single I2C transfer. It guarantees that no other transactions are
initiated to any other device on the same bus after the bank switch command
is sent.

Signed-off-by: Furquan Shaikh <furquan@google.com>
Link: https://lore.kernel.org/r/20201205005941.1427643-1-furquan@google.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/raydium_i2c_ts.c