summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorAlexey Charkov <alchark@flipper.net>2026-10-01 17:30:23 +0400
committerLee Jones <lee@kernel.org>2026-10-15 16:06:22 +0100
commit56d974f3ad074a60bf877d131eab8b1df5b4f069 (patch)
tree775c2b117a63ac565e4115a39afad952ab0f9511 /drivers
parent3606288af5e8c09a14ab5b19e121feec75296354 (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.c10
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),
};