]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Merge branch 'pci/controller/dwc-qcom'
authorBjorn Helgaas <bhelgaas@google.com>
Fri, 6 Feb 2026 23:09:46 +0000 (17:09 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 6 Feb 2026 23:09:46 +0000 (17:09 -0600)
- Parse PERST# from all PCIe bridge nodes for future platforms that will
  have PERST# in Switch Downstream Ports as well as in Root Ports
  (Manivannan Sadhasivam)

- Rename qcom PERST# assert/deassert helpers, e.g., qcom_ep_reset_assert(),
  to avoid confusion with Endpoint interfaces (Manivannan Sadhasivam)

* pci/controller/dwc-qcom:
  PCI: qcom: Rename PERST# assert/deassert helpers for uniformity
  PCI: qcom: Parse PERST# from all PCIe bridge nodes

# Conflicts:
# drivers/pci/controller/dwc/pcie-qcom.c

1  2 
drivers/pci/controller/dwc/pcie-qcom.c

index 59769d13c2b70bb047bdd1d9bef9274db9375ca1,7d12fb081e0098814fed36ce233d60913c899245..5462361985494c6d41dfd0175887ed54bf6d7027
@@@ -1303,13 -1321,10 +1311,13 @@@ static int qcom_pcie_host_init(struct d
        if (pcie->cfg->ops->post_init) {
                ret = pcie->cfg->ops->post_init(pcie);
                if (ret)
 -                      goto err_disable_phy;
 +                      goto err_pwrctrl_power_off;
        }
  
-       qcom_ep_reset_deassert(pcie);
 +      dw_pcie_remove_capability(pcie->pci, PCI_CAP_ID_MSIX);
 +      dw_pcie_remove_ext_capability(pcie->pci, PCI_EXT_CAP_ID_DPC);
 +
+       qcom_pcie_perst_deassert(pcie);
  
        if (pcie->cfg->ops->config_sid) {
                ret = pcie->cfg->ops->config_sid(pcie);
        return 0;
  
  err_assert_reset:
-       qcom_ep_reset_assert(pcie);
+       qcom_pcie_perst_assert(pcie);
 +err_pwrctrl_power_off:
 +      pci_pwrctrl_power_off_devices(pci->dev);
 +err_pwrctrl_destroy:
 +      if (ret != -EPROBE_DEFER)
 +              pci_pwrctrl_destroy_devices(pci->dev);
  err_disable_phy:
        qcom_pcie_phy_power_off(pcie);
  err_deinit:
@@@ -1339,13 -1349,7 +1347,13 @@@ static void qcom_pcie_host_deinit(struc
        struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
        struct qcom_pcie *pcie = to_qcom_pcie(pci);
  
-       qcom_ep_reset_assert(pcie);
+       qcom_pcie_perst_assert(pcie);
 +
 +      /*
 +       * No need to destroy pwrctrl devices as this function only gets called
 +       * during system suspend as of now.
 +       */
 +      pci_pwrctrl_power_off_devices(pci->dev);
        qcom_pcie_phy_power_off(pcie);
        pcie->cfg->ops->deinit(pcie);
  }
@@@ -1944,8 -2059,12 +2010,10 @@@ static int qcom_pcie_probe(struct platf
  
        return 0;
  
 -err_host_deinit:
 -      dw_pcie_host_deinit(pp);
  err_phy_exit:
-       list_for_each_entry_safe(port, tmp, &pcie->ports, list) {
+       list_for_each_entry_safe(port, tmp_port, &pcie->ports, list) {
+               list_for_each_entry_safe(perst, tmp_perst, &port->perst, list)
+                       list_del(&perst->list);
                phy_exit(port->phy);
                list_del(&port->list);
        }