Revert "NVIDIA: SAUCE: xhci: tegra: Fix irq_dispose_mapping() warning"

This reverts commit ef4c7b0620.

Reason for revert: replaced with a proper fix

Bug 5421820

Change-Id: I447e08bc8aedb0a5819aaf4feae05ded4082375c
Signed-off-by: Wayne Chang <waynec@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/3rdparty/canonical/linux-noble/+/3469946
Reviewed-by: Brad Griffis <bgriffis@nvidia.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
Wayne Chang
2025-07-29 07:51:38 +00:00
committed by mobile promotions
parent 3c68f26fcb
commit 8bfd2f594b
+18 -21
View File
@@ -2166,18 +2166,18 @@ static int tegra_xhci_padctl_notify(struct notifier_block *nb,
return NOTIFY_OK;
}
static int tegra_xusb_setup_wakeup(struct platform_device *pdev, struct tegra_xusb *tegra)
static void tegra_xusb_setup_wakeup(struct platform_device *pdev, struct tegra_xusb *tegra)
{
int i;
if (device_property_read_bool(tegra->dev, "disable-wake"))
return 0;
return;
tegra->wake_irqs = devm_kcalloc(tegra->dev,
tegra->soc->num_wakes,
sizeof(*tegra->wake_irqs), GFP_KERNEL);
if (!tegra->wake_irqs)
return -ENOMEM;
return;
for (i = 0; i < tegra->soc->num_wakes; i++) {
char irq_name[] = "wakeX";
@@ -2186,16 +2186,19 @@ static int tegra_xusb_setup_wakeup(struct platform_device *pdev, struct tegra_xu
snprintf(irq_name, sizeof(irq_name), "wake%d", i);
tegra->wake_irqs[i] = platform_get_irq_byname(pdev, irq_name);
if (tegra->wake_irqs[i] < 0)
continue;
goto error;
data = irq_get_irq_data(tegra->wake_irqs[i]);
if (!data) {
irq_dispose_mapping(tegra->wake_irqs[i]);
tegra->wake_irqs[i] = -ENXIO;
continue;
}
if (!data)
goto error;
irq_set_irq_type(tegra->wake_irqs[i], irqd_get_trigger_type(data));
}
return 0;
return;
error:
for (i = 0; i < tegra->soc->num_wakes && tegra->wake_irqs[i] >= 0; i++)
irq_dispose_mapping(tegra->wake_irqs[i]);
devm_kfree(tegra->dev, tegra->wake_irqs);
tegra->wake_irqs = NULL;
}
static int tegra_xusb_probe(struct platform_device *pdev)
@@ -2257,11 +2260,8 @@ static int tegra_xusb_probe(struct platform_device *pdev)
if (IS_ERR(tegra->padctl))
return PTR_ERR(tegra->padctl);
if (tegra->soc->num_wakes && !tegra->soc->is_xhci_vf) {
err = tegra_xusb_setup_wakeup(pdev, tegra);
if (err)
goto put_padctl;
}
if (tegra->soc->num_wakes && !tegra->soc->is_xhci_vf)
tegra_xusb_setup_wakeup(pdev, tegra);
np = of_parse_phandle(pdev->dev.of_node, "nvidia,xusb-padctl", 0);
if (!np) {
@@ -2652,8 +2652,7 @@ static void tegra_xusb_remove(struct platform_device *pdev)
pm_runtime_disable(&pdev->dev);
for (i = 0; i < tegra->soc->num_wakes && tegra->wake_irqs; i++)
if (tegra->wake_irqs[i] >= 0)
irq_dispose_mapping(tegra->wake_irqs[i]);
irq_dispose_mapping(tegra->wake_irqs[i]);
pm_runtime_put(&pdev->dev);
@@ -3131,8 +3130,7 @@ out:
if (enable_irq_wake(tegra->padctl_irq))
dev_err(dev, "failed to enable padctl wakes\n");
for (i = 0; i < tegra->soc->num_wakes && tegra->wake_irqs; i++)
if (tegra->wake_irqs[i] >= 0)
enable_irq_wake(tegra->wake_irqs[i]);
enable_irq_wake(tegra->wake_irqs[i]);
}
}
@@ -3165,8 +3163,7 @@ static __maybe_unused int tegra_xusb_resume(struct device *dev)
if (disable_irq_wake(tegra->padctl_irq))
dev_err(dev, "failed to disable padctl wakes\n");
for (i = 0; i < tegra->soc->num_wakes && tegra->wake_irqs; i++)
if (tegra->wake_irqs[i] >= 0)
disable_irq_wake(tegra->wake_irqs[i]);
disable_irq_wake(tegra->wake_irqs[i]);
}
tegra->suspended = false;
mutex_unlock(&tegra->lock);