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:
committed by
mobile promotions
parent
9340df62f6
commit
fc8056e062
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user