From 56d974f3ad074a60bf877d131eab8b1df5b4f069 Mon Sep 17 00:00:00 2001 From: Alexey Charkov Date: Thu, 1 Oct 2026 17:30:23 +0400 Subject: [PATCH] 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 Link: https://patch.msgid.link/20261001-bq25792-volatile-v1-1-cb3d4ec8a414@flipper.net Signed-off-by: Lee Jones --- drivers/mfd/bq257xx.c | 10 ++++++++++ 1 file changed, 10 insertions(+) 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), };