]> Gentwo Git Trees - linux/.git/commitdiff
PCI: qcom: Implement .assert_perst()
authorKrishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>
Sat, 1 Nov 2025 03:59:36 +0000 (09:29 +0530)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 18 Nov 2025 18:36:19 +0000 (12:36 -0600)
Add support for assert_perst() for switches like TC9563, which require
configuration before the PCIe link is established. Such devices use this
function op to assert PERST# before configuring the device and once the
configuration is done they de-assert PERST#.

Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Manivannan Sadhasivam <mani@kernel.org>
Link: https://patch.msgid.link/20251101-tc9563-v9-5-de3429f7787a@oss.qualcomm.com
drivers/pci/controller/dwc/pcie-qcom.c

index 805edbbfe7eba496bc99ca82051dee43d240f359..cdc605b44e19e17319c39933f22d0b7710c5e9ef 100644 (file)
@@ -696,6 +696,18 @@ static int qcom_pcie_post_init_1_0_0(struct qcom_pcie *pcie)
        return 0;
 }
 
+static int qcom_pcie_assert_perst(struct dw_pcie *pci, bool assert)
+{
+       struct qcom_pcie *pcie = to_qcom_pcie(pci);
+
+       if (assert)
+               qcom_ep_reset_assert(pcie);
+       else
+               qcom_ep_reset_deassert(pcie);
+
+       return 0;
+}
+
 static void qcom_pcie_2_3_2_ltssm_enable(struct qcom_pcie *pcie)
 {
        u32 val;
@@ -1516,6 +1528,7 @@ static const struct qcom_pcie_cfg cfg_fw_managed = {
 static const struct dw_pcie_ops dw_pcie_ops = {
        .link_up = qcom_pcie_link_up,
        .start_link = qcom_pcie_start_link,
+       .assert_perst = qcom_pcie_assert_perst,
 };
 
 static int qcom_pcie_icc_init(struct qcom_pcie *pcie)