[PATCH 2/2] regulator: pf0900: Modify volatile register range definition
From: joy . zou
Date: Wed Jun 17 2026 - 22:01:16 EST
From: Joy Zou <joy.zou@xxxxxxx>
The pf0900_range was incorrectly defined as a single continuous range
from PF0900_REG_DEV_ID to PF0900_REG_SYS_DIAG, which includes many
non-volatile registers. This could lead to unnecessary I2C/SPI reads
and potential performance issues.
Ensures only volatile registers are read from the device
on each access, while other registers can be cached by regmap.
Fixes: 162e23657e53 ("regulator: pf0900: Add PMIC PF0900 support")
Signed-off-by: Joy Zou <joy.zou@xxxxxxx>
---
drivers/regulator/pf0900-regulator.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/drivers/regulator/pf0900-regulator.c b/drivers/regulator/pf0900-regulator.c
index 5c44d2dbcab4..bca76c58ed3b 100644
--- a/drivers/regulator/pf0900-regulator.c
+++ b/drivers/regulator/pf0900-regulator.c
@@ -284,13 +284,24 @@ struct pf0900_regulator_irq {
unsigned int event;
};
-static const struct regmap_range pf0900_range = {
- .range_min = PF0900_REG_DEV_ID,
- .range_max = PF0900_REG_SYS_DIAG,
+static const struct regmap_range pf0900_range[] = {
+ regmap_reg_range(PF0900_REG_SYSTEM_INT, PF0900_REG_SYSTEM_INT),
+ regmap_reg_range(PF0900_REG_STATUS1_SNS, PF0900_REG_STATUS1_SNS),
+ regmap_reg_range(PF0900_REG_STATUS2_SNS, PF0900_REG_STATUS2_SNS),
+ regmap_reg_range(PF0900_REG_SW_ILIM_SNS, PF0900_REG_SW_ILIM_SNS),
+ regmap_reg_range(PF0900_REG_LDO_ILIM_SNS, PF0900_REG_LDO_ILIM_SNS),
+ regmap_reg_range(PF0900_REG_SW_UV_SNS, PF0900_REG_SW_UV_SNS),
+ regmap_reg_range(PF0900_REG_SW_OV_SNS, PF0900_REG_SW_OV_SNS),
+ regmap_reg_range(PF0900_REG_LDO_UV_SNS, PF0900_REG_LDO_UV_SNS),
+ regmap_reg_range(PF0900_REG_LDO_OV_SNS, PF0900_REG_LDO_OV_SNS),
+ regmap_reg_range(PF0900_REG_IO_SNS, PF0900_REG_ABIST_IO),
+ regmap_reg_range(PF0900_REG_SECURE_WR1, PF0900_REG_SECURE_WR1),
+ regmap_reg_range(PF0900_REG_WD_CNT1, PF0900_REG_WD_CNT2),
+ regmap_reg_range(PF0900_REG_SYS_DIAG, PF0900_REG_SYS_DIAG),
};
static const struct regmap_access_table pf0900_volatile_regs = {
- .yes_ranges = &pf0900_range,
+ .yes_ranges = pf0900_range,
.n_yes_ranges = 1,
};
--
2.34.1