summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorMyeonghun Pak <mhun512@gmail.com>2026-09-22 22:19:36 -0400
committerLee Jones <lee@kernel.org>2026-09-24 15:16:16 +0100
commitef464f82f3aecad4071af71074b2ceb77ffbb609 (patch)
tree96eee9cf625d78c3e95720de1111bbf18af3fe3a /include/linux
parentc115afabf0cbe85297f0ebcf1f9aa64bf66e491f (diff)
downloadlinux-next-ef464f82f3aecad4071af71074b2ceb77ffbb609.tar.gz
linux-next-ef464f82f3aecad4071af71074b2ceb77ffbb609.zip
mfd: da9150: Balance IRQ wake on teardown
DA9150 enables IRQ wake after registering its regmap IRQ chip, but does not disable it on a later probe failure or driver removal. This leaves the wake depth elevated after the handler is removed, and repeated bind attempts can accumulate the imbalance. Remember whether enabling IRQ wake succeeded and balance only a successful call. Remove MFD children first so their nested IRQ users are gone, then disable wake before removing the regmap IRQ chip. Preserve the existing non-fatal behavior when IRQ wake cannot be enabled. This issue was identified during our ongoing static-analysis research while reviewing kernel code. Fixes: b8fce55c09d3 ("mfd: Add support for DA9150 combined charger & fuel-gauge device") Assisted-by: LLM Co-developed-by: Ijae Kim <ae878000@gmail.com> Signed-off-by: Ijae Kim <ae878000@gmail.com> Signed-off-by: Myeonghun Pak <mhun512@gmail.com> Link: https://patch.msgid.link/20260923021936.957065-1-mhun512@gmail.com Signed-off-by: Lee Jones <lee@kernel.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/mfd/da9150/core.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/mfd/da9150/core.h b/include/linux/mfd/da9150/core.h
index d116d5f3ef56..369698036d1a 100644
--- a/include/linux/mfd/da9150/core.h
+++ b/include/linux/mfd/da9150/core.h
@@ -65,6 +65,7 @@ struct da9150 {
struct regmap_irq_chip_data *regmap_irq_data;
int irq;
int irq_base;
+ bool irq_wake_enabled;
};
/* Device I/O - Query Interface for FG and standard register access */