NVIDIA: SAUCE: usb: host: tegra: Remove manual wake IRQ disposal

We found that calling irq_dispose_mapping() caused a kernel warning
when removing the driver. The IRQs are obtained using
platform_get_irq(), which returns a Linux virtual IRQ number directly
managed by the device core, not by the OF subsystem. Therefore, the
driver should not call irq_dispose_mapping() for these IRQs.

Bug 5421820

Change-Id: I44bb119def6d85b85fe06e1c0fc6771b63d35fd8
Signed-off-by: Wayne Chang <waynec@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/3rdparty/canonical/linux-noble/+/3479600
Reviewed-by: Henry Lin <henryl@nvidia.com>
Reviewed-by: Brad Griffis <bgriffis@nvidia.com>
Reviewed-by: WK Tsai <wtsai@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
Wayne Chang
2025-10-30 09:08:12 +00:00
committed by mobile promotions
parent 9340df62f6
commit fc8056e062

View File

@@ -2198,7 +2198,6 @@ static int tegra_xusb_setup_wakeup(struct platform_device *pdev, struct tegra_xu
data = irq_get_irq_data(tegra->wake_irqs[i]);
if (!data) {
dev_warn(tegra->dev, "get wake event %d irq data fail\n", i);
irq_dispose_mapping(tegra->wake_irqs[i]);
break;
}
@@ -2211,16 +2210,6 @@ static int tegra_xusb_setup_wakeup(struct platform_device *pdev, struct tegra_xu
return 0;
}
static void tegra_xusb_dispose_wake(struct tegra_xusb *tegra)
{
unsigned int i;
for (i = 0; i < tegra->num_wakes; i++)
irq_dispose_mapping(tegra->wake_irqs[i]);
tegra->num_wakes = 0;
}
static int tegra_xusb_probe(struct platform_device *pdev)
{
struct tegra_xusb *tegra;
@@ -2281,10 +2270,8 @@ static int tegra_xusb_probe(struct platform_device *pdev)
return err;
tegra->padctl = tegra_xusb_padctl_get(&pdev->dev);
if (IS_ERR(tegra->padctl)) {
err = PTR_ERR(tegra->padctl);
goto dispose_wake;
}
if (IS_ERR(tegra->padctl))
return PTR_ERR(tegra->padctl);
np = of_parse_phandle(pdev->dev.of_node, "nvidia,xusb-padctl", 0);
if (!np) {
@@ -2632,8 +2619,6 @@ put_powerdomains:
put_padctl:
of_node_put(np);
tegra_xusb_padctl_put(tegra->padctl);
dispose_wake:
tegra_xusb_dispose_wake(tegra);
return err;
}
@@ -2675,8 +2660,6 @@ static void tegra_xusb_remove(struct platform_device *pdev)
if (tegra->padctl_irq)
pm_runtime_disable(&pdev->dev);
tegra_xusb_dispose_wake(tegra);
pm_runtime_put(&pdev->dev);
tegra_xusb_disable(tegra);