if (IS_ERR(rockchip->rst_gpio))
                return PTR_ERR(rockchip->rst_gpio);
 
+       rockchip->rst = devm_reset_control_array_get_exclusive(&pdev->dev);
+       if (IS_ERR(rockchip->rst))
+               return dev_err_probe(&pdev->dev, PTR_ERR(rockchip->rst),
+                                    "failed to get reset lines\n");
+
        return 0;
 }
 
        phy_power_off(rockchip->phy);
 }
 
-static int rockchip_pcie_reset_control_release(struct rockchip_pcie *rockchip)
-{
-       struct device *dev = rockchip->pci.dev;
-
-       rockchip->rst = devm_reset_control_array_get_exclusive(dev);
-       if (IS_ERR(rockchip->rst))
-               return dev_err_probe(dev, PTR_ERR(rockchip->rst),
-                                    "failed to get reset lines\n");
-
-       return reset_control_deassert(rockchip->rst);
-}
-
 static const struct dw_pcie_ops dw_pcie_ops = {
        .link_up = rockchip_pcie_link_up,
        .start_link = rockchip_pcie_start_link,
        if (ret)
                return ret;
 
+       ret = reset_control_assert(rockchip->rst);
+       if (ret)
+               return ret;
+
        /* DON'T MOVE ME: must be enable before PHY init */
        rockchip->vpcie3v3 = devm_regulator_get_optional(dev, "vpcie3v3");
        if (IS_ERR(rockchip->vpcie3v3)) {
        if (ret)
                goto disable_regulator;
 
-       ret = rockchip_pcie_reset_control_release(rockchip);
+       ret = reset_control_deassert(rockchip->rst);
        if (ret)
                goto deinit_phy;