]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
regulator: ltc3676: Fix incorrect IRQSTAT bit offsets
authorAbhishek Ojha <Abhishek.ojha@savoirfairelinux.com>
Wed, 15 Jul 2026 17:04:08 +0000 (13:04 -0400)
committerMark Brown <broonie@kernel.org>
Thu, 16 Jul 2026 15:19:07 +0000 (16:19 +0100)
The LTC3676_IRQSTAT_* bit definitions do not match the IRQSTAT
(Interrupt Request Status) register layout documented in Table 15
of the LTC3676/LTC3676-1 datasheet:

  bit 0 - Pushbutton Status Active
  bit 1 - Hard Reset Occurred
  bit 2 - PGOOD Timeout Occurred
  bit 3 - Undervoltage Warning
  bit 4 - Undervoltage Standby (Fault) Occurred
  bit 5 - Overtemperature Warning
  bit 6 - Overtemperature Standby (Fault) Occurred
  bit 7 - Reserved

The driver instead defines these starting at bit 3, one bit higher
than the datasheet specifies, which causes ltc3676_regulator_isr()
to check the wrong status bits and misreport (or miss) PGOOD
timeout, undervoltage and thermal warning/fault conditions.

Fix the bit offsets to match the datasheet.

Fixes: 37b918a034fe ("regulator: Add LTC3676 support")
Cc: stable@vger.kernel.org
Signed-off-by: Abhishek Ojha <Abhishek.ojha@savoirfairelinux.com>
Link: https://patch.msgid.link/20260715170408.295552-1-Abhishek.ojha@savoirfairelinux.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/ltc3676.c

index 73d511eb1c1dceff75217b9dbc702246a1e309c7..768cdce0d4ecfba377c2ec4467a6a31d7d8576c1 100644 (file)
 #define LTC3676_DVBxA_REF_SELECT       BIT(5)
 #define LTC3676_DVBxB_PGOOD_MASK       BIT(5)
 
-#define LTC3676_IRQSTAT_PGOOD_TIMEOUT  BIT(3)
-#define LTC3676_IRQSTAT_UNDERVOLT_WARN BIT(4)
-#define LTC3676_IRQSTAT_UNDERVOLT_FAULT        BIT(5)
-#define LTC3676_IRQSTAT_THERMAL_WARN   BIT(6)
-#define LTC3676_IRQSTAT_THERMAL_FAULT  BIT(7)
+#define LTC3676_IRQSTAT_PGOOD_TIMEOUT  BIT(2)
+#define LTC3676_IRQSTAT_UNDERVOLT_WARN BIT(3)
+#define LTC3676_IRQSTAT_UNDERVOLT_FAULT        BIT(4)
+#define LTC3676_IRQSTAT_THERMAL_WARN   BIT(5)
+#define LTC3676_IRQSTAT_THERMAL_FAULT  BIT(6)
 
 enum ltc3676_reg {
        LTC3676_SW1,