提交 68e7c15c 编写于 作者: S Srinivas Kandagatla 提交者: Lorenzo Pieralisi

PCI: qcom: Use regulator bulk api for apq8064 supplies

This patch converts existing regulators to use regulator bulk apis,
to make it consistent with msm8996 changes also cut down some redundant code.
Signed-off-by: NSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: NStanimir Varbanov <svarbanov@mm-sol.com>
上级 f625b1ad
...@@ -79,6 +79,7 @@ ...@@ -79,6 +79,7 @@
#define PCIE20_v3_PARF_SLV_ADDR_SPACE_SIZE 0x358 #define PCIE20_v3_PARF_SLV_ADDR_SPACE_SIZE 0x358
#define SLV_ADDR_SPACE_SZ 0x10000000 #define SLV_ADDR_SPACE_SZ 0x10000000
#define QCOM_PCIE_2_1_0_MAX_SUPPLY 3
struct qcom_pcie_resources_2_1_0 { struct qcom_pcie_resources_2_1_0 {
struct clk *iface_clk; struct clk *iface_clk;
struct clk *core_clk; struct clk *core_clk;
...@@ -88,9 +89,7 @@ struct qcom_pcie_resources_2_1_0 { ...@@ -88,9 +89,7 @@ struct qcom_pcie_resources_2_1_0 {
struct reset_control *ahb_reset; struct reset_control *ahb_reset;
struct reset_control *por_reset; struct reset_control *por_reset;
struct reset_control *phy_reset; struct reset_control *phy_reset;
struct regulator *vdda; struct regulator_bulk_data supplies[QCOM_PCIE_2_1_0_MAX_SUPPLY];
struct regulator *vdda_phy;
struct regulator *vdda_refclk;
}; };
struct qcom_pcie_resources_1_0_0 { struct qcom_pcie_resources_1_0_0 {
...@@ -218,18 +217,15 @@ static int qcom_pcie_get_resources_2_1_0(struct qcom_pcie *pcie) ...@@ -218,18 +217,15 @@ static int qcom_pcie_get_resources_2_1_0(struct qcom_pcie *pcie)
struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0;
struct dw_pcie *pci = pcie->pci; struct dw_pcie *pci = pcie->pci;
struct device *dev = pci->dev; struct device *dev = pci->dev;
int ret;
res->vdda = devm_regulator_get(dev, "vdda"); res->supplies[0].supply = "vdda";
if (IS_ERR(res->vdda)) res->supplies[1].supply = "vdda_phy";
return PTR_ERR(res->vdda); res->supplies[2].supply = "vdda_refclk";
ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(res->supplies),
res->vdda_phy = devm_regulator_get(dev, "vdda_phy"); res->supplies);
if (IS_ERR(res->vdda_phy)) if (ret)
return PTR_ERR(res->vdda_phy); return ret;
res->vdda_refclk = devm_regulator_get(dev, "vdda_refclk");
if (IS_ERR(res->vdda_refclk))
return PTR_ERR(res->vdda_refclk);
res->iface_clk = devm_clk_get(dev, "iface"); res->iface_clk = devm_clk_get(dev, "iface");
if (IS_ERR(res->iface_clk)) if (IS_ERR(res->iface_clk))
...@@ -275,9 +271,7 @@ static void qcom_pcie_deinit_2_1_0(struct qcom_pcie *pcie) ...@@ -275,9 +271,7 @@ static void qcom_pcie_deinit_2_1_0(struct qcom_pcie *pcie)
clk_disable_unprepare(res->iface_clk); clk_disable_unprepare(res->iface_clk);
clk_disable_unprepare(res->core_clk); clk_disable_unprepare(res->core_clk);
clk_disable_unprepare(res->phy_clk); clk_disable_unprepare(res->phy_clk);
regulator_disable(res->vdda); regulator_bulk_disable(ARRAY_SIZE(res->supplies), res->supplies);
regulator_disable(res->vdda_phy);
regulator_disable(res->vdda_refclk);
} }
static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie) static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie)
...@@ -288,24 +282,12 @@ static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie) ...@@ -288,24 +282,12 @@ static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie)
u32 val; u32 val;
int ret; int ret;
ret = regulator_enable(res->vdda); ret = regulator_bulk_enable(ARRAY_SIZE(res->supplies), res->supplies);
if (ret) { if (ret < 0) {
dev_err(dev, "cannot enable vdda regulator\n"); dev_err(dev, "cannot enable regulators\n");
return ret; return ret;
} }
ret = regulator_enable(res->vdda_refclk);
if (ret) {
dev_err(dev, "cannot enable vdda_refclk regulator\n");
goto err_refclk;
}
ret = regulator_enable(res->vdda_phy);
if (ret) {
dev_err(dev, "cannot enable vdda_phy regulator\n");
goto err_vdda_phy;
}
ret = reset_control_assert(res->ahb_reset); ret = reset_control_assert(res->ahb_reset);
if (ret) { if (ret) {
dev_err(dev, "cannot assert ahb reset\n"); dev_err(dev, "cannot assert ahb reset\n");
...@@ -389,11 +371,7 @@ static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie) ...@@ -389,11 +371,7 @@ static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie)
err_clk_phy: err_clk_phy:
clk_disable_unprepare(res->iface_clk); clk_disable_unprepare(res->iface_clk);
err_assert_ahb: err_assert_ahb:
regulator_disable(res->vdda_phy); regulator_bulk_disable(ARRAY_SIZE(res->supplies), res->supplies);
err_vdda_phy:
regulator_disable(res->vdda_refclk);
err_refclk:
regulator_disable(res->vdda);
return ret; return ret;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册