PCI: rockchip: dw: Simplify clock handling

Use new API to manage them.

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Change-Id: Id8536ddda7fe14ede9d6df2435c34243913e39a1
This commit is contained in:
Shawn Lin
2022-03-09 17:48:27 +08:00
parent c7215f118f
commit cf6bed3a03

View File

@@ -1129,49 +1129,18 @@ static int rk_pcie_add_ep(struct rk_pcie *rk_pcie)
return 0;
}
static void rk_pcie_clk_deinit(struct rk_pcie *rk_pcie)
{
clk_bulk_disable(rk_pcie->clk_cnt, rk_pcie->clks);
clk_bulk_unprepare(rk_pcie->clk_cnt, rk_pcie->clks);
}
static int rk_pcie_clk_init(struct rk_pcie *rk_pcie)
{
struct device *dev = rk_pcie->pci->dev;
struct property *prop;
const char *name;
int i = 0, ret, count;
int ret;
count = of_property_count_strings(dev->of_node, "clock-names");
if (count < 1)
rk_pcie->clk_cnt = devm_clk_bulk_get_all(dev, &rk_pcie->clks);
if (rk_pcie->clk_cnt < 1)
return -ENODEV;
rk_pcie->clks = devm_kcalloc(dev, count,
sizeof(struct clk_bulk_data),
GFP_KERNEL);
if (!rk_pcie->clks)
return -ENOMEM;
rk_pcie->clk_cnt = count;
of_property_for_each_string(dev->of_node, "clock-names", prop, name) {
rk_pcie->clks[i].id = name;
if (!rk_pcie->clks[i].id)
return -ENOMEM;
i++;
}
ret = devm_clk_bulk_get(dev, count, rk_pcie->clks);
if (ret)
return ret;
ret = clk_bulk_prepare(count, rk_pcie->clks);
if (ret)
return ret;
ret = clk_bulk_enable(count, rk_pcie->clks);
ret = clk_bulk_prepare_enable(rk_pcie->clk_cnt, rk_pcie->clks);
if (ret) {
clk_bulk_unprepare(count, rk_pcie->clks);
dev_err(dev, "failed to prepare enable pcie bulk clks: %d\n", ret);
return ret;
}
@@ -1902,7 +1871,7 @@ disable_phy:
phy_power_off(rk_pcie->phy);
phy_exit(rk_pcie->phy);
deinit_clk:
rk_pcie_clk_deinit(rk_pcie);
clk_bulk_disable_unprepare(rk_pcie->clk_cnt, rk_pcie->clks);
disable_vpcie3v3:
rk_pcie_disable_power(rk_pcie);
release_driver:
@@ -2053,7 +2022,7 @@ no_l2:
phy_power_off(rk_pcie->phy);
phy_exit(rk_pcie->phy);
clk_bulk_disable(rk_pcie->clk_cnt, rk_pcie->clks);
clk_bulk_disable_unprepare(rk_pcie->clk_cnt, rk_pcie->clks);
rk_pcie->in_suspend = true;
@@ -2077,9 +2046,9 @@ static int __maybe_unused rockchip_dw_pcie_resume(struct device *dev)
if (ret)
return ret;
ret = clk_bulk_enable(rk_pcie->clk_cnt, rk_pcie->clks);
ret = clk_bulk_prepare_enable(rk_pcie->clk_cnt, rk_pcie->clks);
if (ret) {
clk_bulk_unprepare(rk_pcie->clk_cnt, rk_pcie->clks);
dev_err(dev, "failed to prepare enable pcie bulk clks: %d\n", ret);
return ret;
}