regmap: Account for register length in SMBus I/O limits
authorMark Brown <broonie@kernel.org>
Wed, 12 Jul 2023 11:16:40 +0000 (12:16 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 17 Jul 2023 05:15:15 +0000 (06:15 +0100)
commit0c9d2eb5e94792fe64019008a04d4df5e57625af
tree25172bb5c633d29db0690318a149f9c6216d3ae7
parentbc64734825c59e18a27ac266b07e14944c111fd8
regmap: Account for register length in SMBus I/O limits

The SMBus I2C buses have limits on the size of transfers they can do but
do not factor in the register length meaning we may try to do a transfer
longer than our length limit, the core will not take care of this.
Future changes will factor this out into the core but there are a number
of users that assume current behaviour so let's just do something
conservative here.

This does not take account padding bits but practically speaking these
are very rarely if ever used on I2C buses given that they generally run
slowly enough to mean there's no issue.

Cc: stable@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Xu Yilun <yilun.xu@intel.com>
Link: https://lore.kernel.org/r/20230712-regmap-max-transfer-v1-2-80e2aed22e83@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/base/regmap/regmap-i2c.c