Lines Matching refs:imx6_pcie
68 struct imx6_pcie { struct
152 static unsigned int imx6_pcie_grp_offset(const struct imx6_pcie *imx6_pcie) in imx6_pcie_grp_offset() argument
154 WARN_ON(imx6_pcie->drvdata->variant != IMX8MQ && in imx6_pcie_grp_offset()
155 imx6_pcie->drvdata->variant != IMX8MM && in imx6_pcie_grp_offset()
156 imx6_pcie->drvdata->variant != IMX8MP); in imx6_pcie_grp_offset()
157 return imx6_pcie->controller_id == 1 ? IOMUXC_GPR16 : IOMUXC_GPR14; in imx6_pcie_grp_offset()
160 static void imx6_pcie_configure_type(struct imx6_pcie *imx6_pcie) in imx6_pcie_configure_type() argument
164 if (imx6_pcie->drvdata->variant == IMX8MQ && in imx6_pcie_configure_type()
165 imx6_pcie->controller_id == 1) { in imx6_pcie_configure_type()
175 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, mask, val); in imx6_pcie_configure_type()
178 static int pcie_phy_poll_ack(struct imx6_pcie *imx6_pcie, bool exp_val) in pcie_phy_poll_ack() argument
180 struct dw_pcie *pci = imx6_pcie->pci; in pcie_phy_poll_ack()
199 static int pcie_phy_wait_ack(struct imx6_pcie *imx6_pcie, int addr) in pcie_phy_wait_ack() argument
201 struct dw_pcie *pci = imx6_pcie->pci; in pcie_phy_wait_ack()
211 ret = pcie_phy_poll_ack(imx6_pcie, true); in pcie_phy_wait_ack()
218 return pcie_phy_poll_ack(imx6_pcie, false); in pcie_phy_wait_ack()
222 static int pcie_phy_read(struct imx6_pcie *imx6_pcie, int addr, u16 *data) in pcie_phy_read() argument
224 struct dw_pcie *pci = imx6_pcie->pci; in pcie_phy_read()
228 ret = pcie_phy_wait_ack(imx6_pcie, addr); in pcie_phy_read()
236 ret = pcie_phy_poll_ack(imx6_pcie, true); in pcie_phy_read()
245 return pcie_phy_poll_ack(imx6_pcie, false); in pcie_phy_read()
248 static int pcie_phy_write(struct imx6_pcie *imx6_pcie, int addr, u16 data) in pcie_phy_write() argument
250 struct dw_pcie *pci = imx6_pcie->pci; in pcie_phy_write()
256 ret = pcie_phy_wait_ack(imx6_pcie, addr); in pcie_phy_write()
267 ret = pcie_phy_poll_ack(imx6_pcie, true); in pcie_phy_write()
276 ret = pcie_phy_poll_ack(imx6_pcie, false); in pcie_phy_write()
285 ret = pcie_phy_poll_ack(imx6_pcie, true); in pcie_phy_write()
294 ret = pcie_phy_poll_ack(imx6_pcie, false); in pcie_phy_write()
303 static void imx6_pcie_init_phy(struct imx6_pcie *imx6_pcie) in imx6_pcie_init_phy() argument
305 switch (imx6_pcie->drvdata->variant) { in imx6_pcie_init_phy()
318 regmap_update_bits(imx6_pcie->iomuxc_gpr, in imx6_pcie_init_phy()
319 imx6_pcie_grp_offset(imx6_pcie), in imx6_pcie_init_phy()
327 if (imx6_pcie->vph && in imx6_pcie_init_phy()
328 regulator_get_voltage(imx6_pcie->vph) > 3000000) in imx6_pcie_init_phy()
329 regmap_update_bits(imx6_pcie->iomuxc_gpr, in imx6_pcie_init_phy()
330 imx6_pcie_grp_offset(imx6_pcie), in imx6_pcie_init_phy()
335 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, in imx6_pcie_init_phy()
339 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, in imx6_pcie_init_phy()
344 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, in imx6_pcie_init_phy()
348 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, in imx6_pcie_init_phy()
351 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR8, in imx6_pcie_init_phy()
353 imx6_pcie->tx_deemph_gen1 << 0); in imx6_pcie_init_phy()
354 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR8, in imx6_pcie_init_phy()
356 imx6_pcie->tx_deemph_gen2_3p5db << 6); in imx6_pcie_init_phy()
357 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR8, in imx6_pcie_init_phy()
359 imx6_pcie->tx_deemph_gen2_6db << 12); in imx6_pcie_init_phy()
360 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR8, in imx6_pcie_init_phy()
362 imx6_pcie->tx_swing_full << 18); in imx6_pcie_init_phy()
363 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR8, in imx6_pcie_init_phy()
365 imx6_pcie->tx_swing_low << 25); in imx6_pcie_init_phy()
369 imx6_pcie_configure_type(imx6_pcie); in imx6_pcie_init_phy()
372 static void imx7d_pcie_wait_for_phy_pll_lock(struct imx6_pcie *imx6_pcie) in imx7d_pcie_wait_for_phy_pll_lock() argument
375 struct device *dev = imx6_pcie->pci->dev; in imx7d_pcie_wait_for_phy_pll_lock()
377 if (regmap_read_poll_timeout(imx6_pcie->iomuxc_gpr, in imx7d_pcie_wait_for_phy_pll_lock()
385 static int imx6_setup_phy_mpll(struct imx6_pcie *imx6_pcie) in imx6_setup_phy_mpll() argument
387 unsigned long phy_rate = clk_get_rate(imx6_pcie->pcie_phy); in imx6_setup_phy_mpll()
391 if (!(imx6_pcie->drvdata->flags & IMX6_PCIE_FLAG_IMX6_PHY)) in imx6_setup_phy_mpll()
410 dev_err(imx6_pcie->pci->dev, in imx6_setup_phy_mpll()
415 pcie_phy_read(imx6_pcie, PCIE_PHY_MPLL_OVRD_IN_LO, &val); in imx6_setup_phy_mpll()
420 pcie_phy_write(imx6_pcie, PCIE_PHY_MPLL_OVRD_IN_LO, val); in imx6_setup_phy_mpll()
422 pcie_phy_read(imx6_pcie, PCIE_PHY_ATEOVRD, &val); in imx6_setup_phy_mpll()
427 pcie_phy_write(imx6_pcie, PCIE_PHY_ATEOVRD, val); in imx6_setup_phy_mpll()
432 static void imx6_pcie_reset_phy(struct imx6_pcie *imx6_pcie) in imx6_pcie_reset_phy() argument
436 if (!(imx6_pcie->drvdata->flags & IMX6_PCIE_FLAG_IMX6_PHY)) in imx6_pcie_reset_phy()
439 pcie_phy_read(imx6_pcie, PHY_RX_OVRD_IN_LO, &tmp); in imx6_pcie_reset_phy()
442 pcie_phy_write(imx6_pcie, PHY_RX_OVRD_IN_LO, tmp); in imx6_pcie_reset_phy()
446 pcie_phy_read(imx6_pcie, PHY_RX_OVRD_IN_LO, &tmp); in imx6_pcie_reset_phy()
449 pcie_phy_write(imx6_pcie, PHY_RX_OVRD_IN_LO, tmp); in imx6_pcie_reset_phy()
490 struct imx6_pcie *imx6_pcie = dev_get_drvdata(dev); in imx6_pcie_attach_pd() local
497 imx6_pcie->pd_pcie = dev_pm_domain_attach_by_name(dev, "pcie"); in imx6_pcie_attach_pd()
498 if (IS_ERR(imx6_pcie->pd_pcie)) in imx6_pcie_attach_pd()
499 return PTR_ERR(imx6_pcie->pd_pcie); in imx6_pcie_attach_pd()
501 if (!imx6_pcie->pd_pcie) in imx6_pcie_attach_pd()
503 link = device_link_add(dev, imx6_pcie->pd_pcie, in imx6_pcie_attach_pd()
512 imx6_pcie->pd_pcie_phy = dev_pm_domain_attach_by_name(dev, "pcie_phy"); in imx6_pcie_attach_pd()
513 if (IS_ERR(imx6_pcie->pd_pcie_phy)) in imx6_pcie_attach_pd()
514 return PTR_ERR(imx6_pcie->pd_pcie_phy); in imx6_pcie_attach_pd()
516 link = device_link_add(dev, imx6_pcie->pd_pcie_phy, in imx6_pcie_attach_pd()
528 static int imx6_pcie_enable_ref_clk(struct imx6_pcie *imx6_pcie) in imx6_pcie_enable_ref_clk() argument
530 struct dw_pcie *pci = imx6_pcie->pci; in imx6_pcie_enable_ref_clk()
535 switch (imx6_pcie->drvdata->variant) { in imx6_pcie_enable_ref_clk()
537 ret = clk_prepare_enable(imx6_pcie->pcie_inbound_axi); in imx6_pcie_enable_ref_clk()
543 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, in imx6_pcie_enable_ref_clk()
549 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1, in imx6_pcie_enable_ref_clk()
558 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1, in imx6_pcie_enable_ref_clk()
566 ret = clk_prepare_enable(imx6_pcie->pcie_aux); in imx6_pcie_enable_ref_clk()
572 offset = imx6_pcie_grp_offset(imx6_pcie); in imx6_pcie_enable_ref_clk()
577 regmap_update_bits(imx6_pcie->iomuxc_gpr, offset, in imx6_pcie_enable_ref_clk()
580 regmap_update_bits(imx6_pcie->iomuxc_gpr, offset, in imx6_pcie_enable_ref_clk()
589 static void imx6_pcie_disable_ref_clk(struct imx6_pcie *imx6_pcie) in imx6_pcie_disable_ref_clk() argument
591 switch (imx6_pcie->drvdata->variant) { in imx6_pcie_disable_ref_clk()
593 clk_disable_unprepare(imx6_pcie->pcie_inbound_axi); in imx6_pcie_disable_ref_clk()
597 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1, in imx6_pcie_disable_ref_clk()
599 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1, in imx6_pcie_disable_ref_clk()
604 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, in imx6_pcie_disable_ref_clk()
611 clk_disable_unprepare(imx6_pcie->pcie_aux); in imx6_pcie_disable_ref_clk()
618 static int imx6_pcie_clk_enable(struct imx6_pcie *imx6_pcie) in imx6_pcie_clk_enable() argument
620 struct dw_pcie *pci = imx6_pcie->pci; in imx6_pcie_clk_enable()
624 ret = clk_prepare_enable(imx6_pcie->pcie_phy); in imx6_pcie_clk_enable()
630 ret = clk_prepare_enable(imx6_pcie->pcie_bus); in imx6_pcie_clk_enable()
636 ret = clk_prepare_enable(imx6_pcie->pcie); in imx6_pcie_clk_enable()
642 ret = imx6_pcie_enable_ref_clk(imx6_pcie); in imx6_pcie_clk_enable()
653 clk_disable_unprepare(imx6_pcie->pcie); in imx6_pcie_clk_enable()
655 clk_disable_unprepare(imx6_pcie->pcie_bus); in imx6_pcie_clk_enable()
657 clk_disable_unprepare(imx6_pcie->pcie_phy); in imx6_pcie_clk_enable()
662 static void imx6_pcie_clk_disable(struct imx6_pcie *imx6_pcie) in imx6_pcie_clk_disable() argument
664 imx6_pcie_disable_ref_clk(imx6_pcie); in imx6_pcie_clk_disable()
665 clk_disable_unprepare(imx6_pcie->pcie); in imx6_pcie_clk_disable()
666 clk_disable_unprepare(imx6_pcie->pcie_bus); in imx6_pcie_clk_disable()
667 clk_disable_unprepare(imx6_pcie->pcie_phy); in imx6_pcie_clk_disable()
670 static void imx6_pcie_assert_core_reset(struct imx6_pcie *imx6_pcie) in imx6_pcie_assert_core_reset() argument
672 switch (imx6_pcie->drvdata->variant) { in imx6_pcie_assert_core_reset()
675 reset_control_assert(imx6_pcie->pciephy_reset); in imx6_pcie_assert_core_reset()
679 reset_control_assert(imx6_pcie->apps_reset); in imx6_pcie_assert_core_reset()
682 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, in imx6_pcie_assert_core_reset()
686 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR5, in imx6_pcie_assert_core_reset()
691 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1, in imx6_pcie_assert_core_reset()
696 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1, in imx6_pcie_assert_core_reset()
698 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1, in imx6_pcie_assert_core_reset()
704 if (gpio_is_valid(imx6_pcie->reset_gpio)) in imx6_pcie_assert_core_reset()
705 gpio_set_value_cansleep(imx6_pcie->reset_gpio, in imx6_pcie_assert_core_reset()
706 imx6_pcie->gpio_active_high); in imx6_pcie_assert_core_reset()
709 static int imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie) in imx6_pcie_deassert_core_reset() argument
711 struct dw_pcie *pci = imx6_pcie->pci; in imx6_pcie_deassert_core_reset()
714 switch (imx6_pcie->drvdata->variant) { in imx6_pcie_deassert_core_reset()
716 reset_control_deassert(imx6_pcie->pciephy_reset); in imx6_pcie_deassert_core_reset()
719 reset_control_deassert(imx6_pcie->pciephy_reset); in imx6_pcie_deassert_core_reset()
725 if (likely(imx6_pcie->phy_base)) { in imx6_pcie_deassert_core_reset()
728 imx6_pcie->phy_base + PCIE_PHY_CMN_REG4); in imx6_pcie_deassert_core_reset()
732 imx6_pcie->phy_base + PCIE_PHY_CMN_REG24); in imx6_pcie_deassert_core_reset()
735 imx6_pcie->phy_base + PCIE_PHY_CMN_REG26); in imx6_pcie_deassert_core_reset()
740 imx7d_pcie_wait_for_phy_pll_lock(imx6_pcie); in imx6_pcie_deassert_core_reset()
743 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR5, in imx6_pcie_deassert_core_reset()
747 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1, in imx6_pcie_deassert_core_reset()
759 if (gpio_is_valid(imx6_pcie->reset_gpio)) { in imx6_pcie_deassert_core_reset()
761 gpio_set_value_cansleep(imx6_pcie->reset_gpio, in imx6_pcie_deassert_core_reset()
762 !imx6_pcie->gpio_active_high); in imx6_pcie_deassert_core_reset()
770 static int imx6_pcie_wait_for_speed_change(struct imx6_pcie *imx6_pcie) in imx6_pcie_wait_for_speed_change() argument
772 struct dw_pcie *pci = imx6_pcie->pci; in imx6_pcie_wait_for_speed_change()
791 struct imx6_pcie *imx6_pcie = dev_get_drvdata(dev); in imx6_pcie_ltssm_enable() local
793 switch (imx6_pcie->drvdata->variant) { in imx6_pcie_ltssm_enable()
797 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, in imx6_pcie_ltssm_enable()
805 reset_control_deassert(imx6_pcie->apps_reset); in imx6_pcie_ltssm_enable()
812 struct imx6_pcie *imx6_pcie = dev_get_drvdata(dev); in imx6_pcie_ltssm_disable() local
814 switch (imx6_pcie->drvdata->variant) { in imx6_pcie_ltssm_disable()
818 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, in imx6_pcie_ltssm_disable()
825 reset_control_assert(imx6_pcie->apps_reset); in imx6_pcie_ltssm_disable()
832 struct imx6_pcie *imx6_pcie = to_imx6_pcie(pci); in imx6_pcie_start_link() local
874 if (imx6_pcie->drvdata->flags & in imx6_pcie_start_link()
885 ret = imx6_pcie_wait_for_speed_change(imx6_pcie); in imx6_pcie_start_link()
900 imx6_pcie->link_is_up = true; in imx6_pcie_start_link()
906 imx6_pcie->link_is_up = false; in imx6_pcie_start_link()
910 imx6_pcie_reset_phy(imx6_pcie); in imx6_pcie_start_link()
926 struct imx6_pcie *imx6_pcie = to_imx6_pcie(pci); in imx6_pcie_host_init() local
929 if (imx6_pcie->vpcie) { in imx6_pcie_host_init()
930 ret = regulator_enable(imx6_pcie->vpcie); in imx6_pcie_host_init()
938 imx6_pcie_assert_core_reset(imx6_pcie); in imx6_pcie_host_init()
939 imx6_pcie_init_phy(imx6_pcie); in imx6_pcie_host_init()
941 ret = imx6_pcie_clk_enable(imx6_pcie); in imx6_pcie_host_init()
947 if (imx6_pcie->phy) { in imx6_pcie_host_init()
948 ret = phy_init(imx6_pcie->phy); in imx6_pcie_host_init()
955 ret = imx6_pcie_deassert_core_reset(imx6_pcie); in imx6_pcie_host_init()
961 if (imx6_pcie->phy) { in imx6_pcie_host_init()
962 ret = phy_power_on(imx6_pcie->phy); in imx6_pcie_host_init()
968 imx6_setup_phy_mpll(imx6_pcie); in imx6_pcie_host_init()
973 if (imx6_pcie->phy) in imx6_pcie_host_init()
974 phy_exit(imx6_pcie->phy); in imx6_pcie_host_init()
976 imx6_pcie_clk_disable(imx6_pcie); in imx6_pcie_host_init()
978 if (imx6_pcie->vpcie) in imx6_pcie_host_init()
979 regulator_disable(imx6_pcie->vpcie); in imx6_pcie_host_init()
986 struct imx6_pcie *imx6_pcie = to_imx6_pcie(pci); in imx6_pcie_host_exit() local
988 if (imx6_pcie->phy) { in imx6_pcie_host_exit()
989 if (phy_power_off(imx6_pcie->phy)) in imx6_pcie_host_exit()
991 phy_exit(imx6_pcie->phy); in imx6_pcie_host_exit()
993 imx6_pcie_clk_disable(imx6_pcie); in imx6_pcie_host_exit()
995 if (imx6_pcie->vpcie) in imx6_pcie_host_exit()
996 regulator_disable(imx6_pcie->vpcie); in imx6_pcie_host_exit()
1007 static void imx6_pcie_pm_turnoff(struct imx6_pcie *imx6_pcie) in imx6_pcie_pm_turnoff() argument
1009 struct device *dev = imx6_pcie->pci->dev; in imx6_pcie_pm_turnoff()
1012 if (imx6_pcie->turnoff_reset) { in imx6_pcie_pm_turnoff()
1013 reset_control_assert(imx6_pcie->turnoff_reset); in imx6_pcie_pm_turnoff()
1014 reset_control_deassert(imx6_pcie->turnoff_reset); in imx6_pcie_pm_turnoff()
1019 switch (imx6_pcie->drvdata->variant) { in imx6_pcie_pm_turnoff()
1022 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, in imx6_pcie_pm_turnoff()
1025 regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, in imx6_pcie_pm_turnoff()
1046 struct imx6_pcie *imx6_pcie = dev_get_drvdata(dev); in imx6_pcie_suspend_noirq() local
1047 struct dw_pcie_rp *pp = &imx6_pcie->pci->pp; in imx6_pcie_suspend_noirq()
1049 if (!(imx6_pcie->drvdata->flags & IMX6_PCIE_FLAG_SUPPORTS_SUSPEND)) in imx6_pcie_suspend_noirq()
1052 imx6_pcie_pm_turnoff(imx6_pcie); in imx6_pcie_suspend_noirq()
1053 imx6_pcie_stop_link(imx6_pcie->pci); in imx6_pcie_suspend_noirq()
1062 struct imx6_pcie *imx6_pcie = dev_get_drvdata(dev); in imx6_pcie_resume_noirq() local
1063 struct dw_pcie_rp *pp = &imx6_pcie->pci->pp; in imx6_pcie_resume_noirq()
1065 if (!(imx6_pcie->drvdata->flags & IMX6_PCIE_FLAG_SUPPORTS_SUSPEND)) in imx6_pcie_resume_noirq()
1073 if (imx6_pcie->link_is_up) in imx6_pcie_resume_noirq()
1074 imx6_pcie_start_link(imx6_pcie->pci); in imx6_pcie_resume_noirq()
1088 struct imx6_pcie *imx6_pcie; in imx6_pcie_probe() local
1095 imx6_pcie = devm_kzalloc(dev, sizeof(*imx6_pcie), GFP_KERNEL); in imx6_pcie_probe()
1096 if (!imx6_pcie) in imx6_pcie_probe()
1107 imx6_pcie->pci = pci; in imx6_pcie_probe()
1108 imx6_pcie->drvdata = of_device_get_match_data(dev); in imx6_pcie_probe()
1120 imx6_pcie->phy_base = devm_ioremap_resource(dev, &res); in imx6_pcie_probe()
1121 if (IS_ERR(imx6_pcie->phy_base)) in imx6_pcie_probe()
1122 return PTR_ERR(imx6_pcie->phy_base); in imx6_pcie_probe()
1131 imx6_pcie->reset_gpio = of_get_named_gpio(node, "reset-gpio", 0); in imx6_pcie_probe()
1132 imx6_pcie->gpio_active_high = of_property_read_bool(node, in imx6_pcie_probe()
1134 if (gpio_is_valid(imx6_pcie->reset_gpio)) { in imx6_pcie_probe()
1135 ret = devm_gpio_request_one(dev, imx6_pcie->reset_gpio, in imx6_pcie_probe()
1136 imx6_pcie->gpio_active_high ? in imx6_pcie_probe()
1144 } else if (imx6_pcie->reset_gpio == -EPROBE_DEFER) { in imx6_pcie_probe()
1145 return imx6_pcie->reset_gpio; in imx6_pcie_probe()
1149 imx6_pcie->pcie_bus = devm_clk_get(dev, "pcie_bus"); in imx6_pcie_probe()
1150 if (IS_ERR(imx6_pcie->pcie_bus)) in imx6_pcie_probe()
1151 return dev_err_probe(dev, PTR_ERR(imx6_pcie->pcie_bus), in imx6_pcie_probe()
1154 imx6_pcie->pcie = devm_clk_get(dev, "pcie"); in imx6_pcie_probe()
1155 if (IS_ERR(imx6_pcie->pcie)) in imx6_pcie_probe()
1156 return dev_err_probe(dev, PTR_ERR(imx6_pcie->pcie), in imx6_pcie_probe()
1159 switch (imx6_pcie->drvdata->variant) { in imx6_pcie_probe()
1161 imx6_pcie->pcie_inbound_axi = devm_clk_get(dev, in imx6_pcie_probe()
1163 if (IS_ERR(imx6_pcie->pcie_inbound_axi)) in imx6_pcie_probe()
1164 return dev_err_probe(dev, PTR_ERR(imx6_pcie->pcie_inbound_axi), in imx6_pcie_probe()
1168 imx6_pcie->pcie_aux = devm_clk_get(dev, "pcie_aux"); in imx6_pcie_probe()
1169 if (IS_ERR(imx6_pcie->pcie_aux)) in imx6_pcie_probe()
1170 return dev_err_probe(dev, PTR_ERR(imx6_pcie->pcie_aux), in imx6_pcie_probe()
1175 imx6_pcie->controller_id = 1; in imx6_pcie_probe()
1177 imx6_pcie->pciephy_reset = devm_reset_control_get_exclusive(dev, in imx6_pcie_probe()
1179 if (IS_ERR(imx6_pcie->pciephy_reset)) { in imx6_pcie_probe()
1181 return PTR_ERR(imx6_pcie->pciephy_reset); in imx6_pcie_probe()
1184 imx6_pcie->apps_reset = devm_reset_control_get_exclusive(dev, in imx6_pcie_probe()
1186 if (IS_ERR(imx6_pcie->apps_reset)) { in imx6_pcie_probe()
1188 return PTR_ERR(imx6_pcie->apps_reset); in imx6_pcie_probe()
1193 imx6_pcie->pcie_aux = devm_clk_get(dev, "pcie_aux"); in imx6_pcie_probe()
1194 if (IS_ERR(imx6_pcie->pcie_aux)) in imx6_pcie_probe()
1195 return dev_err_probe(dev, PTR_ERR(imx6_pcie->pcie_aux), in imx6_pcie_probe()
1197 imx6_pcie->apps_reset = devm_reset_control_get_exclusive(dev, in imx6_pcie_probe()
1199 if (IS_ERR(imx6_pcie->apps_reset)) in imx6_pcie_probe()
1200 return dev_err_probe(dev, PTR_ERR(imx6_pcie->apps_reset), in imx6_pcie_probe()
1203 imx6_pcie->phy = devm_phy_get(dev, "pcie-phy"); in imx6_pcie_probe()
1204 if (IS_ERR(imx6_pcie->phy)) in imx6_pcie_probe()
1205 return dev_err_probe(dev, PTR_ERR(imx6_pcie->phy), in imx6_pcie_probe()
1213 if (imx6_pcie->phy == NULL) { in imx6_pcie_probe()
1214 imx6_pcie->pcie_phy = devm_clk_get(dev, "pcie_phy"); in imx6_pcie_probe()
1215 if (IS_ERR(imx6_pcie->pcie_phy)) in imx6_pcie_probe()
1216 return dev_err_probe(dev, PTR_ERR(imx6_pcie->pcie_phy), in imx6_pcie_probe()
1222 imx6_pcie->turnoff_reset = devm_reset_control_get_optional_exclusive(dev, "turnoff"); in imx6_pcie_probe()
1223 if (IS_ERR(imx6_pcie->turnoff_reset)) { in imx6_pcie_probe()
1225 return PTR_ERR(imx6_pcie->turnoff_reset); in imx6_pcie_probe()
1229 imx6_pcie->iomuxc_gpr = in imx6_pcie_probe()
1230 syscon_regmap_lookup_by_compatible(imx6_pcie->drvdata->gpr); in imx6_pcie_probe()
1231 if (IS_ERR(imx6_pcie->iomuxc_gpr)) { in imx6_pcie_probe()
1233 return PTR_ERR(imx6_pcie->iomuxc_gpr); in imx6_pcie_probe()
1238 &imx6_pcie->tx_deemph_gen1)) in imx6_pcie_probe()
1239 imx6_pcie->tx_deemph_gen1 = 0; in imx6_pcie_probe()
1242 &imx6_pcie->tx_deemph_gen2_3p5db)) in imx6_pcie_probe()
1243 imx6_pcie->tx_deemph_gen2_3p5db = 0; in imx6_pcie_probe()
1246 &imx6_pcie->tx_deemph_gen2_6db)) in imx6_pcie_probe()
1247 imx6_pcie->tx_deemph_gen2_6db = 20; in imx6_pcie_probe()
1250 &imx6_pcie->tx_swing_full)) in imx6_pcie_probe()
1251 imx6_pcie->tx_swing_full = 127; in imx6_pcie_probe()
1254 &imx6_pcie->tx_swing_low)) in imx6_pcie_probe()
1255 imx6_pcie->tx_swing_low = 127; in imx6_pcie_probe()
1261 imx6_pcie->vpcie = devm_regulator_get_optional(&pdev->dev, "vpcie"); in imx6_pcie_probe()
1262 if (IS_ERR(imx6_pcie->vpcie)) { in imx6_pcie_probe()
1263 if (PTR_ERR(imx6_pcie->vpcie) != -ENODEV) in imx6_pcie_probe()
1264 return PTR_ERR(imx6_pcie->vpcie); in imx6_pcie_probe()
1265 imx6_pcie->vpcie = NULL; in imx6_pcie_probe()
1268 imx6_pcie->vph = devm_regulator_get_optional(&pdev->dev, "vph"); in imx6_pcie_probe()
1269 if (IS_ERR(imx6_pcie->vph)) { in imx6_pcie_probe()
1270 if (PTR_ERR(imx6_pcie->vph) != -ENODEV) in imx6_pcie_probe()
1271 return PTR_ERR(imx6_pcie->vph); in imx6_pcie_probe()
1272 imx6_pcie->vph = NULL; in imx6_pcie_probe()
1275 platform_set_drvdata(pdev, imx6_pcie); in imx6_pcie_probe()
1297 struct imx6_pcie *imx6_pcie = platform_get_drvdata(pdev); in imx6_pcie_shutdown() local
1300 imx6_pcie_assert_core_reset(imx6_pcie); in imx6_pcie_shutdown()
1385 struct imx6_pcie *imx6_pcie = to_imx6_pcie(pci); in imx6_pcie_quirk() local
1391 if (imx6_pcie->drvdata->dbi_length) { in imx6_pcie_quirk()
1392 dev->cfg_size = imx6_pcie->drvdata->dbi_length; in imx6_pcie_quirk()