mfd: bq257xx: Mark self-modifying BQ25792 registers volatile

Some BQ25792 configuration registers change without being written: input
source detection sets VINDPM and IINDPM at plug-in, plug-in also clears
EN_HIZ, the FORCE_* bits clear once their operation starts or completes,
EN_ACDRV1/2 follow input path changes, and ADC_EN clears after a one-shot
conversion. Reading them from the cache returns stale values.

Mark these registers volatile, keeping the cache for the rest.

Cc: stable@vger.kernel.org
Fixes: 9adbe53e32 ("mfd: bq257xx: Add BQ25792 support")
Signed-off-by: Alexey Charkov <alchark@flipper.net>
Link: https://patch.msgid.link/20261001-bq25792-volatile-v1-1-cb3d4ec8a414@flipper.net
Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
Alexey Charkov 2026-10-01 17:30:23 +04:00 committed by Lee Jones
parent 3606288af5
commit 56d974f3ad

View File

@ -52,8 +52,18 @@ static const struct regmap_access_table bq25792_writeable_regs = {
};
static const struct regmap_range bq25792_volatile_reg_ranges[] = {
regmap_reg_range(BQ25792_REG05_INPUT_VOLTAGE_LIMIT,
BQ25792_REG06_INPUT_CURRENT_LIMIT + 1),
regmap_reg_range(BQ25792_REG0F_CHARGER_CONTROL_0,
BQ25792_REG0F_CHARGER_CONTROL_0),
regmap_reg_range(BQ25792_REG11_CHARGER_CONTROL_2,
BQ25792_REG11_CHARGER_CONTROL_2),
regmap_reg_range(BQ25792_REG13_CHARGER_CONTROL_4,
BQ25792_REG13_CHARGER_CONTROL_4),
regmap_reg_range(BQ25792_REG19_ICO_CURRENT_LIMIT,
BQ25792_REG27_FAULT_FLAG_1),
regmap_reg_range(BQ25792_REG2E_ADC_CONTROL,
BQ25792_REG2E_ADC_CONTROL),
regmap_reg_range(BQ25792_REG31_IBUS_ADC,
BQ25792_REG47_DPDM_DRIVER),
};