* [PATCH v2 0/2] thermal: qcom: tsens: refine wake IRQ handling for suspend
@ 2026-06-01 6:37 Priyansh Jain
2026-06-01 6:37 ` [PATCH v2 1/2] thermal: qcom: tsens: switch wake IRQ handling to PM callbacks Priyansh Jain
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Priyansh Jain @ 2026-06-01 6:37 UTC (permalink / raw)
To: Amit Kucheria, Thara Gopinath, Rafael J. Wysocki, Daniel Lezcano,
Zhang Rui, Lukasz Luba
Cc: linux-arm-msm, linux-pm, linux-kernel, Priyansh Jain
This series refines how TSENS threshold IRQs are used as wake sources
across suspend/resume.
Patch 1 moves IRQ wake control from registration time into PM callbacks,
so wakeup configuration follows the actual suspend state instead of being
left enabled during normal runtime.
Patch 2 adds a platform-data opt-out for wake IRQ setup and uses it for
automotive TSENS compatibles (SA8775P/SA8255P), where parking suspend
should not be exited repeatedly due to TSENS threshold wake events.
Series highlights:
- store and manage TSENS IRQ wake state in suspend/resume paths
- keep existing runtime monitoring behavior unchanged
- disable TSENS wake IRQ setup for selected automotive targets
Signed-off-by: Priyansh Jain <priyansh.jain@oss.qualcomm.com>
---
Changes in v2:
- Fix indentation issues
- Remove redundant checks for IRQ numbers since device_may_wakeup() already
ensures interrupts are registered. Simplifies code logic.
- Patch 2: No changes, LGTM from Daniel Lezcano
- Link to v1: https://patch.msgid.link/20260526-tsens_interrupt_wake_control-v1-0-6adcd75555b9@oss.qualcomm.com
To: Amit Kucheria <amitk@kernel.org>
To: Thara Gopinath <thara.gopinath@gmail.com>
To: "Rafael J. Wysocki" <rafael@kernel.org>
To: Daniel Lezcano <daniel.lezcano@kernel.org>
To: Zhang Rui <rui.zhang@intel.com>
To: Lukasz Luba <lukasz.luba@arm.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
Priyansh Jain (2):
thermal: qcom: tsens: switch wake IRQ handling to PM callbacks
thermal: qcom: tsens: Disable wakeup interrupt setup on automotive targets
drivers/thermal/qcom/tsens-v2.c | 9 +++++-
drivers/thermal/qcom/tsens.c | 70 ++++++++++++++++++++++++++++++++++-------
drivers/thermal/qcom/tsens.h | 23 +++++++++++++-
3 files changed, 88 insertions(+), 14 deletions(-)
---
base-commit: e8c2f9fdadee7cbc75134dc463c1e0d856d6e5c7
change-id: 20260526-tsens_interrupt_wake_control-08be7b86591d
Best regards,
--
Priyansh Jain <priyansh.jain@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/2] thermal: qcom: tsens: switch wake IRQ handling to PM callbacks
2026-06-01 6:37 [PATCH v2 0/2] thermal: qcom: tsens: refine wake IRQ handling for suspend Priyansh Jain
@ 2026-06-01 6:37 ` Priyansh Jain
2026-06-01 6:37 ` [PATCH v2 2/2] thermal: qcom: tsens: Disable wakeup interrupt setup on automotive targets Priyansh Jain
2026-06-02 21:12 ` [PATCH v2 0/2] thermal: qcom: tsens: refine wake IRQ handling for suspend Daniel Lezcano
2 siblings, 0 replies; 7+ messages in thread
From: Priyansh Jain @ 2026-06-01 6:37 UTC (permalink / raw)
To: Amit Kucheria, Thara Gopinath, Rafael J. Wysocki, Daniel Lezcano,
Zhang Rui, Lukasz Luba
Cc: linux-arm-msm, linux-pm, linux-kernel, Priyansh Jain
This change improves power management by using the standardized PM
framework for wake IRQ handling.
Move wake IRQ control to the PM suspend/resume path:
- store uplow/critical IRQ numbers in struct tsens_priv
- enable wake IRQs in tsens_suspend_common() when wakeup is allowed
- disable wake IRQs in tsens_resume_common()
- mark the device wakeup-capable during probe
This aligns TSENS wake behavior with suspend flow and avoids keeping
wake IRQs permanently enabled during runtime.
Signed-off-by: Priyansh Jain <priyansh.jain@oss.qualcomm.com>
---
drivers/thermal/qcom/tsens-v2.c | 1 -
drivers/thermal/qcom/tsens.c | 64 +++++++++++++++++++++++++++++++++--------
drivers/thermal/qcom/tsens.h | 18 +++++++++++-
3 files changed, 69 insertions(+), 14 deletions(-)
diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c
index 8d9698ea3ec4..e06f8e5802e8 100644
--- a/drivers/thermal/qcom/tsens-v2.c
+++ b/drivers/thermal/qcom/tsens-v2.c
@@ -263,7 +263,6 @@ static int __init init_tsens_v2_no_rpm(struct tsens_priv *priv)
static const struct tsens_ops ops_generic_v2 = {
.init = init_common,
.get_temp = get_temp_tsens_valid,
- .resume = tsens_resume_common,
};
struct tsens_plat_data data_tsens_v2 = {
diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
index a2422ebee816..5210985b3767 100644
--- a/drivers/thermal/qcom/tsens.c
+++ b/drivers/thermal/qcom/tsens.c
@@ -1086,22 +1086,30 @@ static int tsens_get_temp(struct thermal_zone_device *tz, int *temp)
static int __maybe_unused tsens_suspend(struct device *dev)
{
+ int ret = 0;
struct tsens_priv *priv = dev_get_drvdata(dev);
- if (priv->ops && priv->ops->suspend)
- return priv->ops->suspend(priv);
+ if (priv->ops && priv->ops->suspend) {
+ ret = priv->ops->suspend(priv);
+ if (ret)
+ return ret;
+ }
- return 0;
+ return tsens_suspend_common(priv);
}
static int __maybe_unused tsens_resume(struct device *dev)
{
+ int ret = 0;
struct tsens_priv *priv = dev_get_drvdata(dev);
- if (priv->ops && priv->ops->resume)
- return priv->ops->resume(priv);
+ if (priv->ops && priv->ops->resume) {
+ ret = priv->ops->resume(priv);
+ if (ret)
+ return ret;
+ }
- return 0;
+ return tsens_resume_common(priv);
}
static SIMPLE_DEV_PM_OPS(tsens_pm_ops, tsens_suspend, tsens_resume);
@@ -1172,7 +1180,7 @@ static const struct thermal_zone_device_ops tsens_of_ops = {
};
static int tsens_register_irq(struct tsens_priv *priv, char *irqname,
- irq_handler_t thread_fn)
+ irq_handler_t thread_fn, int *irq_num)
{
struct platform_device *pdev;
int ret, irq;
@@ -1205,7 +1213,7 @@ static int tsens_register_irq(struct tsens_priv *priv, char *irqname,
dev_err(&pdev->dev, "%s: failed to get irq\n",
__func__);
else
- enable_irq_wake(irq);
+ *irq_num = irq;
}
put_device(&pdev->dev);
@@ -1232,11 +1240,38 @@ static int tsens_reinit(struct tsens_priv *priv)
return 0;
}
+int tsens_suspend_common(struct tsens_priv *priv)
+{
+ if (!device_may_wakeup(priv->dev))
+ return 0;
+
+ if (priv->feat->combo_int)
+ enable_irq_wake(priv->combined_irq);
+ else {
+ enable_irq_wake(priv->uplow_irq);
+ if (priv->feat->crit_int)
+ enable_irq_wake(priv->crit_irq);
+ }
+
+ return 0;
+}
+
int tsens_resume_common(struct tsens_priv *priv)
{
if (pm_suspend_target_state == PM_SUSPEND_MEM)
tsens_reinit(priv);
+ if (!device_may_wakeup(priv->dev))
+ return 0;
+
+ if (priv->feat->combo_int)
+ disable_irq_wake(priv->combined_irq);
+ else {
+ disable_irq_wake(priv->uplow_irq);
+ if (priv->feat->crit_int)
+ disable_irq_wake(priv->crit_irq);
+ }
+
return 0;
}
@@ -1276,15 +1311,18 @@ static int tsens_register(struct tsens_priv *priv)
if (priv->feat->combo_int) {
ret = tsens_register_irq(priv, "combined",
- tsens_combined_irq_thread);
+ tsens_combined_irq_thread, &priv->combined_irq);
} else {
- ret = tsens_register_irq(priv, "uplow", tsens_irq_thread);
+ ret = tsens_register_irq(priv, "uplow", tsens_irq_thread,
+ &priv->uplow_irq);
if (ret < 0)
return ret;
- if (priv->feat->crit_int)
+ if (priv->feat->crit_int) {
ret = tsens_register_irq(priv, "critical",
- tsens_critical_irq_thread);
+ tsens_critical_irq_thread,
+ &priv->crit_irq);
+ }
}
return ret;
@@ -1343,6 +1381,8 @@ static int tsens_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, priv);
+ device_init_wakeup(dev, true);
+
if (!priv->ops || !priv->ops->init || !priv->ops->get_temp)
return -EINVAL;
diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h
index 2a7afa4c899b..5e2da4e0d51b 100644
--- a/drivers/thermal/qcom/tsens.h
+++ b/drivers/thermal/qcom/tsens.h
@@ -567,6 +567,9 @@ struct tsens_context {
* @ops: pointer to list of callbacks supported by this device
* @debug_root: pointer to debugfs dentry for all tsens
* @debug: pointer to debugfs dentry for tsens controller
+ * @uplow_irq: IRQ number for uplow (upper/lower) threshold interrupts
+ * @crit_irq: IRQ number for critical threshold interrupts
+ * @combined_irq: IRQ number for combined threshold interrupts
* @sensor: list of sensors attached to this device
*/
struct tsens_priv {
@@ -588,6 +591,10 @@ struct tsens_priv {
struct dentry *debug_root;
struct dentry *debug;
+ int uplow_irq;
+ int crit_irq;
+ int combined_irq;
+
struct tsens_sensor sensor[] __counted_by(num_sensors);
};
@@ -639,8 +646,17 @@ int get_temp_tsens_valid(const struct tsens_sensor *s, int *temp);
int get_temp_common(const struct tsens_sensor *s, int *temp);
#ifdef CONFIG_SUSPEND
int tsens_resume_common(struct tsens_priv *priv);
+int tsens_suspend_common(struct tsens_priv *priv);
#else
-#define tsens_resume_common NULL
+static inline int tsens_resume_common(struct tsens_priv *priv)
+{
+ return 0;
+}
+
+static inline int tsens_suspend_common(struct tsens_priv *priv)
+{
+ return 0;
+}
#endif
/* TSENS target */
--
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] thermal: qcom: tsens: Disable wakeup interrupt setup on automotive targets
2026-06-01 6:37 [PATCH v2 0/2] thermal: qcom: tsens: refine wake IRQ handling for suspend Priyansh Jain
2026-06-01 6:37 ` [PATCH v2 1/2] thermal: qcom: tsens: switch wake IRQ handling to PM callbacks Priyansh Jain
@ 2026-06-01 6:37 ` Priyansh Jain
2026-06-03 12:25 ` Konrad Dybcio
2026-06-02 21:12 ` [PATCH v2 0/2] thermal: qcom: tsens: refine wake IRQ handling for suspend Daniel Lezcano
2 siblings, 1 reply; 7+ messages in thread
From: Priyansh Jain @ 2026-06-01 6:37 UTC (permalink / raw)
To: Amit Kucheria, Thara Gopinath, Rafael J. Wysocki, Daniel Lezcano,
Zhang Rui, Lukasz Luba
Cc: linux-arm-msm, linux-pm, linux-kernel, Priyansh Jain
Add a no_irq_wake flag to struct tsens_plat_data to allow platforms
to control whether TSENS interrupts should be configured as wakeup
sources.
Create a new data_automotive structure and add compatible strings for
automotive TSENS variants (SA8775P, SA8255P) with wakeup interrupts
disabled.
Automotive platforms can enter a low-power parking suspend state where the
application processors and thermal mitigation paths are not active. In this
state, waking the system due to TSENS threshold interrupts does not enable
useful thermal action, but it does repeatedly break suspend residency and
increase battery drain.
Allow these automotive variants to keep TSENS monitoring enabled during
normal runtime while opting out of TSENS wakeup interrupts during suspend,
so the system can remain in low power until ignition/resume.
Signed-off-by: Priyansh Jain <priyansh.jain@oss.qualcomm.com>
---
drivers/thermal/qcom/tsens-v2.c | 8 ++++++++
drivers/thermal/qcom/tsens.c | 8 +++++++-
drivers/thermal/qcom/tsens.h | 5 +++++
3 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c
index e06f8e5802e8..2ee117aa91ba 100644
--- a/drivers/thermal/qcom/tsens-v2.c
+++ b/drivers/thermal/qcom/tsens-v2.c
@@ -306,3 +306,11 @@ struct tsens_plat_data data_8996 = {
.feat = &tsens_v2_feat,
.fields = tsens_v2_regfields,
};
+
+/* Do not enable wakeup capable interrupts for automotive platforms */
+struct tsens_plat_data data_automotive_v2 = {
+ .ops = &ops_generic_v2,
+ .feat = &tsens_v2_feat,
+ .fields = tsens_v2_regfields,
+ .no_irq_wake = true,
+};
diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
index 5210985b3767..6237e000640b 100644
--- a/drivers/thermal/qcom/tsens.c
+++ b/drivers/thermal/qcom/tsens.c
@@ -1169,6 +1169,12 @@ static const struct of_device_id tsens_table[] = {
}, {
.compatible = "qcom,tsens-v2",
.data = &data_tsens_v2,
+ }, {
+ .compatible = "qcom,sa8775p-tsens",
+ .data = &data_automotive_v2,
+ }, {
+ .compatible = "qcom,sa8255p-tsens",
+ .data = &data_automotive_v2,
},
{}
};
@@ -1381,7 +1387,7 @@ static int tsens_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, priv);
- device_init_wakeup(dev, true);
+ device_init_wakeup(dev, !data->no_irq_wake);
if (!priv->ops || !priv->ops->init || !priv->ops->get_temp)
return -EINVAL;
diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h
index 5e2da4e0d51b..d20d514bf8ce 100644
--- a/drivers/thermal/qcom/tsens.h
+++ b/drivers/thermal/qcom/tsens.h
@@ -531,6 +531,7 @@ struct tsens_features {
* @hw_ids: Subset of sensors ids supported by platform, if not the first n
* @feat: features of the IP
* @fields: bitfield locations
+ * @no_irq_wake: if set, TSENS interrupts will not be configured as wakeup sources
*/
struct tsens_plat_data {
const u32 num_sensors;
@@ -538,6 +539,7 @@ struct tsens_plat_data {
unsigned int *hw_ids;
struct tsens_features *feat;
const struct reg_field *fields;
+ bool no_irq_wake;
};
/**
@@ -675,4 +677,7 @@ extern const struct tsens_plat_data data_ipq5018;
extern struct tsens_plat_data data_8996, data_ipq8074, data_tsens_v2;
extern const struct tsens_plat_data data_ipq5332, data_ipq5424;
+/* TSENS automotive targets */
+extern struct tsens_plat_data data_automotive_v2;
+
#endif /* __QCOM_TSENS_H__ */
--
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 0/2] thermal: qcom: tsens: refine wake IRQ handling for suspend
2026-06-01 6:37 [PATCH v2 0/2] thermal: qcom: tsens: refine wake IRQ handling for suspend Priyansh Jain
2026-06-01 6:37 ` [PATCH v2 1/2] thermal: qcom: tsens: switch wake IRQ handling to PM callbacks Priyansh Jain
2026-06-01 6:37 ` [PATCH v2 2/2] thermal: qcom: tsens: Disable wakeup interrupt setup on automotive targets Priyansh Jain
@ 2026-06-02 21:12 ` Daniel Lezcano
2 siblings, 0 replies; 7+ messages in thread
From: Daniel Lezcano @ 2026-06-02 21:12 UTC (permalink / raw)
To: Priyansh Jain, Amit Kucheria, Thara Gopinath, Rafael J. Wysocki,
Daniel Lezcano, Zhang Rui, Lukasz Luba
Cc: linux-arm-msm, linux-pm, linux-kernel
On 6/1/26 08:37, Priyansh Jain wrote:
> This series refines how TSENS threshold IRQs are used as wake sources
> across suspend/resume.
>
> Patch 1 moves IRQ wake control from registration time into PM callbacks,
> so wakeup configuration follows the actual suspend state instead of being
> left enabled during normal runtime.
>
> Patch 2 adds a platform-data opt-out for wake IRQ setup and uses it for
> automotive TSENS compatibles (SA8775P/SA8255P), where parking suspend
> should not be exited repeatedly due to TSENS threshold wake events.
>
> Series highlights:
> - store and manage TSENS IRQ wake state in suspend/resume paths
> - keep existing runtime monitoring behavior unchanged
> - disable TSENS wake IRQ setup for selected automotive targets
>
> Signed-off-by: Priyansh Jain <priyansh.jain@oss.qualcomm.com>
> ---
Applied, thanks
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] thermal: qcom: tsens: Disable wakeup interrupt setup on automotive targets
2026-06-01 6:37 ` [PATCH v2 2/2] thermal: qcom: tsens: Disable wakeup interrupt setup on automotive targets Priyansh Jain
@ 2026-06-03 12:25 ` Konrad Dybcio
2026-06-03 12:27 ` Daniel Lezcano
0 siblings, 1 reply; 7+ messages in thread
From: Konrad Dybcio @ 2026-06-03 12:25 UTC (permalink / raw)
To: Priyansh Jain, Amit Kucheria, Thara Gopinath, Rafael J. Wysocki,
Daniel Lezcano, Zhang Rui, Lukasz Luba
Cc: linux-arm-msm, linux-pm, linux-kernel
On 01-Jun-26 08:37, Priyansh Jain wrote:
> Add a no_irq_wake flag to struct tsens_plat_data to allow platforms
> to control whether TSENS interrupts should be configured as wakeup
> sources.
>
> Create a new data_automotive structure and add compatible strings for
> automotive TSENS variants (SA8775P, SA8255P) with wakeup interrupts
> disabled.
>
> Automotive platforms can enter a low-power parking suspend state where the
> application processors and thermal mitigation paths are not active. In this
> state, waking the system due to TSENS threshold interrupts does not enable
> useful thermal action, but it does repeatedly break suspend residency and
> increase battery drain.
>
> Allow these automotive variants to keep TSENS monitoring enabled during
> normal runtime while opting out of TSENS wakeup interrupts during suspend,
> so the system can remain in low power until ignition/resume.
Can you not just disable the wakeup source via sysfs for
your needs?
Konrad
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] thermal: qcom: tsens: Disable wakeup interrupt setup on automotive targets
2026-06-03 12:25 ` Konrad Dybcio
@ 2026-06-03 12:27 ` Daniel Lezcano
2026-06-16 11:46 ` Konrad Dybcio
0 siblings, 1 reply; 7+ messages in thread
From: Daniel Lezcano @ 2026-06-03 12:27 UTC (permalink / raw)
To: Konrad Dybcio, Priyansh Jain, Amit Kucheria, Thara Gopinath,
Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba
Cc: linux-arm-msm, linux-pm, linux-kernel
On 6/3/26 14:25, Konrad Dybcio wrote:
>
>
> On 01-Jun-26 08:37, Priyansh Jain wrote:
>> Add a no_irq_wake flag to struct tsens_plat_data to allow platforms
>> to control whether TSENS interrupts should be configured as wakeup
>> sources.
>>
>> Create a new data_automotive structure and add compatible strings for
>> automotive TSENS variants (SA8775P, SA8255P) with wakeup interrupts
>> disabled.
>>
>> Automotive platforms can enter a low-power parking suspend state where the
>> application processors and thermal mitigation paths are not active. In this
>> state, waking the system due to TSENS threshold interrupts does not enable
>> useful thermal action, but it does repeatedly break suspend residency and
>> increase battery drain.
>>
>> Allow these automotive variants to keep TSENS monitoring enabled during
>> normal runtime while opting out of TSENS wakeup interrupts during suspend,
>> so the system can remain in low power until ignition/resume.
>
> Can you not just disable the wakeup source via sysfs for
> your needs?
AFAIU, the system will crash for this version, so it has to be disabled
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] thermal: qcom: tsens: Disable wakeup interrupt setup on automotive targets
2026-06-03 12:27 ` Daniel Lezcano
@ 2026-06-16 11:46 ` Konrad Dybcio
0 siblings, 0 replies; 7+ messages in thread
From: Konrad Dybcio @ 2026-06-16 11:46 UTC (permalink / raw)
To: Daniel Lezcano, Priyansh Jain, Amit Kucheria, Thara Gopinath,
Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba
Cc: linux-arm-msm, linux-pm, linux-kernel
On 6/3/26 2:27 PM, Daniel Lezcano wrote:
> On 6/3/26 14:25, Konrad Dybcio wrote:
>>
>>
>> On 01-Jun-26 08:37, Priyansh Jain wrote:
>>> Add a no_irq_wake flag to struct tsens_plat_data to allow platforms
>>> to control whether TSENS interrupts should be configured as wakeup
>>> sources.
>>>
>>> Create a new data_automotive structure and add compatible strings for
>>> automotive TSENS variants (SA8775P, SA8255P) with wakeup interrupts
>>> disabled.
>>>
>>> Automotive platforms can enter a low-power parking suspend state where the
>>> application processors and thermal mitigation paths are not active. In this
>>> state, waking the system due to TSENS threshold interrupts does not enable
>>> useful thermal action, but it does repeatedly break suspend residency and
>>> increase battery drain.
>>>
>>> Allow these automotive variants to keep TSENS monitoring enabled during
>>> normal runtime while opting out of TSENS wakeup interrupts during suspend,
>>> so the system can remain in low power until ignition/resume.
>>
>> Can you not just disable the wakeup source via sysfs for
>> your needs?
>
> AFAIU, the system will crash for this version, so it has to be disabled
I can't see a mention of this in the commit message, but if it's the case,
it should most definitely be there in writing..
Konrad
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-06-16 11:46 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-01 6:37 [PATCH v2 0/2] thermal: qcom: tsens: refine wake IRQ handling for suspend Priyansh Jain
2026-06-01 6:37 ` [PATCH v2 1/2] thermal: qcom: tsens: switch wake IRQ handling to PM callbacks Priyansh Jain
2026-06-01 6:37 ` [PATCH v2 2/2] thermal: qcom: tsens: Disable wakeup interrupt setup on automotive targets Priyansh Jain
2026-06-03 12:25 ` Konrad Dybcio
2026-06-03 12:27 ` Daniel Lezcano
2026-06-16 11:46 ` Konrad Dybcio
2026-06-02 21:12 ` [PATCH v2 0/2] thermal: qcom: tsens: refine wake IRQ handling for suspend Daniel Lezcano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®