Commit da3552d2 authored by Bjorn Helgaas's avatar Bjorn Helgaas

Merge branch 'pci/controller/exynos'

- Use devm_clk_bulk_get_all_enable() to simplify clock setup (Shradha Todi)

* pci/controller/exynos:
  PCI: exynos: Adapt to use bulk clock APIs
parents 1d97f4b2 6b11143f
...@@ -54,43 +54,11 @@ ...@@ -54,43 +54,11 @@
struct exynos_pcie { struct exynos_pcie {
struct dw_pcie pci; struct dw_pcie pci;
void __iomem *elbi_base; void __iomem *elbi_base;
struct clk *clk; struct clk_bulk_data *clks;
struct clk *bus_clk;
struct phy *phy; struct phy *phy;
struct regulator_bulk_data supplies[2]; struct regulator_bulk_data supplies[2];
}; };
static int exynos_pcie_init_clk_resources(struct exynos_pcie *ep)
{
struct device *dev = ep->pci.dev;
int ret;
ret = clk_prepare_enable(ep->clk);
if (ret) {
dev_err(dev, "cannot enable pcie rc clock");
return ret;
}
ret = clk_prepare_enable(ep->bus_clk);
if (ret) {
dev_err(dev, "cannot enable pcie bus clock");
goto err_bus_clk;
}
return 0;
err_bus_clk:
clk_disable_unprepare(ep->clk);
return ret;
}
static void exynos_pcie_deinit_clk_resources(struct exynos_pcie *ep)
{
clk_disable_unprepare(ep->bus_clk);
clk_disable_unprepare(ep->clk);
}
static void exynos_pcie_writel(void __iomem *base, u32 val, u32 reg) static void exynos_pcie_writel(void __iomem *base, u32 val, u32 reg)
{ {
writel(val, base + reg); writel(val, base + reg);
...@@ -332,17 +300,9 @@ static int exynos_pcie_probe(struct platform_device *pdev) ...@@ -332,17 +300,9 @@ static int exynos_pcie_probe(struct platform_device *pdev)
if (IS_ERR(ep->elbi_base)) if (IS_ERR(ep->elbi_base))
return PTR_ERR(ep->elbi_base); return PTR_ERR(ep->elbi_base);
ep->clk = devm_clk_get(dev, "pcie"); ret = devm_clk_bulk_get_all_enable(dev, &ep->clks);
if (IS_ERR(ep->clk)) { if (ret < 0)
dev_err(dev, "Failed to get pcie rc clock\n"); return ret;
return PTR_ERR(ep->clk);
}
ep->bus_clk = devm_clk_get(dev, "pcie_bus");
if (IS_ERR(ep->bus_clk)) {
dev_err(dev, "Failed to get pcie bus clock\n");
return PTR_ERR(ep->bus_clk);
}
ep->supplies[0].supply = "vdd18"; ep->supplies[0].supply = "vdd18";
ep->supplies[1].supply = "vdd10"; ep->supplies[1].supply = "vdd10";
...@@ -351,10 +311,6 @@ static int exynos_pcie_probe(struct platform_device *pdev) ...@@ -351,10 +311,6 @@ static int exynos_pcie_probe(struct platform_device *pdev)
if (ret) if (ret)
return ret; return ret;
ret = exynos_pcie_init_clk_resources(ep);
if (ret)
return ret;
ret = regulator_bulk_enable(ARRAY_SIZE(ep->supplies), ep->supplies); ret = regulator_bulk_enable(ARRAY_SIZE(ep->supplies), ep->supplies);
if (ret) if (ret)
return ret; return ret;
...@@ -369,7 +325,6 @@ static int exynos_pcie_probe(struct platform_device *pdev) ...@@ -369,7 +325,6 @@ static int exynos_pcie_probe(struct platform_device *pdev)
fail_probe: fail_probe:
phy_exit(ep->phy); phy_exit(ep->phy);
exynos_pcie_deinit_clk_resources(ep);
regulator_bulk_disable(ARRAY_SIZE(ep->supplies), ep->supplies); regulator_bulk_disable(ARRAY_SIZE(ep->supplies), ep->supplies);
return ret; return ret;
...@@ -383,7 +338,6 @@ static void exynos_pcie_remove(struct platform_device *pdev) ...@@ -383,7 +338,6 @@ static void exynos_pcie_remove(struct platform_device *pdev)
exynos_pcie_assert_core_reset(ep); exynos_pcie_assert_core_reset(ep);
phy_power_off(ep->phy); phy_power_off(ep->phy);
phy_exit(ep->phy); phy_exit(ep->phy);
exynos_pcie_deinit_clk_resources(ep);
regulator_bulk_disable(ARRAY_SIZE(ep->supplies), ep->supplies); regulator_bulk_disable(ARRAY_SIZE(ep->supplies), ep->supplies);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment