drivers/pci/controller/dwc/pci-imx6.c
1005
if (!(imx_pcie->drvdata->flags &
drivers/pci/controller/dwc/pci-imx6.c
1047
ret = imx_pcie_wait_for_speed_change(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1062
imx_pcie_reset_phy(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1074
static int imx_pcie_add_lut(struct imx_pcie *imx_pcie, u16 rid, u8 sid)
drivers/pci/controller/dwc/pci-imx6.c
1076
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
1087
guard(mutex)(&imx_pcie->lock);
drivers/pci/controller/dwc/pci-imx6.c
1095
regmap_write(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
1097
regmap_read(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA1, &data1);
drivers/pci/controller/dwc/pci-imx6.c
1105
regmap_read(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA2, &data2);
drivers/pci/controller/dwc/pci-imx6.c
1122
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA1, data1);
drivers/pci/controller/dwc/pci-imx6.c
1124
if (imx_pcie->drvdata->mode == DW_PCIE_EP_TYPE)
drivers/pci/controller/dwc/pci-imx6.c
1129
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA2, data2);
drivers/pci/controller/dwc/pci-imx6.c
1131
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_ACSCTRL, free);
drivers/pci/controller/dwc/pci-imx6.c
1136
static void imx_pcie_remove_lut(struct imx_pcie *imx_pcie, u16 rid)
drivers/pci/controller/dwc/pci-imx6.c
1141
guard(mutex)(&imx_pcie->lock);
drivers/pci/controller/dwc/pci-imx6.c
1144
regmap_write(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
1146
regmap_read(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA2, &data2);
drivers/pci/controller/dwc/pci-imx6.c
1148
regmap_write(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
1150
regmap_write(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
1152
regmap_write(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
1160
static int imx_pcie_add_lut_by_rid(struct imx_pcie *imx_pcie, u32 rid)
drivers/pci/controller/dwc/pci-imx6.c
1164
struct device *dev = imx_pcie->pci->dev;
drivers/pci/controller/dwc/pci-imx6.c
1238
return imx_pcie_add_lut(imx_pcie, rid, sid);
drivers/pci/controller/dwc/pci-imx6.c
1243
struct imx_pcie *imx_pcie = to_imx_pcie(to_dw_pcie_from_pp(bridge->sysdata));
drivers/pci/controller/dwc/pci-imx6.c
1245
return imx_pcie_add_lut_by_rid(imx_pcie, pci_dev_id(pdev));
drivers/pci/controller/dwc/pci-imx6.c
1251
struct imx_pcie *imx_pcie;
drivers/pci/controller/dwc/pci-imx6.c
1253
imx_pcie = to_imx_pcie(to_dw_pcie_from_pp(bridge->sysdata));
drivers/pci/controller/dwc/pci-imx6.c
1254
imx_pcie_remove_lut(imx_pcie, pci_dev_id(pdev));
drivers/pci/controller/dwc/pci-imx6.c
1257
static int imx_pcie_parse_legacy_binding(struct imx_pcie *pcie)
drivers/pci/controller/dwc/pci-imx6.c
129
struct imx_pcie;
drivers/pci/controller/dwc/pci-imx6.c
1299
static void imx_pcie_assert_perst(struct imx_pcie *imx_pcie, bool assert)
drivers/pci/controller/dwc/pci-imx6.c
1301
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
1328
struct imx_pcie *imx_pcie = to_imx_pcie(pci);
drivers/pci/controller/dwc/pci-imx6.c
1345
ret = imx_pcie_parse_legacy_binding(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1351
imx_pcie_assert_perst(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
1354
if (imx_pcie->vpcie_aux && !imx_pcie->vpcie_aux_enabled) {
drivers/pci/controller/dwc/pci-imx6.c
1355
ret = regulator_enable(imx_pcie->vpcie_aux);
drivers/pci/controller/dwc/pci-imx6.c
1361
imx_pcie->vpcie_aux_enabled = true;
drivers/pci/controller/dwc/pci-imx6.c
1364
imx_pcie->vpcie_aux);
drivers/pci/controller/dwc/pci-imx6.c
1370
if (imx_pcie->vpcie) {
drivers/pci/controller/dwc/pci-imx6.c
1371
ret = regulator_enable(imx_pcie->vpcie);
drivers/pci/controller/dwc/pci-imx6.c
1391
ret = imx_pcie_clk_enable(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1397
if (pp->bridge && imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_LUT)) {
drivers/pci/controller/dwc/pci-imx6.c
1402
if (imx_pcie->drvdata->select_ref_clk_src)
drivers/pci/controller/dwc/pci-imx6.c
1403
imx_pcie->drvdata->select_ref_clk_src(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1405
imx_pcie_assert_core_reset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1407
if (imx_pcie->drvdata->init_phy)
drivers/pci/controller/dwc/pci-imx6.c
1408
imx_pcie->drvdata->init_phy(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1410
imx_pcie_configure_type(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1412
if (imx_pcie->phy) {
drivers/pci/controller/dwc/pci-imx6.c
1413
ret = phy_init(imx_pcie->phy);
drivers/pci/controller/dwc/pci-imx6.c
1419
ret = phy_set_mode_ext(imx_pcie->phy, PHY_MODE_PCIE,
drivers/pci/controller/dwc/pci-imx6.c
142
int (*select_ref_clk_src)(struct imx_pcie *pcie);
drivers/pci/controller/dwc/pci-imx6.c
1420
imx_pcie->drvdata->mode == DW_PCIE_EP_TYPE ?
drivers/pci/controller/dwc/pci-imx6.c
1427
ret = phy_power_on(imx_pcie->phy);
drivers/pci/controller/dwc/pci-imx6.c
143
int (*init_phy)(struct imx_pcie *pcie);
drivers/pci/controller/dwc/pci-imx6.c
1437
imx_pcie_deassert_core_reset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1438
imx_pcie_assert_perst(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
144
int (*enable_ref_clk)(struct imx_pcie *pcie, bool enable);
drivers/pci/controller/dwc/pci-imx6.c
1440
if (imx_pcie->drvdata->wait_pll_lock) {
drivers/pci/controller/dwc/pci-imx6.c
1441
ret = imx_pcie->drvdata->wait_pll_lock(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1446
imx_setup_phy_mpll(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
145
int (*core_reset)(struct imx_pcie *pcie, bool assert);
drivers/pci/controller/dwc/pci-imx6.c
1451
imx_pcie_assert_core_reset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1452
phy_power_off(imx_pcie->phy);
drivers/pci/controller/dwc/pci-imx6.c
1454
phy_exit(imx_pcie->phy);
drivers/pci/controller/dwc/pci-imx6.c
1456
imx_pcie_clk_disable(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
146
int (*wait_pll_lock)(struct imx_pcie *pcie);
drivers/pci/controller/dwc/pci-imx6.c
1463
if (imx_pcie->vpcie)
drivers/pci/controller/dwc/pci-imx6.c
1464
regulator_disable(imx_pcie->vpcie);
drivers/pci/controller/dwc/pci-imx6.c
147
void (*clr_clkreq_override)(struct imx_pcie *pcie);
drivers/pci/controller/dwc/pci-imx6.c
1471
struct imx_pcie *imx_pcie = to_imx_pcie(pci);
drivers/pci/controller/dwc/pci-imx6.c
1473
imx_pcie_assert_core_reset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1474
if (imx_pcie->phy) {
drivers/pci/controller/dwc/pci-imx6.c
1475
if (phy_power_off(imx_pcie->phy))
drivers/pci/controller/dwc/pci-imx6.c
1477
phy_exit(imx_pcie->phy);
drivers/pci/controller/dwc/pci-imx6.c
1479
imx_pcie_clk_disable(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1482
if (imx_pcie->vpcie)
drivers/pci/controller/dwc/pci-imx6.c
1483
regulator_disable(imx_pcie->vpcie);
drivers/pci/controller/dwc/pci-imx6.c
1489
struct imx_pcie *imx_pcie = to_imx_pcie(pci);
drivers/pci/controller/dwc/pci-imx6.c
1492
if (imx_pcie->drvdata->flags & IMX_PCIE_FLAG_8GT_ECN_ERR051586) {
drivers/pci/controller/dwc/pci-imx6.c
1512
if (dw_pcie_link_up(pci) && imx_pcie->supports_clkreq) {
drivers/pci/controller/dwc/pci-imx6.c
1513
if (imx_pcie->drvdata->clr_clkreq_override)
drivers/pci/controller/dwc/pci-imx6.c
1514
imx_pcie->drvdata->clr_clkreq_override(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1526
struct imx_pcie *imx_pcie = to_imx_pcie(pci);
drivers/pci/controller/dwc/pci-imx6.c
1528
regmap_set_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12, IMX6SX_GPR12_PCIE_PM_TURN_OFF);
drivers/pci/controller/dwc/pci-imx6.c
1529
regmap_clear_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12, IMX6SX_GPR12_PCIE_PM_TURN_OFF);
drivers/pci/controller/dwc/pci-imx6.c
1613
struct imx_pcie *imx_pcie = to_imx_pcie(pci);
drivers/pci/controller/dwc/pci-imx6.c
1615
return imx_pcie->drvdata->epc_features;
drivers/pci/controller/dwc/pci-imx6.c
1623
static int imx_add_pcie_ep(struct imx_pcie *imx_pcie,
drivers/pci/controller/dwc/pci-imx6.c
1628
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
1636
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_SUPPORT_64BIT))
drivers/pci/controller/dwc/pci-imx6.c
1639
ep->page_size = imx_pcie->drvdata->epc_features->align;
drivers/pci/controller/dwc/pci-imx6.c
1660
static void imx_pcie_msi_save_restore(struct imx_pcie *imx_pcie, bool save)
drivers/pci/controller/dwc/pci-imx6.c
1664
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
1670
imx_pcie->msi_ctrl = val;
drivers/pci/controller/dwc/pci-imx6.c
1673
val = imx_pcie->msi_ctrl;
drivers/pci/controller/dwc/pci-imx6.c
1680
static void imx_pcie_lut_save(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
1686
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_ACSCTRL,
drivers/pci/controller/dwc/pci-imx6.c
1688
regmap_read(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA1, &data1);
drivers/pci/controller/dwc/pci-imx6.c
1689
regmap_read(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA2, &data2);
drivers/pci/controller/dwc/pci-imx6.c
1691
imx_pcie->luts[i].data1 = data1;
drivers/pci/controller/dwc/pci-imx6.c
1692
imx_pcie->luts[i].data2 = data2;
drivers/pci/controller/dwc/pci-imx6.c
1694
imx_pcie->luts[i].data1 = 0;
drivers/pci/controller/dwc/pci-imx6.c
1695
imx_pcie->luts[i].data2 = 0;
drivers/pci/controller/dwc/pci-imx6.c
1700
static void imx_pcie_lut_restore(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
1705
if ((imx_pcie->luts[i].data1 & IMX95_PE0_LUT_VLD) == 0)
drivers/pci/controller/dwc/pci-imx6.c
1708
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA1,
drivers/pci/controller/dwc/pci-imx6.c
1709
imx_pcie->luts[i].data1);
drivers/pci/controller/dwc/pci-imx6.c
1710
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA2,
drivers/pci/controller/dwc/pci-imx6.c
1711
imx_pcie->luts[i].data2);
drivers/pci/controller/dwc/pci-imx6.c
1712
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_ACSCTRL, i);
drivers/pci/controller/dwc/pci-imx6.c
1718
struct imx_pcie *imx_pcie = dev_get_drvdata(dev);
drivers/pci/controller/dwc/pci-imx6.c
1720
if (!(imx_pcie->drvdata->flags & IMX_PCIE_FLAG_SUPPORTS_SUSPEND))
drivers/pci/controller/dwc/pci-imx6.c
1723
imx_pcie_msi_save_restore(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
1724
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_LUT))
drivers/pci/controller/dwc/pci-imx6.c
1725
imx_pcie_lut_save(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1726
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_BROKEN_SUSPEND)) {
drivers/pci/controller/dwc/pci-imx6.c
1732
imx_pcie_assert_core_reset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1733
imx_pcie_assert_perst(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
1734
imx_pcie->drvdata->enable_ref_clk(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
1736
return dw_pcie_suspend_noirq(imx_pcie->pci);
drivers/pci/controller/dwc/pci-imx6.c
1745
struct imx_pcie *imx_pcie = dev_get_drvdata(dev);
drivers/pci/controller/dwc/pci-imx6.c
1747
if (!(imx_pcie->drvdata->flags & IMX_PCIE_FLAG_SUPPORTS_SUSPEND))
drivers/pci/controller/dwc/pci-imx6.c
1750
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_BROKEN_SUSPEND)) {
drivers/pci/controller/dwc/pci-imx6.c
1751
ret = imx_pcie->drvdata->enable_ref_clk(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
1754
imx_pcie_deassert_core_reset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1755
imx_pcie_assert_perst(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
1762
ret = dw_pcie_setup_rc(&imx_pcie->pci->pp);
drivers/pci/controller/dwc/pci-imx6.c
1766
ret = dw_pcie_resume_noirq(imx_pcie->pci);
drivers/pci/controller/dwc/pci-imx6.c
1770
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_LUT))
drivers/pci/controller/dwc/pci-imx6.c
1771
imx_pcie_lut_restore(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1772
imx_pcie_msi_save_restore(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
1786
struct imx_pcie *imx_pcie;
drivers/pci/controller/dwc/pci-imx6.c
1791
imx_pcie = devm_kzalloc(dev, sizeof(*imx_pcie), GFP_KERNEL);
drivers/pci/controller/dwc/pci-imx6.c
1792
if (!imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
1802
imx_pcie->pci = pci;
drivers/pci/controller/dwc/pci-imx6.c
1803
imx_pcie->drvdata = of_device_get_match_data(dev);
drivers/pci/controller/dwc/pci-imx6.c
1805
mutex_init(&imx_pcie->lock);
drivers/pci/controller/dwc/pci-imx6.c
1807
if (imx_pcie->drvdata->ops)
drivers/pci/controller/dwc/pci-imx6.c
1808
pci->pp.ops = imx_pcie->drvdata->ops;
drivers/pci/controller/dwc/pci-imx6.c
1823
imx_pcie->phy_base = devm_ioremap_resource(dev, &res);
drivers/pci/controller/dwc/pci-imx6.c
1824
if (IS_ERR(imx_pcie->phy_base))
drivers/pci/controller/dwc/pci-imx6.c
1825
return PTR_ERR(imx_pcie->phy_base);
drivers/pci/controller/dwc/pci-imx6.c
1829
imx_pcie->num_clks = devm_clk_bulk_get_all(dev, &imx_pcie->clks);
drivers/pci/controller/dwc/pci-imx6.c
1830
if (imx_pcie->num_clks < 0)
drivers/pci/controller/dwc/pci-imx6.c
1831
return dev_err_probe(dev, imx_pcie->num_clks,
drivers/pci/controller/dwc/pci-imx6.c
1833
for (i = 0; i < imx_pcie->num_clks; i++)
drivers/pci/controller/dwc/pci-imx6.c
1834
if (strncmp(imx_pcie->clks[i].id, "extref", 6) == 0)
drivers/pci/controller/dwc/pci-imx6.c
1835
imx_pcie->enable_ext_refclk = true;
drivers/pci/controller/dwc/pci-imx6.c
1837
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_PHYDRV)) {
drivers/pci/controller/dwc/pci-imx6.c
1838
imx_pcie->phy = devm_phy_get(dev, "pcie-phy");
drivers/pci/controller/dwc/pci-imx6.c
1839
if (IS_ERR(imx_pcie->phy))
drivers/pci/controller/dwc/pci-imx6.c
1840
return dev_err_probe(dev, PTR_ERR(imx_pcie->phy),
drivers/pci/controller/dwc/pci-imx6.c
1844
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_APP_RESET)) {
drivers/pci/controller/dwc/pci-imx6.c
1845
imx_pcie->apps_reset = devm_reset_control_get_exclusive(dev, "apps");
drivers/pci/controller/dwc/pci-imx6.c
1846
if (IS_ERR(imx_pcie->apps_reset))
drivers/pci/controller/dwc/pci-imx6.c
1847
return dev_err_probe(dev, PTR_ERR(imx_pcie->apps_reset),
drivers/pci/controller/dwc/pci-imx6.c
1851
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_PHY_RESET)) {
drivers/pci/controller/dwc/pci-imx6.c
1852
imx_pcie->pciephy_reset = devm_reset_control_get_exclusive(dev, "pciephy");
drivers/pci/controller/dwc/pci-imx6.c
1853
if (IS_ERR(imx_pcie->pciephy_reset))
drivers/pci/controller/dwc/pci-imx6.c
1854
return dev_err_probe(dev, PTR_ERR(imx_pcie->pciephy_reset),
drivers/pci/controller/dwc/pci-imx6.c
1858
switch (imx_pcie->drvdata->variant) {
drivers/pci/controller/dwc/pci-imx6.c
1865
imx_pcie->controller_id = domain;
drivers/pci/controller/dwc/pci-imx6.c
1871
if (imx_pcie->drvdata->gpr) {
drivers/pci/controller/dwc/pci-imx6.c
1873
imx_pcie->iomuxc_gpr =
drivers/pci/controller/dwc/pci-imx6.c
1874
syscon_regmap_lookup_by_compatible(imx_pcie->drvdata->gpr);
drivers/pci/controller/dwc/pci-imx6.c
1875
if (IS_ERR(imx_pcie->iomuxc_gpr))
drivers/pci/controller/dwc/pci-imx6.c
1876
return dev_err_probe(dev, PTR_ERR(imx_pcie->iomuxc_gpr),
drivers/pci/controller/dwc/pci-imx6.c
1880
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_SERDES)) {
drivers/pci/controller/dwc/pci-imx6.c
1893
imx_pcie->iomuxc_gpr = devm_regmap_init_mmio(dev, off, ®map_config);
drivers/pci/controller/dwc/pci-imx6.c
1894
if (IS_ERR(imx_pcie->iomuxc_gpr))
drivers/pci/controller/dwc/pci-imx6.c
1895
return dev_err_probe(dev, PTR_ERR(imx_pcie->iomuxc_gpr),
drivers/pci/controller/dwc/pci-imx6.c
1901
&imx_pcie->tx_deemph_gen1))
drivers/pci/controller/dwc/pci-imx6.c
1902
imx_pcie->tx_deemph_gen1 = 0;
drivers/pci/controller/dwc/pci-imx6.c
1905
&imx_pcie->tx_deemph_gen2_3p5db))
drivers/pci/controller/dwc/pci-imx6.c
1906
imx_pcie->tx_deemph_gen2_3p5db = 0;
drivers/pci/controller/dwc/pci-imx6.c
1909
&imx_pcie->tx_deemph_gen2_6db))
drivers/pci/controller/dwc/pci-imx6.c
1910
imx_pcie->tx_deemph_gen2_6db = 20;
drivers/pci/controller/dwc/pci-imx6.c
1913
&imx_pcie->tx_swing_full))
drivers/pci/controller/dwc/pci-imx6.c
1914
imx_pcie->tx_swing_full = 127;
drivers/pci/controller/dwc/pci-imx6.c
1917
&imx_pcie->tx_swing_low))
drivers/pci/controller/dwc/pci-imx6.c
1918
imx_pcie->tx_swing_low = 127;
drivers/pci/controller/dwc/pci-imx6.c
1923
imx_pcie->supports_clkreq = of_property_read_bool(node, "supports-clkreq");
drivers/pci/controller/dwc/pci-imx6.c
1925
imx_pcie->vpcie_aux = devm_regulator_get_optional(&pdev->dev,
drivers/pci/controller/dwc/pci-imx6.c
1927
if (IS_ERR(imx_pcie->vpcie_aux)) {
drivers/pci/controller/dwc/pci-imx6.c
1928
if (PTR_ERR(imx_pcie->vpcie_aux) != -ENODEV)
drivers/pci/controller/dwc/pci-imx6.c
1929
return PTR_ERR(imx_pcie->vpcie_aux);
drivers/pci/controller/dwc/pci-imx6.c
1930
imx_pcie->vpcie_aux = NULL;
drivers/pci/controller/dwc/pci-imx6.c
1933
imx_pcie->vpcie = devm_regulator_get_optional(&pdev->dev, "vpcie");
drivers/pci/controller/dwc/pci-imx6.c
1934
if (IS_ERR(imx_pcie->vpcie)) {
drivers/pci/controller/dwc/pci-imx6.c
1935
if (PTR_ERR(imx_pcie->vpcie) != -ENODEV)
drivers/pci/controller/dwc/pci-imx6.c
1936
return PTR_ERR(imx_pcie->vpcie);
drivers/pci/controller/dwc/pci-imx6.c
1937
imx_pcie->vpcie = NULL;
drivers/pci/controller/dwc/pci-imx6.c
1940
imx_pcie->vph = devm_regulator_get_optional(&pdev->dev, "vph");
drivers/pci/controller/dwc/pci-imx6.c
1941
if (IS_ERR(imx_pcie->vph)) {
drivers/pci/controller/dwc/pci-imx6.c
1942
if (PTR_ERR(imx_pcie->vph) != -ENODEV)
drivers/pci/controller/dwc/pci-imx6.c
1943
return PTR_ERR(imx_pcie->vph);
drivers/pci/controller/dwc/pci-imx6.c
1944
imx_pcie->vph = NULL;
drivers/pci/controller/dwc/pci-imx6.c
1947
platform_set_drvdata(pdev, imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1954
if (imx_pcie->drvdata->mode == DW_PCIE_EP_TYPE) {
drivers/pci/controller/dwc/pci-imx6.c
1955
ret = imx_add_pcie_ep(imx_pcie, pdev);
drivers/pci/controller/dwc/pci-imx6.c
1963
imx_pcie_add_lut_by_rid(imx_pcie, 0);
drivers/pci/controller/dwc/pci-imx6.c
1965
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_SKIP_L23_READY))
drivers/pci/controller/dwc/pci-imx6.c
1967
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_KEEP_MSI_CAP))
drivers/pci/controller/dwc/pci-imx6.c
1988
struct imx_pcie *imx_pcie = platform_get_drvdata(pdev);
drivers/pci/controller/dwc/pci-imx6.c
1991
imx_pcie_assert_core_reset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1992
imx_pcie_assert_perst(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
2229
struct imx_pcie *imx_pcie = to_imx_pcie(pci);
drivers/pci/controller/dwc/pci-imx6.c
2235
if (imx_pcie->drvdata->dbi_length) {
drivers/pci/controller/dwc/pci-imx6.c
2236
dev->cfg_size = imx_pcie->drvdata->dbi_length;
drivers/pci/controller/dwc/pci-imx6.c
243
static unsigned int imx_pcie_grp_offset(const struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
245
WARN_ON(imx_pcie->drvdata->variant != IMX8MQ &&
drivers/pci/controller/dwc/pci-imx6.c
246
imx_pcie->drvdata->variant != IMX8MQ_EP &&
drivers/pci/controller/dwc/pci-imx6.c
247
imx_pcie->drvdata->variant != IMX8MM &&
drivers/pci/controller/dwc/pci-imx6.c
248
imx_pcie->drvdata->variant != IMX8MM_EP &&
drivers/pci/controller/dwc/pci-imx6.c
249
imx_pcie->drvdata->variant != IMX8MP &&
drivers/pci/controller/dwc/pci-imx6.c
250
imx_pcie->drvdata->variant != IMX8MP_EP);
drivers/pci/controller/dwc/pci-imx6.c
251
return imx_pcie->controller_id == 1 ? IOMUXC_GPR16 : IOMUXC_GPR14;
drivers/pci/controller/dwc/pci-imx6.c
254
static int imx95_pcie_select_ref_clk_src(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
256
bool ext = imx_pcie->enable_ext_refclk;
drivers/pci/controller/dwc/pci-imx6.c
265
regmap_update_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_PHY_GEN_CTRL,
drivers/pci/controller/dwc/pci-imx6.c
272
static int imx95_pcie_init_phy(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
284
regmap_set_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_SS_RW_REG_1,
drivers/pci/controller/dwc/pci-imx6.c
287
regmap_update_bits(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
295
static void imx_pcie_configure_type(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
297
const struct imx_pcie_drvdata *drvdata = imx_pcie->drvdata;
drivers/pci/controller/dwc/pci-imx6.c
305
id = imx_pcie->controller_id;
drivers/pci/controller/dwc/pci-imx6.c
318
regmap_update_bits(imx_pcie->iomuxc_gpr, drvdata->mode_off[id], mask, val);
drivers/pci/controller/dwc/pci-imx6.c
321
static int pcie_phy_poll_ack(struct imx_pcie *imx_pcie, bool exp_val)
drivers/pci/controller/dwc/pci-imx6.c
323
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
342
static int pcie_phy_wait_ack(struct imx_pcie *imx_pcie, int addr)
drivers/pci/controller/dwc/pci-imx6.c
344
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
354
ret = pcie_phy_poll_ack(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
361
return pcie_phy_poll_ack(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
365
static int pcie_phy_read(struct imx_pcie *imx_pcie, int addr, u16 *data)
drivers/pci/controller/dwc/pci-imx6.c
367
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
371
ret = pcie_phy_wait_ack(imx_pcie, addr);
drivers/pci/controller/dwc/pci-imx6.c
379
ret = pcie_phy_poll_ack(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
388
return pcie_phy_poll_ack(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
391
static int pcie_phy_write(struct imx_pcie *imx_pcie, int addr, u16 data)
drivers/pci/controller/dwc/pci-imx6.c
393
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
399
ret = pcie_phy_wait_ack(imx_pcie, addr);
drivers/pci/controller/dwc/pci-imx6.c
410
ret = pcie_phy_poll_ack(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
419
ret = pcie_phy_poll_ack(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
428
ret = pcie_phy_poll_ack(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
437
ret = pcie_phy_poll_ack(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
446
static int imx8mq_pcie_init_phy(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
449
regmap_update_bits(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
450
imx_pcie_grp_offset(imx_pcie),
drivers/pci/controller/dwc/pci-imx6.c
458
if (imx_pcie->vph && regulator_get_voltage(imx_pcie->vph) > 3000000)
drivers/pci/controller/dwc/pci-imx6.c
459
regmap_update_bits(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
460
imx_pcie_grp_offset(imx_pcie),
drivers/pci/controller/dwc/pci-imx6.c
467
static int imx_pcie_init_phy(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
469
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12,
drivers/pci/controller/dwc/pci-imx6.c
473
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12,
drivers/pci/controller/dwc/pci-imx6.c
476
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR8,
drivers/pci/controller/dwc/pci-imx6.c
478
imx_pcie->tx_deemph_gen1 << 0);
drivers/pci/controller/dwc/pci-imx6.c
479
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR8,
drivers/pci/controller/dwc/pci-imx6.c
481
imx_pcie->tx_deemph_gen2_3p5db << 6);
drivers/pci/controller/dwc/pci-imx6.c
482
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR8,
drivers/pci/controller/dwc/pci-imx6.c
484
imx_pcie->tx_deemph_gen2_6db << 12);
drivers/pci/controller/dwc/pci-imx6.c
485
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR8,
drivers/pci/controller/dwc/pci-imx6.c
487
imx_pcie->tx_swing_full << 18);
drivers/pci/controller/dwc/pci-imx6.c
488
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR8,
drivers/pci/controller/dwc/pci-imx6.c
490
imx_pcie->tx_swing_low << 25);
drivers/pci/controller/dwc/pci-imx6.c
494
static int imx6sx_pcie_init_phy(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
496
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12,
drivers/pci/controller/dwc/pci-imx6.c
499
return imx_pcie_init_phy(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
502
static void imx7d_pcie_wait_for_phy_pll_lock(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
505
struct device *dev = imx_pcie->pci->dev;
drivers/pci/controller/dwc/pci-imx6.c
507
if (regmap_read_poll_timeout(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
515
static int imx95_pcie_wait_for_phy_pll_lock(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
518
struct device *dev = imx_pcie->pci->dev;
drivers/pci/controller/dwc/pci-imx6.c
520
if (regmap_read_poll_timeout(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
532
static int imx_setup_phy_mpll(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
538
struct clk_bulk_data *clks = imx_pcie->clks;
drivers/pci/controller/dwc/pci-imx6.c
540
if (!(imx_pcie->drvdata->flags & IMX_PCIE_FLAG_IMX_PHY))
drivers/pci/controller/dwc/pci-imx6.c
543
for (i = 0; i < imx_pcie->num_clks; i++)
drivers/pci/controller/dwc/pci-imx6.c
563
dev_err(imx_pcie->pci->dev,
drivers/pci/controller/dwc/pci-imx6.c
568
pcie_phy_read(imx_pcie, PCIE_PHY_MPLL_OVRD_IN_LO, &val);
drivers/pci/controller/dwc/pci-imx6.c
573
pcie_phy_write(imx_pcie, PCIE_PHY_MPLL_OVRD_IN_LO, val);
drivers/pci/controller/dwc/pci-imx6.c
575
pcie_phy_read(imx_pcie, PCIE_PHY_ATEOVRD, &val);
drivers/pci/controller/dwc/pci-imx6.c
580
pcie_phy_write(imx_pcie, PCIE_PHY_ATEOVRD, val);
drivers/pci/controller/dwc/pci-imx6.c
585
static void imx_pcie_reset_phy(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
589
if (!(imx_pcie->drvdata->flags & IMX_PCIE_FLAG_IMX_PHY))
drivers/pci/controller/dwc/pci-imx6.c
592
pcie_phy_read(imx_pcie, PHY_RX_OVRD_IN_LO, &tmp);
drivers/pci/controller/dwc/pci-imx6.c
595
pcie_phy_write(imx_pcie, PHY_RX_OVRD_IN_LO, tmp);
drivers/pci/controller/dwc/pci-imx6.c
599
pcie_phy_read(imx_pcie, PHY_RX_OVRD_IN_LO, &tmp);
drivers/pci/controller/dwc/pci-imx6.c
602
pcie_phy_write(imx_pcie, PHY_RX_OVRD_IN_LO, tmp);
drivers/pci/controller/dwc/pci-imx6.c
643
struct imx_pcie *imx_pcie = dev_get_drvdata(dev);
drivers/pci/controller/dwc/pci-imx6.c
650
imx_pcie->pd_pcie = dev_pm_domain_attach_by_name(dev, "pcie");
drivers/pci/controller/dwc/pci-imx6.c
651
if (IS_ERR(imx_pcie->pd_pcie))
drivers/pci/controller/dwc/pci-imx6.c
652
return PTR_ERR(imx_pcie->pd_pcie);
drivers/pci/controller/dwc/pci-imx6.c
654
if (!imx_pcie->pd_pcie)
drivers/pci/controller/dwc/pci-imx6.c
656
link = device_link_add(dev, imx_pcie->pd_pcie,
drivers/pci/controller/dwc/pci-imx6.c
665
imx_pcie->pd_pcie_phy = dev_pm_domain_attach_by_name(dev, "pcie_phy");
drivers/pci/controller/dwc/pci-imx6.c
666
if (IS_ERR(imx_pcie->pd_pcie_phy))
drivers/pci/controller/dwc/pci-imx6.c
667
return PTR_ERR(imx_pcie->pd_pcie_phy);
drivers/pci/controller/dwc/pci-imx6.c
669
link = device_link_add(dev, imx_pcie->pd_pcie_phy,
drivers/pci/controller/dwc/pci-imx6.c
681
static int imx6q_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
drivers/pci/controller/dwc/pci-imx6.c
684
regmap_set_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1,
drivers/pci/controller/dwc/pci-imx6.c
687
regmap_clear_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1,
drivers/pci/controller/dwc/pci-imx6.c
693
static void imx8mm_pcie_clkreq_override(struct imx_pcie *imx_pcie, bool enable)
drivers/pci/controller/dwc/pci-imx6.c
695
int offset = imx_pcie_grp_offset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
697
regmap_update_bits(imx_pcie->iomuxc_gpr, offset,
drivers/pci/controller/dwc/pci-imx6.c
700
regmap_update_bits(imx_pcie->iomuxc_gpr, offset,
drivers/pci/controller/dwc/pci-imx6.c
705
static int imx8mm_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
drivers/pci/controller/dwc/pci-imx6.c
707
imx8mm_pcie_clkreq_override(imx_pcie, enable);
drivers/pci/controller/dwc/pci-imx6.c
711
static int imx7d_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
drivers/pci/controller/dwc/pci-imx6.c
713
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12,
drivers/pci/controller/dwc/pci-imx6.c
719
static void imx95_pcie_clkreq_override(struct imx_pcie *imx_pcie, bool enable)
drivers/pci/controller/dwc/pci-imx6.c
721
regmap_update_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_SS_RW_REG_1,
drivers/pci/controller/dwc/pci-imx6.c
724
regmap_update_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_SS_RW_REG_1,
drivers/pci/controller/dwc/pci-imx6.c
729
static int imx95_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
drivers/pci/controller/dwc/pci-imx6.c
731
bool ext = imx_pcie->enable_ext_refclk;
drivers/pci/controller/dwc/pci-imx6.c
733
imx95_pcie_clkreq_override(imx_pcie, enable);
drivers/pci/controller/dwc/pci-imx6.c
750
regmap_update_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_SS_RW_REG_0,
drivers/pci/controller/dwc/pci-imx6.c
757
static void imx8mm_pcie_clr_clkreq_override(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
759
imx8mm_pcie_clkreq_override(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
762
static void imx95_pcie_clr_clkreq_override(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
764
imx95_pcie_clkreq_override(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
767
static int imx_pcie_clk_enable(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
769
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
773
ret = clk_bulk_prepare_enable(imx_pcie->num_clks, imx_pcie->clks);
drivers/pci/controller/dwc/pci-imx6.c
777
if (imx_pcie->drvdata->enable_ref_clk) {
drivers/pci/controller/dwc/pci-imx6.c
778
ret = imx_pcie->drvdata->enable_ref_clk(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
790
clk_bulk_disable_unprepare(imx_pcie->num_clks, imx_pcie->clks);
drivers/pci/controller/dwc/pci-imx6.c
795
static void imx_pcie_clk_disable(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
797
if (imx_pcie->drvdata->enable_ref_clk)
drivers/pci/controller/dwc/pci-imx6.c
798
imx_pcie->drvdata->enable_ref_clk(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
799
clk_bulk_disable_unprepare(imx_pcie->num_clks, imx_pcie->clks);
drivers/pci/controller/dwc/pci-imx6.c
802
static int imx6sx_pcie_core_reset(struct imx_pcie *imx_pcie, bool assert)
drivers/pci/controller/dwc/pci-imx6.c
805
regmap_set_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12,
drivers/pci/controller/dwc/pci-imx6.c
808
regmap_clear_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12,
drivers/pci/controller/dwc/pci-imx6.c
812
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR5, IMX6SX_GPR5_PCIE_BTNRST_RESET,
drivers/pci/controller/dwc/pci-imx6.c
817
static int imx6qp_pcie_core_reset(struct imx_pcie *imx_pcie, bool assert)
drivers/pci/controller/dwc/pci-imx6.c
820
regmap_set_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1,
drivers/pci/controller/dwc/pci-imx6.c
823
regmap_clear_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1,
drivers/pci/controller/dwc/pci-imx6.c
826
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1, IMX6Q_GPR1_PCIE_SW_RST,
drivers/pci/controller/dwc/pci-imx6.c
835
static int imx6q_pcie_core_reset(struct imx_pcie *imx_pcie, bool assert)
drivers/pci/controller/dwc/pci-imx6.c
838
regmap_set_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1,
drivers/pci/controller/dwc/pci-imx6.c
841
regmap_clear_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1,
drivers/pci/controller/dwc/pci-imx6.c
850
static int imx7d_pcie_core_reset(struct imx_pcie *imx_pcie, bool assert)
drivers/pci/controller/dwc/pci-imx6.c
852
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
881
if (likely(imx_pcie->phy_base)) {
drivers/pci/controller/dwc/pci-imx6.c
883
writel(PCIE_PHY_CMN_REG4_DCC_FB_EN, imx_pcie->phy_base + PCIE_PHY_CMN_REG4);
drivers/pci/controller/dwc/pci-imx6.c
886
imx_pcie->phy_base + PCIE_PHY_CMN_REG24);
drivers/pci/controller/dwc/pci-imx6.c
888
writel(PCIE_PHY_CMN_REG26_ATT_MODE, imx_pcie->phy_base + PCIE_PHY_CMN_REG26);
drivers/pci/controller/dwc/pci-imx6.c
892
imx7d_pcie_wait_for_phy_pll_lock(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
896
static int imx95_pcie_core_reset(struct imx_pcie *imx_pcie, bool assert)
drivers/pci/controller/dwc/pci-imx6.c
913
regmap_set_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_RST_CTRL,
drivers/pci/controller/dwc/pci-imx6.c
920
regmap_read_bypassed(imx_pcie->iomuxc_gpr, IMX95_PCIE_RST_CTRL,
drivers/pci/controller/dwc/pci-imx6.c
923
regmap_clear_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_RST_CTRL,
drivers/pci/controller/dwc/pci-imx6.c
925
regmap_read_bypassed(imx_pcie->iomuxc_gpr, IMX95_PCIE_RST_CTRL,
drivers/pci/controller/dwc/pci-imx6.c
933
static void imx_pcie_assert_core_reset(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
935
reset_control_assert(imx_pcie->pciephy_reset);
drivers/pci/controller/dwc/pci-imx6.c
937
if (imx_pcie->drvdata->core_reset)
drivers/pci/controller/dwc/pci-imx6.c
938
imx_pcie->drvdata->core_reset(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
941
static void imx_pcie_deassert_core_reset(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
943
reset_control_deassert(imx_pcie->pciephy_reset);
drivers/pci/controller/dwc/pci-imx6.c
945
if (imx_pcie->drvdata->core_reset)
drivers/pci/controller/dwc/pci-imx6.c
946
imx_pcie->drvdata->core_reset(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
949
static int imx_pcie_wait_for_speed_change(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
951
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
970
struct imx_pcie *imx_pcie = dev_get_drvdata(dev);
drivers/pci/controller/dwc/pci-imx6.c
971
const struct imx_pcie_drvdata *drvdata = imx_pcie->drvdata;
drivers/pci/controller/dwc/pci-imx6.c
972
u8 offset = dw_pcie_find_capability(imx_pcie->pci, PCI_CAP_ID_EXP);
drivers/pci/controller/dwc/pci-imx6.c
975
tmp = dw_pcie_readl_dbi(imx_pcie->pci, offset + PCI_EXP_LNKCAP);
drivers/pci/controller/dwc/pci-imx6.c
976
phy_set_speed(imx_pcie->phy, FIELD_GET(PCI_EXP_LNKCAP_SLS, tmp));
drivers/pci/controller/dwc/pci-imx6.c
978
regmap_update_bits(imx_pcie->iomuxc_gpr, drvdata->ltssm_off, drvdata->ltssm_mask,
drivers/pci/controller/dwc/pci-imx6.c
981
reset_control_deassert(imx_pcie->apps_reset);
drivers/pci/controller/dwc/pci-imx6.c
986
struct imx_pcie *imx_pcie = dev_get_drvdata(dev);
drivers/pci/controller/dwc/pci-imx6.c
987
const struct imx_pcie_drvdata *drvdata = imx_pcie->drvdata;
drivers/pci/controller/dwc/pci-imx6.c
989
phy_set_speed(imx_pcie->phy, 0);
drivers/pci/controller/dwc/pci-imx6.c
991
regmap_update_bits(imx_pcie->iomuxc_gpr, drvdata->ltssm_off,
drivers/pci/controller/dwc/pci-imx6.c
994
reset_control_assert(imx_pcie->apps_reset);
drivers/pci/controller/dwc/pci-imx6.c
999
struct imx_pcie *imx_pcie = to_imx_pcie(pci);