On Wed, Apr 05, 2023 at 10:14:23PM +0200, Jan Kundrát wrote:
After upgrading from 5.16 to 6.1, our board with a MAX14830 started producing lots of garbage data over UART. Bisection pointed out commit 285e76fc049c as the culprit. That patch tried to replace hand-written code which I added in 2b4bac48c1084 ("serial: max310x: Use batched reads when reasonably safe") with the generic regmap infrastructure for batched operations.
Unfortunately, the `regmap_raw_read` and `regmap_raw_write` which were used are actually functions which perform IO over *multiple* registers. That's not what is needed for accessing these Tx/Rx FIFOs; the appropriate functions are the `_noinc_` versions, not the `_raw_` ones.
Fix this regression by using `regmap_noinc_read()` and `regmap_noinc_write()` along with the necessary `regmap_config` setup; with this patch in place, our board communicates happily again. Since our board uses SPI for talking to this chip, the I2C part is completely untested.
Fixes: 285e76fc049c serial: max310x: use regmap methods for SPI batch operations
Nit, please use the style that the documentation asks for here, which should look like:
Fixes: 285e76fc049c ("serial: max310x: use regmap methods for SPI batch operations")
otherwise our tools complain :( I'll go fix this up by hand...
greg k-h