diff options
| author | Alexey Charkov <alchark@flipper.net> | 2026-10-01 17:30:23 +0400 |
|---|---|---|
| committer | Lee Jones <lee@kernel.org> | 2026-10-15 16:06:22 +0100 |
| commit | 56d974f3ad074a60bf877d131eab8b1df5b4f069 (patch) | |
| tree | 775c2b117a63ac565e4115a39afad952ab0f9511 /drivers | |
| parent | 3606288af5e8c09a14ab5b19e121feec75296354 (diff) | |
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: 9adbe53e32cd ("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>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/mfd/bq257xx.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/mfd/bq257xx.c b/drivers/mfd/bq257xx.c index 054342c60b73..01f5fc97f538 100644 --- a/drivers/mfd/bq257xx.c +++ b/drivers/mfd/bq257xx.c @@ -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), }; |
