i2c: i801: Fix block process call transactions
authorJean Delvare <jdelvare@suse.de>
Wed, 14 Feb 2024 14:59:39 +0000 (15:59 +0100)
committerAndi Shyti <andi.shyti@kernel.org>
Wed, 14 Feb 2024 21:15:38 +0000 (22:15 +0100)
commitc1c9d0f6f7f1dbf29db996bd8e166242843a5f21
tree0d53b56f176b749a872b5baa3e37842803eda60b
parentf44bff19268517ee98e80e944cad0f04f1db72e3
i2c: i801: Fix block process call transactions

According to the Intel datasheets, software must reset the block
buffer index twice for block process call transactions: once before
writing the outgoing data to the buffer, and once again before
reading the incoming data from the buffer.

The driver is currently missing the second reset, causing the wrong
portion of the block buffer to be read.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Reported-by: Piotr Zakowski <piotr.zakowski@intel.com>
Closes: https://lore.kernel.org/linux-i2c/20240213120553.7b0ab120@endymion.delvare/
Fixes: 315cd67c9453 ("i2c: i801: Add Block Write-Block Read Process Call support")
Reviewed-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
drivers/i2c/busses/i2c-i801.c