From 4966dc734985117cbabb522445236e57500a6685 Mon Sep 17 00:00:00 2001 From: Shawn Lin Date: Fri, 18 Feb 2022 18:01:25 +0800 Subject: [PATCH] PCI: rockchip: dw: Add struct reset_control to struct rk_pcie We will use it later for L2 reset scheme. Signed-off-by: Shawn Lin Change-Id: I5ffaed989507ecc6f10e3f52c1b69245b0f2bae3 --- drivers/pci/controller/dwc/pcie-dw-rockchip.c | 25 ++++++------------- 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-dw-rockchip.c b/drivers/pci/controller/dwc/pcie-dw-rockchip.c index 49313d4ba54f..360a3b278672 100644 --- a/drivers/pci/controller/dwc/pcie-dw-rockchip.c +++ b/drivers/pci/controller/dwc/pcie-dw-rockchip.c @@ -140,6 +140,7 @@ struct rk_pcie { void __iomem *apb_base; struct phy *phy; struct clk_bulk_data *clks; + struct reset_control *rsts; unsigned int clk_cnt; struct gpio_desc *rst_gpio; struct gpio_desc *prsnt_gpio; @@ -1252,21 +1253,6 @@ static int rk_pcie_phy_init(struct rk_pcie *rk_pcie) return 0; } -static int rk_pcie_reset_control_release(struct rk_pcie *rk_pcie) -{ - struct device *dev = rk_pcie->pci->dev; - struct reset_control *rsts; - - rsts = of_reset_control_array_get_exclusive(dev->of_node); - if (IS_ERR(rsts)) - return dev_err_probe(dev, PTR_ERR(rsts), "failed to get reset lines\n"); - - reset_control_deassert(rsts); - reset_control_put(rsts); - - return 0; -} - static int rk_pcie_reset_grant_ctrl(struct rk_pcie *rk_pcie, bool enable) { @@ -1779,12 +1765,15 @@ retry_regulator: goto disable_vpcie3v3; } - ret = rk_pcie_reset_control_release(rk_pcie); - if (ret) { - dev_err(dev, "reset control init failed\n"); + rk_pcie->rsts = devm_reset_control_array_get_exclusive(dev); + if (IS_ERR(rk_pcie->rsts)) { + ret = PTR_ERR(rk_pcie->rsts); + dev_err(dev, "failed to get reset lines\n"); goto disable_phy; } + reset_control_deassert(rk_pcie->rsts); + ret = rk_pcie_request_sys_irq(rk_pcie, pdev); if (ret) { dev_err(dev, "pcie irq init failed\n");