From: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
To: "Rafael J. Wysocki" <rafael@kernel.org>,
Len Brown <len.brown@intel.com>, Pavel Machek <pavel@ucw.cz>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Maxime Coquelin <mcoquelin.stm32@gmail.com>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Linus Walleij <linus.walleij@linaro.org>,
Conor Dooley <conor.dooley@microchip.com>,
Daire McNamara <daire.mcnamara@microchip.com>
Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-input@vger.kernel.org, linux-rtc@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org, linux-riscv@lists.infradead.org,
Peng Fan <peng.fan@nxp.com>
Subject: [PATCH v2 01/12] PM: sleep: wakeirq: Introduce device-managed variant of dev_pm_set_wake_irq
Date: Fri, 03 Jan 2025 16:41:13 +0800 [thread overview]
Message-ID: <20250103-wake_irq-v2-1-e3aeff5e9966@nxp.com> (raw)
In-Reply-To: <20250103-wake_irq-v2-0-e3aeff5e9966@nxp.com>
From: Peng Fan <peng.fan@nxp.com>
Add device-managed variant of dev_pm_set_wake_irq which automatically
clear the wake irq on device destruction to simplify error handling
and resource management in drivers.
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
drivers/base/power/wakeirq.c | 26 ++++++++++++++++++++++++++
include/linux/pm_wakeirq.h | 6 ++++++
2 files changed, 32 insertions(+)
diff --git a/drivers/base/power/wakeirq.c b/drivers/base/power/wakeirq.c
index 5a5a9e978e85f3fc9d89cb7d43527dc1dd42a9b1..8aa28c08b2891f3af490175362cc1a759069bd50 100644
--- a/drivers/base/power/wakeirq.c
+++ b/drivers/base/power/wakeirq.c
@@ -103,6 +103,32 @@ void dev_pm_clear_wake_irq(struct device *dev)
}
EXPORT_SYMBOL_GPL(dev_pm_clear_wake_irq);
+static void devm_pm_clear_wake_irq(void *dev)
+{
+ dev_pm_clear_wake_irq(dev);
+}
+
+/**
+ * devm_pm_set_wake_irq - device-managed variant of dev_pm_set_wake_irq
+ * @dev: Device entry
+ * @irq: Device IO interrupt
+ *
+ *
+ * Attach a device IO interrupt as a wake IRQ, same with dev_pm_set_wake_irq,
+ * but the device will be auto clear wake capability on driver detach.
+ */
+int devm_pm_set_wake_irq(struct device *dev, int irq)
+{
+ int ret;
+
+ ret = dev_pm_set_wake_irq(dev, irq);
+ if (ret)
+ return ret;
+
+ return devm_add_action_or_reset(dev, devm_pm_clear_wake_irq, dev);
+}
+EXPORT_SYMBOL_GPL(devm_pm_set_wake_irq);
+
/**
* handle_threaded_wake_irq - Handler for dedicated wake-up interrupts
* @irq: Device specific dedicated wake-up interrupt
diff --git a/include/linux/pm_wakeirq.h b/include/linux/pm_wakeirq.h
index d9642c6cf85211af603ce39e280a5b4de6617ee5..25b63ed51b765c2c6919f259668a12675330835e 100644
--- a/include/linux/pm_wakeirq.h
+++ b/include/linux/pm_wakeirq.h
@@ -10,6 +10,7 @@ extern int dev_pm_set_wake_irq(struct device *dev, int irq);
extern int dev_pm_set_dedicated_wake_irq(struct device *dev, int irq);
extern int dev_pm_set_dedicated_wake_irq_reverse(struct device *dev, int irq);
extern void dev_pm_clear_wake_irq(struct device *dev);
+extern int devm_pm_set_wake_irq(struct device *dev, int irq);
#else /* !CONFIG_PM */
@@ -32,5 +33,10 @@ static inline void dev_pm_clear_wake_irq(struct device *dev)
{
}
+static inline int devm_pm_set_wake_irq(struct device *dev, int irq)
+{
+ return 0;
+}
+
#endif /* CONFIG_PM */
#endif /* _LINUX_PM_WAKEIRQ_H */
--
2.37.1
WARNING: multiple messages have this Message-ID (diff)
From: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
To: "Rafael J. Wysocki" <rafael@kernel.org>,
Len Brown <len.brown@intel.com>, Pavel Machek <pavel@ucw.cz>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Maxime Coquelin <mcoquelin.stm32@gmail.com>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Linus Walleij <linus.walleij@linaro.org>,
Conor Dooley <conor.dooley@microchip.com>,
Daire McNamara <daire.mcnamara@microchip.com>
Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-input@vger.kernel.org, linux-rtc@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org, linux-riscv@lists.infradead.org,
Peng Fan <peng.fan@nxp.com>
Subject: [PATCH v2 01/12] PM: sleep: wakeirq: Introduce device-managed variant of dev_pm_set_wake_irq
Date: Fri, 03 Jan 2025 16:41:13 +0800 [thread overview]
Message-ID: <20250103-wake_irq-v2-1-e3aeff5e9966@nxp.com> (raw)
In-Reply-To: <20250103-wake_irq-v2-0-e3aeff5e9966@nxp.com>
From: Peng Fan <peng.fan@nxp.com>
Add device-managed variant of dev_pm_set_wake_irq which automatically
clear the wake irq on device destruction to simplify error handling
and resource management in drivers.
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
drivers/base/power/wakeirq.c | 26 ++++++++++++++++++++++++++
include/linux/pm_wakeirq.h | 6 ++++++
2 files changed, 32 insertions(+)
diff --git a/drivers/base/power/wakeirq.c b/drivers/base/power/wakeirq.c
index 5a5a9e978e85f3fc9d89cb7d43527dc1dd42a9b1..8aa28c08b2891f3af490175362cc1a759069bd50 100644
--- a/drivers/base/power/wakeirq.c
+++ b/drivers/base/power/wakeirq.c
@@ -103,6 +103,32 @@ void dev_pm_clear_wake_irq(struct device *dev)
}
EXPORT_SYMBOL_GPL(dev_pm_clear_wake_irq);
+static void devm_pm_clear_wake_irq(void *dev)
+{
+ dev_pm_clear_wake_irq(dev);
+}
+
+/**
+ * devm_pm_set_wake_irq - device-managed variant of dev_pm_set_wake_irq
+ * @dev: Device entry
+ * @irq: Device IO interrupt
+ *
+ *
+ * Attach a device IO interrupt as a wake IRQ, same with dev_pm_set_wake_irq,
+ * but the device will be auto clear wake capability on driver detach.
+ */
+int devm_pm_set_wake_irq(struct device *dev, int irq)
+{
+ int ret;
+
+ ret = dev_pm_set_wake_irq(dev, irq);
+ if (ret)
+ return ret;
+
+ return devm_add_action_or_reset(dev, devm_pm_clear_wake_irq, dev);
+}
+EXPORT_SYMBOL_GPL(devm_pm_set_wake_irq);
+
/**
* handle_threaded_wake_irq - Handler for dedicated wake-up interrupts
* @irq: Device specific dedicated wake-up interrupt
diff --git a/include/linux/pm_wakeirq.h b/include/linux/pm_wakeirq.h
index d9642c6cf85211af603ce39e280a5b4de6617ee5..25b63ed51b765c2c6919f259668a12675330835e 100644
--- a/include/linux/pm_wakeirq.h
+++ b/include/linux/pm_wakeirq.h
@@ -10,6 +10,7 @@ extern int dev_pm_set_wake_irq(struct device *dev, int irq);
extern int dev_pm_set_dedicated_wake_irq(struct device *dev, int irq);
extern int dev_pm_set_dedicated_wake_irq_reverse(struct device *dev, int irq);
extern void dev_pm_clear_wake_irq(struct device *dev);
+extern int devm_pm_set_wake_irq(struct device *dev, int irq);
#else /* !CONFIG_PM */
@@ -32,5 +33,10 @@ static inline void dev_pm_clear_wake_irq(struct device *dev)
{
}
+static inline int devm_pm_set_wake_irq(struct device *dev, int irq)
+{
+ return 0;
+}
+
#endif /* CONFIG_PM */
#endif /* _LINUX_PM_WAKEIRQ_H */
--
2.37.1
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2025-01-03 8:44 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-03 8:41 [PATCH v2 00/12] pm: Introduce devm_pm_set_wake_irq Peng Fan (OSS)
2025-01-03 8:41 ` Peng Fan (OSS)
2025-01-03 8:41 ` Peng Fan (OSS) [this message]
2025-01-03 8:41 ` [PATCH v2 01/12] PM: sleep: wakeirq: Introduce device-managed variant of dev_pm_set_wake_irq Peng Fan (OSS)
2025-01-14 20:20 ` Rafael J. Wysocki
2025-01-14 20:20 ` Rafael J. Wysocki
2025-01-15 1:28 ` Peng Fan
2025-01-15 1:28 ` Peng Fan
2025-01-17 19:30 ` Rafael J. Wysocki
2025-01-17 19:30 ` Rafael J. Wysocki
2025-01-03 8:41 ` [PATCH v2 02/12] input: keyboard: ep93xx_keypad: Use devm_pm_set_wake_irq Peng Fan (OSS)
2025-01-03 8:41 ` Peng Fan (OSS)
2025-01-03 8:41 ` [PATCH v2 03/12] input: keyboard: omap4_keypad: " Peng Fan (OSS)
2025-01-03 8:41 ` Peng Fan (OSS)
2025-01-03 8:41 ` [PATCH v2 04/12] input: misc: nxp-bbnsm-pwrkey: Use resource managed API to simplify code Peng Fan (OSS)
2025-01-03 8:41 ` Peng Fan (OSS)
2025-01-03 8:41 ` [PATCH v2 05/12] input: touchscreen: ti_am335x_tsc: " Peng Fan (OSS)
2025-01-03 8:41 ` Peng Fan (OSS)
2025-01-03 8:41 ` [PATCH v2 06/12] rtc: stm32: " Peng Fan (OSS)
2025-01-03 8:41 ` Peng Fan (OSS)
2025-01-20 8:32 ` [Linux-stm32] " Antonio Borneo
2025-01-20 8:32 ` Antonio Borneo
2025-01-03 8:41 ` [PATCH v2 07/12] rtc: nxp-bbnsm: " Peng Fan (OSS)
2025-01-03 8:41 ` Peng Fan (OSS)
2025-01-03 8:41 ` [PATCH v2 08/12] rtc: ds1343: Use devm_pm_set_wake_irq Peng Fan (OSS)
2025-01-03 8:41 ` Peng Fan (OSS)
2025-01-03 8:41 ` [PATCH v2 09/12] rtc: pm8xxx: " Peng Fan (OSS)
2025-01-03 8:41 ` Peng Fan (OSS)
2025-01-14 12:17 ` Linus Walleij
2025-01-14 12:17 ` Linus Walleij
2025-01-03 8:41 ` [PATCH v2 10/12] rtc: ab8500: Use resource managed API to simplify code Peng Fan (OSS)
2025-01-03 8:41 ` Peng Fan (OSS)
2025-01-03 8:41 ` [PATCH v2 11/12] rtc: mpfs: Use devm_pm_set_wake_irq Peng Fan (OSS)
2025-01-03 8:41 ` Peng Fan (OSS)
2025-01-03 8:41 ` [PATCH v2 12/12] rtc: pl031: Use resource managed API to simplify code Peng Fan (OSS)
2025-01-03 8:41 ` Peng Fan (OSS)
2025-01-20 8:57 ` [PATCH v2 00/12] pm: Introduce devm_pm_set_wake_irq Peng Fan
2025-01-20 8:57 ` Peng Fan
2025-02-03 19:15 ` patchwork-bot+linux-riscv
2025-02-03 19:15 ` patchwork-bot+linux-riscv
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250103-wake_irq-v2-1-e3aeff5e9966@nxp.com \
--to=peng.fan@oss.nxp.com \
--cc=alexandre.belloni@bootlin.com \
--cc=alexandre.torgue@foss.st.com \
--cc=conor.dooley@microchip.com \
--cc=daire.mcnamara@microchip.com \
--cc=dmitry.torokhov@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=len.brown@intel.com \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-rtc@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=mcoquelin.stm32@gmail.com \
--cc=pavel@ucw.cz \
--cc=peng.fan@nxp.com \
--cc=rafael@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.