drivers/usb/host/xhci-tegra.c | 2 ++ 1 file changed, 2 insertions(+)
From: bui duc phuc <phucduc.bui@gmail.com>
Return -EPROBE_DEFER from platform_get_irq_optional() so the driver is
re-probed when the interrupt resource becomes available instead of
continuing probe without an IRQ.
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
drivers/usb/host/xhci-tegra.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c
index e7e6d569f1db..cb946eb7a65d 100644
--- a/drivers/usb/host/xhci-tegra.c
+++ b/drivers/usb/host/xhci-tegra.c
@@ -1571,6 +1571,8 @@ static int tegra_xusb_setup_wakeup(struct platform_device *pdev, struct tegra_xu
struct irq_data *data;
tegra->wake_irqs[i] = platform_get_irq_optional(pdev, i + WAKE_IRQ_START_INDEX);
+ if (tegra->wake_irqs[i] == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
if (tegra->wake_irqs[i] < 0)
break;
--
2.43.0
On Thu, Aug 06, 2026 at 01:39:33PM +0700, phucduc.bui@gmail.com wrote: > From: bui duc phuc <phucduc.bui@gmail.com> > > Return -EPROBE_DEFER from platform_get_irq_optional() so the driver is > re-probed when the interrupt resource becomes available instead of > continuing probe without an IRQ. > > Signed-off-by: bui duc phuc <phucduc.bui@gmail.com> > --- > drivers/usb/host/xhci-tegra.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c > index e7e6d569f1db..cb946eb7a65d 100644 > --- a/drivers/usb/host/xhci-tegra.c > +++ b/drivers/usb/host/xhci-tegra.c > @@ -1571,6 +1571,8 @@ static int tegra_xusb_setup_wakeup(struct platform_device *pdev, struct tegra_xu > struct irq_data *data; > > tegra->wake_irqs[i] = platform_get_irq_optional(pdev, i + WAKE_IRQ_START_INDEX); > + if (tegra->wake_irqs[i] == -EPROBE_DEFER) > + return -EPROBE_DEFER; > if (tegra->wake_irqs[i] < 0) > break; > > -- > 2.43.0 > > As before, how was this found and tested? thanks, greg k-h
Hi Greg, Thank you for your feedback. > > As before, how was this found and tested? > I found this during code inspection while cleaning up probe functions in the Rockchip ASoC drivers. https://lore.kernel.org/all/20260806052136.21034-1-phucduc.bui@gmail.com/ platform_get_irq_optional() returns a positive IRQ number on success or a negative error code on failure, including -EPROBE_DEFER. The driver handled positive IRQ numbers but ignored -EPROBE_DEFER, continuing probe without an IRQ instead of deferring. I only compile-tested the change. I don't have the hardware to test this path at runtime. Best regards, Phuc
© 2016 - 2026 Red Hat, Inc.