Commit da3552d2 authored by Bjorn Helgaas's avatar Bjorn Helgaas
Browse files

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
Loading
Loading
Loading
Loading
+4 −50
Original line number Diff line number Diff line
@@ -54,43 +54,11 @@
struct exynos_pcie {
	struct dw_pcie			pci;
	void __iomem			*elbi_base;
	struct clk			*clk;
	struct clk			*bus_clk;
	struct clk_bulk_data		*clks;
	struct phy			*phy;
	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)
{
	writel(val, base + reg);
@@ -332,17 +300,9 @@ static int exynos_pcie_probe(struct platform_device *pdev)
	if (IS_ERR(ep->elbi_base))
		return PTR_ERR(ep->elbi_base);

	ep->clk = devm_clk_get(dev, "pcie");
	if (IS_ERR(ep->clk)) {
		dev_err(dev, "Failed to get pcie rc clock\n");
		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);
	}
	ret = devm_clk_bulk_get_all_enable(dev, &ep->clks);
	if (ret < 0)
		return ret;

	ep->supplies[0].supply = "vdd18";
	ep->supplies[1].supply = "vdd10";
@@ -351,10 +311,6 @@ static int exynos_pcie_probe(struct platform_device *pdev)
	if (ret)
		return ret;

	ret = exynos_pcie_init_clk_resources(ep);
	if (ret)
		return ret;

	ret = regulator_bulk_enable(ARRAY_SIZE(ep->supplies), ep->supplies);
	if (ret)
		return ret;
@@ -369,7 +325,6 @@ static int exynos_pcie_probe(struct platform_device *pdev)

fail_probe:
	phy_exit(ep->phy);
	exynos_pcie_deinit_clk_resources(ep);
	regulator_bulk_disable(ARRAY_SIZE(ep->supplies), ep->supplies);

	return ret;
@@ -383,7 +338,6 @@ static void exynos_pcie_remove(struct platform_device *pdev)
	exynos_pcie_assert_core_reset(ep);
	phy_power_off(ep->phy);
	phy_exit(ep->phy);
	exynos_pcie_deinit_clk_resources(ep);
	regulator_bulk_disable(ARRAY_SIZE(ep->supplies), ep->supplies);
}