PCI: meson: Add missing remove callback

meson_pcie_probe() powers on the PHY and registers the DesignWare host
bridge with dw_pcie_host_init(), but the driver has no remove callback.
On driver unbind or module unload, the driver core therefore proceeds to
devres cleanup without first unregistering the host bridge or powering off
the PHY.

Add a remove callback that deinitializes the DesignWare host bridge and
powers off the PHY while device-managed resources are still valid.

Fixes: 9c0ef6d34f ("PCI: amlogic: Add the Amlogic Meson PCIe controller driver")
Signed-off-by: Shuvam Pandey <shuvampandey1@gmail.com>
Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
Link: https://patch.msgid.link/1a0c86ab264cdc1c79c917e984b90991af51d827.1779123847.git.shuvampandey1@gmail.com
This commit is contained in:
Shuvam Pandey 2026-05-18 22:44:18 +05:45 committed by Manivannan Sadhasivam
parent b12341b98d
commit 4b0dc84b29

View File

@ -453,6 +453,14 @@ static int meson_pcie_probe(struct platform_device *pdev)
return ret;
}
static void meson_pcie_remove(struct platform_device *pdev)
{
struct meson_pcie *mp = platform_get_drvdata(pdev);
dw_pcie_host_deinit(&mp->pci.pp);
meson_pcie_power_off(mp);
}
static const struct of_device_id meson_pcie_of_match[] = {
{
.compatible = "amlogic,axg-pcie",
@ -466,6 +474,7 @@ MODULE_DEVICE_TABLE(of, meson_pcie_of_match);
static struct platform_driver meson_pcie_driver = {
.probe = meson_pcie_probe,
.remove = meson_pcie_remove,
.driver = {
.name = "meson-pcie",
.of_match_table = meson_pcie_of_match,