aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/controller/dwc
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/controller/dwc')
-rw-r--r--drivers/pci/controller/dwc/pci-imx6.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
index 64c74334f7d0..f5a16fd15be5 100644
--- a/drivers/pci/controller/dwc/pci-imx6.c
+++ b/drivers/pci/controller/dwc/pci-imx6.c
@@ -66,6 +66,7 @@ struct imx6_pcie {
66 struct clk *pcie_phy; 66 struct clk *pcie_phy;
67 struct clk *pcie_inbound_axi; 67 struct clk *pcie_inbound_axi;
68 struct clk *pcie; 68 struct clk *pcie;
69 struct clk *pcie_aux;
69 struct regmap *iomuxc_gpr; 70 struct regmap *iomuxc_gpr;
70 u32 controller_id; 71 u32 controller_id;
71 struct reset_control *pciephy_reset; 72 struct reset_control *pciephy_reset;
@@ -459,6 +460,12 @@ static int imx6_pcie_enable_ref_clk(struct imx6_pcie *imx6_pcie)
459 case IMX7D: 460 case IMX7D:
460 break; 461 break;
461 case IMX8MQ: 462 case IMX8MQ:
463 ret = clk_prepare_enable(imx6_pcie->pcie_aux);
464 if (ret) {
465 dev_err(dev, "unable to enable pcie_aux clock\n");
466 break;
467 }
468
462 offset = imx6_pcie_grp_offset(imx6_pcie); 469 offset = imx6_pcie_grp_offset(imx6_pcie);
463 /* 470 /*
464 * Set the over ride low and enabled 471 * Set the over ride low and enabled
@@ -976,6 +983,9 @@ static void imx6_pcie_clk_disable(struct imx6_pcie *imx6_pcie)
976 IMX7D_GPR12_PCIE_PHY_REFCLK_SEL, 983 IMX7D_GPR12_PCIE_PHY_REFCLK_SEL,
977 IMX7D_GPR12_PCIE_PHY_REFCLK_SEL); 984 IMX7D_GPR12_PCIE_PHY_REFCLK_SEL);
978 break; 985 break;
986 case IMX8MQ:
987 clk_disable_unprepare(imx6_pcie->pcie_aux);
988 break;
979 default: 989 default:
980 break; 990 break;
981 } 991 }
@@ -1121,8 +1131,14 @@ static int imx6_pcie_probe(struct platform_device *pdev)
1121 return PTR_ERR(imx6_pcie->pcie_inbound_axi); 1131 return PTR_ERR(imx6_pcie->pcie_inbound_axi);
1122 } 1132 }
1123 break; 1133 break;
1124 case IMX7D:
1125 case IMX8MQ: 1134 case IMX8MQ:
1135 imx6_pcie->pcie_aux = devm_clk_get(dev, "pcie_aux");
1136 if (IS_ERR(imx6_pcie->pcie_aux)) {
1137 dev_err(dev, "pcie_aux clock source missing or invalid\n");
1138 return PTR_ERR(imx6_pcie->pcie_aux);
1139 }
1140 /* fall through */
1141 case IMX7D:
1126 if (dbi_base->start == IMX8MQ_PCIE2_BASE_ADDR) 1142 if (dbi_base->start == IMX8MQ_PCIE2_BASE_ADDR)
1127 imx6_pcie->controller_id = 1; 1143 imx6_pcie->controller_id = 1;
1128 1144