diff options
author | Stefan Agner <stefan.agner@toradex.com> | 2018-01-17 11:23:53 +0100 |
---|---|---|
committer | Oleksandr Suvorov <oleksandr.suvorov@toradex.com> | 2021-01-27 20:36:21 +0200 |
commit | ca391e52a4507b1d9667a0fe6d2012295fc59a2b (patch) | |
tree | 27872b93ec80c4496eb515eda414a1925b64ba75 /drivers/pci/controller/dwc/pci-imx6.c | |
parent | fb88ecbca936b79682db1ce102ba48811b08f5fd (diff) |
PCI: imx6: add external clock support for i.MX8QM
Add external reference clock via clock tree. This allows to model
the shared reference clock provided via PCIE_SATA_REFCLK100M_P/N
properly.
Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
(cherry picked from commit db22e75903386929c76188978f28b3bf355322a0)
Conflicts:
drivers/pci/host/pci-imx6.c
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
(cherry picked from commit 57364eca822fb2803b6aa93257e93e0d4242282d)
(cherry picked from commit f32040d9607bf3e7de57cf05733ae0b5d27b5640)
(cherry picked from commit 1c51d5cc8d041a5dfe3a1793bb3767450cab3c1a)
(cherry picked from commit f178e6c2afcc37dc5c4771b5bad64286836b2120)
Conflicts:
drivers/pci/dwc/pci-imx6.c
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Diffstat (limited to 'drivers/pci/controller/dwc/pci-imx6.c')
-rw-r--r-- | drivers/pci/controller/dwc/pci-imx6.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index 3bcea6297488..c2e6f6752044 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -123,6 +123,7 @@ struct imx6_pcie { struct clk *pciex2_per; struct clk *pcie_inbound_axi; struct clk *pcie; + struct clk *pcie_ext; struct clk *pcie_aux; struct clk *phy_per; struct clk *misc_per; @@ -1182,6 +1183,12 @@ static void imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie) } } + ret = clk_prepare_enable(imx6_pcie->pcie_ext); + if (ret) { + dev_err(dev, "unable to enable pcie_ext clock\n"); + return; + } + switch (imx6_pcie->drvdata->variant) { case IMX8QXP: case IMX8QXP_EP: @@ -2483,6 +2490,13 @@ static int imx6_pcie_probe(struct platform_device *pdev) return PTR_ERR(imx6_pcie->pcie); } + imx6_pcie->pcie_ext = devm_clk_get_optional(&pdev->dev, "pcie_ext"); + if (IS_ERR(imx6_pcie->pcie_ext)) { + dev_err(&pdev->dev, + "pcie_ext clock source missing or invalid\n"); + return PTR_ERR(imx6_pcie->pcie_ext); + } + switch (imx6_pcie->drvdata->variant) { case IMX6SX: case IMX6SX_EP: |