[PATCH 2/4] thunderbolt: add support optional dedicated wakeup irq
Chunfeng Yun
chunfeng.yun at mediatek.com
Fri Oct 30 01:25:37 PDT 2026
There is a dedicated wakeup irq on nvidia n1/n2 SoCs.
Signed-off-by: Chunfeng Yun <chunfeng.yun at mediatek.com>
---
drivers/thunderbolt/plat.c | 16 ++++++++++++++++
include/linux/thunderbolt.h | 1 +
2 files changed, 17 insertions(+)
diff --git a/drivers/thunderbolt/plat.c b/drivers/thunderbolt/plat.c
index 85a00cd391d4..8d83b484d942 100644
--- a/drivers/thunderbolt/plat.c
+++ b/drivers/thunderbolt/plat.c
@@ -11,6 +11,7 @@
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
+#include <linux/pm_wakeirq.h>
#include <linux/slab.h>
#include "nhi.h"
@@ -46,6 +47,15 @@ static int nhi_plat_init_irq(struct tb_nhi *nhi)
if (ret)
return dev_err_probe(nhi->dev, ret, "request irq failed\n");
+ if (nhi->wake_irq) {
+ ret = dev_pm_set_dedicated_wake_irq(nhi->dev, nhi->wake_irq);
+ if (ret) {
+ dev_err_probe(nhi->dev, ret, "set wake irq %d failed\n", nhi->wake_irq);
+ return ret;
+ }
+ dev_info(nhi->dev, "wake irq %d\n", nhi->wake_irq);
+ }
+
return 0;
}
@@ -53,6 +63,7 @@ static void nhi_plat_exit(struct tb_nhi *nhi)
{
devm_free_irq(nhi->dev, nhi->irq, nhi);
flush_work(&nhi->interrupt_work);
+ dev_pm_clear_wake_irq(nhi->dev);
pm_runtime_put_noidle(nhi->dev);
pm_runtime_disable(nhi->dev);
@@ -85,6 +96,11 @@ static int nhi_plat_probe(struct platform_device *pdev)
if (nhi->irq < 0)
return dev_err_probe(dev, nhi->irq, "get irq failed\n");
+ /* ignore error */
+ nhi->wake_irq = platform_get_irq_optional(pdev, 1);
+ if (nhi->wake_irq < 0)
+ nhi->wake_irq = 0;
+
return nhi_probe(nhi);
}
diff --git a/include/linux/thunderbolt.h b/include/linux/thunderbolt.h
index 212c8fea6571..06b90d452ee2 100644
--- a/include/linux/thunderbolt.h
+++ b/include/linux/thunderbolt.h
@@ -533,6 +533,7 @@ struct tb_nhi {
bool going_away;
bool iommu_dma_protection;
int irq;
+ int wake_irq;
struct work_struct interrupt_work;
u32 hop_count;
unsigned long quirks;
--
2.43.0
More information about the Linux-mediatek
mailing list