regmap: Account for register length when chunking
authorJim Wylder <jwylder@google.com>
Wed, 17 May 2023 15:20:11 +0000 (10:20 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 9 Jun 2023 08:34:28 +0000 (10:34 +0200)
commit77ee4f8c02b803b77cc7cf19c7000d7e7de4e849
tree00d75fccb856d16239ec342c669e1db246f9c62d
parenta8eaa9a06addbd9cb0238cb1c729921ecbb6504c
regmap: Account for register length when chunking

commit 3981514180c987a79ea98f0ae06a7cbf58a9ac0f upstream.

Currently, when regmap_raw_write() splits the data, it uses the
max_raw_write value defined for the bus.  For any bus that includes
the target register address in the max_raw_write value, the chunked
transmission will always exceed the maximum transmission length.
To avoid this problem, subtract the length of the register and the
padding from the maximum transmission.

Signed-off-by: Jim Wylder <jwylder@google.com
Link: https://lore.kernel.org/r/20230517152444.3690870-2-jwylder@google.com
Signed-off-by: Mark Brown <broonie@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/regmap/regmap.c