| From 96455bc9cd6976ced474147d3faba5b806632b00 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 17 Oct 2022 13:47:04 +0200 |
| Subject: PCI: qcom: Fix host-init error handling |
| |
| From: Johan Hovold <johan+linaro@kernel.org> |
| |
| [ Upstream commit 997e010de9134474dbfde52be03efd7d1bce902d ] |
| |
| Implement the new host_deinit() callback so that the PHY is powered off |
| and regulators and clocks are disabled also on late host-init errors. |
| |
| Link: https://lore.kernel.org/r/20221017114705.8277-2-johan+linaro@kernel.org |
| Fixes: 82a823833f4e ("PCI: qcom: Add Qualcomm PCIe controller driver") |
| Signed-off-by: Johan Hovold <johan+linaro@kernel.org> |
| Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org> |
| Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> |
| Reviewed-by: Manivannan Sadhasivam <mani@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/pci/controller/dwc/pcie-qcom.c | 13 ++++++++++++- |
| 1 file changed, 12 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c |
| index f711acacaeaf8..f8e512540fb85 100644 |
| --- a/drivers/pci/controller/dwc/pcie-qcom.c |
| +++ b/drivers/pci/controller/dwc/pcie-qcom.c |
| @@ -1527,8 +1527,19 @@ static int qcom_pcie_host_init(struct dw_pcie_rp *pp) |
| return ret; |
| } |
| |
| +static void qcom_pcie_host_deinit(struct dw_pcie_rp *pp) |
| +{ |
| + struct dw_pcie *pci = to_dw_pcie_from_pp(pp); |
| + struct qcom_pcie *pcie = to_qcom_pcie(pci); |
| + |
| + qcom_ep_reset_assert(pcie); |
| + phy_power_off(pcie->phy); |
| + pcie->cfg->ops->deinit(pcie); |
| +} |
| + |
| static const struct dw_pcie_host_ops qcom_pcie_dw_ops = { |
| - .host_init = qcom_pcie_host_init, |
| + .host_init = qcom_pcie_host_init, |
| + .host_deinit = qcom_pcie_host_deinit, |
| }; |
| |
| /* Qcom IP rev.: 2.1.0 Synopsys IP rev.: 4.01a */ |
| -- |
| 2.39.2 |
| |