mirror of
https://github.com/torvalds/linux.git
synced 2026-10-23 15:32:04 +02:00
regulator: ltc3676: don't read the write-only HRST and CLIRQ registers
HRST (0x1e) and CLIRQ (0x1f) are write-only command strobes. Writing HRST
triggers a hard reset of the chip and writing CLIRQ clears the interrupt;
reading them returns nothing useful, and the read itself fires the command.
The result is that a plain register dump resets the board:
cat /sys/kernel/debug/regmap/2-003c/registers
walks every readable register, hits HRST, and the board reboots.
Split the callback back in two so HRST and CLIRQ stay writable but are no
longer readable. The readable range is left unchanged
(LTC3676_BUCK1 ... LTC3676_IRQSTAT).
Fixes: 37b918a034 ("regulator: Add LTC3676 support")
Cc: stable@vger.kernel.org
Signed-off-by: Abhishek Ojha <Abhishek.ojha@savoirfairelinux.com>
Link: https://patch.msgid.link/20260902010701.3360310-1-Abhishek.ojha@savoirfairelinux.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
5a26d7d96a
commit
28c2388ee2
|
|
@ -232,7 +232,7 @@ static const struct regulator_desc ltc3676_regulators[LTC3676_NUM_REGULATORS] =
|
|||
LTC3676_FIXED_REG(LDO4, ldo4, LDOB, 2),
|
||||
};
|
||||
|
||||
static bool ltc3676_readable_writeable_reg(struct device *dev, unsigned int reg)
|
||||
static bool ltc3676_writeable_reg(struct device *dev, unsigned int reg)
|
||||
{
|
||||
switch (reg) {
|
||||
case LTC3676_BUCK1 ... LTC3676_IRQSTAT:
|
||||
|
|
@ -243,6 +243,15 @@ static bool ltc3676_readable_writeable_reg(struct device *dev, unsigned int reg)
|
|||
return false;
|
||||
}
|
||||
|
||||
static bool ltc3676_readable_reg(struct device *dev, unsigned int reg)
|
||||
{
|
||||
switch (reg) {
|
||||
case LTC3676_BUCK1 ... LTC3676_IRQSTAT:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool ltc3676_volatile_reg(struct device *dev, unsigned int reg)
|
||||
{
|
||||
switch (reg) {
|
||||
|
|
@ -255,8 +264,8 @@ static bool ltc3676_volatile_reg(struct device *dev, unsigned int reg)
|
|||
static const struct regmap_config ltc3676_regmap_config = {
|
||||
.reg_bits = 8,
|
||||
.val_bits = 8,
|
||||
.writeable_reg = ltc3676_readable_writeable_reg,
|
||||
.readable_reg = ltc3676_readable_writeable_reg,
|
||||
.writeable_reg = ltc3676_writeable_reg,
|
||||
.readable_reg = ltc3676_readable_reg,
|
||||
.volatile_reg = ltc3676_volatile_reg,
|
||||
.max_register = LTC3676_CLIRQ,
|
||||
.use_single_read = true,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user