]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
PCI: mediatek-gen3: Add a .shutdown() callback to control PERST# signal
authorJian Yang <jian.yang@mediatek.com>
Mon, 13 Apr 2026 07:13:56 +0000 (15:13 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 18 May 2026 17:35:14 +0000 (12:35 -0500)
Add a .shutdown() callback to control the timing of PERST# and power during
system shutdown to ensure that PERST# is asserted before power to the
connector is removed, as required by PCIe CEM r6.0, sec 2.2.

Signed-off-by: Jian Yang <jian.yang@mediatek.com>
Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://patch.msgid.link/20260413071401.1151-3-jian.yang@mediatek.com
drivers/pci/controller/pcie-mediatek-gen3.c

index 01badc4f93119f8d794edd55bf6c496a5237545e..8aec57626f5f46ed19175b6209708f3e97625066 100644 (file)
@@ -1286,6 +1286,14 @@ static void mtk_pcie_remove(struct platform_device *pdev)
        mtk_pcie_irq_teardown(pcie);
 }
 
+static void mtk_pcie_shutdown(struct platform_device *pdev)
+{
+       struct mtk_gen3_pcie *pcie = platform_get_drvdata(pdev);
+
+       mtk_pcie_devices_power_down(pcie);
+       mtk_pcie_power_down(pcie);
+}
+
 static void mtk_pcie_irq_save(struct mtk_gen3_pcie *pcie)
 {
        int i;
@@ -1424,6 +1432,7 @@ MODULE_DEVICE_TABLE(of, mtk_pcie_of_match);
 static struct platform_driver mtk_pcie_driver = {
        .probe = mtk_pcie_probe,
        .remove = mtk_pcie_remove,
+       .shutdown = mtk_pcie_shutdown,
        .driver = {
                .name = "mtk-pcie-gen3",
                .of_match_table = mtk_pcie_of_match,