drivers/pci/controller/dwc/pci-imx6.c
1002
if (!(imx_pcie->drvdata->flags &
drivers/pci/controller/dwc/pci-imx6.c
1044
ret = imx_pcie_wait_for_speed_change(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1059
imx_pcie_reset_phy(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1071
static int imx_pcie_add_lut(struct imx_pcie *imx_pcie, u16 rid, u8 sid)
drivers/pci/controller/dwc/pci-imx6.c
1073
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
1084
guard(mutex)(&imx_pcie->lock);
drivers/pci/controller/dwc/pci-imx6.c
1092
regmap_write(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
1094
regmap_read(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA1, &data1);
drivers/pci/controller/dwc/pci-imx6.c
1102
regmap_read(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA2, &data2);
drivers/pci/controller/dwc/pci-imx6.c
1119
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA1, data1);
drivers/pci/controller/dwc/pci-imx6.c
1121
if (imx_pcie->drvdata->mode == DW_PCIE_EP_TYPE)
drivers/pci/controller/dwc/pci-imx6.c
1126
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA2, data2);
drivers/pci/controller/dwc/pci-imx6.c
1128
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_ACSCTRL, free);
drivers/pci/controller/dwc/pci-imx6.c
1133
static void imx_pcie_remove_lut(struct imx_pcie *imx_pcie, u16 rid)
drivers/pci/controller/dwc/pci-imx6.c
1138
guard(mutex)(&imx_pcie->lock);
drivers/pci/controller/dwc/pci-imx6.c
1141
regmap_write(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
1143
regmap_read(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA2, &data2);
drivers/pci/controller/dwc/pci-imx6.c
1145
regmap_write(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
1147
regmap_write(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
1149
regmap_write(imx_pcie->iomuxc_gpr,
drivers/pci/controller/dwc/pci-imx6.c
1157
static int imx_pcie_add_lut_by_rid(struct imx_pcie *imx_pcie, u32 rid)
drivers/pci/controller/dwc/pci-imx6.c
1161
struct device *dev = imx_pcie->pci->dev;
drivers/pci/controller/dwc/pci-imx6.c
1235
return imx_pcie_add_lut(imx_pcie, rid, sid);
drivers/pci/controller/dwc/pci-imx6.c
1240
struct imx_pcie *imx_pcie = to_imx_pcie(to_dw_pcie_from_pp(bridge->sysdata));
drivers/pci/controller/dwc/pci-imx6.c
1242
return imx_pcie_add_lut_by_rid(imx_pcie, pci_dev_id(pdev));
drivers/pci/controller/dwc/pci-imx6.c
1248
struct imx_pcie *imx_pcie;
drivers/pci/controller/dwc/pci-imx6.c
1250
imx_pcie = to_imx_pcie(to_dw_pcie_from_pp(bridge->sysdata));
drivers/pci/controller/dwc/pci-imx6.c
1251
imx_pcie_remove_lut(imx_pcie, pci_dev_id(pdev));
drivers/pci/controller/dwc/pci-imx6.c
1254
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
1296
static void imx_pcie_assert_perst(struct imx_pcie *imx_pcie, bool assert)
drivers/pci/controller/dwc/pci-imx6.c
1298
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
1325
struct imx_pcie *imx_pcie = to_imx_pcie(pci);
drivers/pci/controller/dwc/pci-imx6.c
1342
ret = imx_pcie_parse_legacy_binding(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1348
imx_pcie_assert_perst(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
1351
if (imx_pcie->vpcie_aux && !imx_pcie->vpcie_aux_enabled) {
drivers/pci/controller/dwc/pci-imx6.c
1352
ret = regulator_enable(imx_pcie->vpcie_aux);
drivers/pci/controller/dwc/pci-imx6.c
1358
imx_pcie->vpcie_aux_enabled = true;
drivers/pci/controller/dwc/pci-imx6.c
1361
imx_pcie->vpcie_aux);
drivers/pci/controller/dwc/pci-imx6.c
1367
if (imx_pcie->vpcie) {
drivers/pci/controller/dwc/pci-imx6.c
1368
ret = regulator_enable(imx_pcie->vpcie);
drivers/pci/controller/dwc/pci-imx6.c
1388
ret = imx_pcie_clk_enable(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1394
if (pp->bridge && imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_LUT)) {
drivers/pci/controller/dwc/pci-imx6.c
1399
if (imx_pcie->drvdata->select_ref_clk_src)
drivers/pci/controller/dwc/pci-imx6.c
1400
imx_pcie->drvdata->select_ref_clk_src(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1402
imx_pcie_assert_core_reset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1404
if (imx_pcie->drvdata->init_phy)
drivers/pci/controller/dwc/pci-imx6.c
1405
imx_pcie->drvdata->init_phy(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1407
imx_pcie_configure_type(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1409
if (imx_pcie->phy) {
drivers/pci/controller/dwc/pci-imx6.c
1410
ret = phy_init(imx_pcie->phy);
drivers/pci/controller/dwc/pci-imx6.c
1416
ret = phy_set_mode_ext(imx_pcie->phy, PHY_MODE_PCIE,
drivers/pci/controller/dwc/pci-imx6.c
1417
imx_pcie->drvdata->mode == DW_PCIE_EP_TYPE ?
drivers/pci/controller/dwc/pci-imx6.c
142
int (*select_ref_clk_src)(struct imx_pcie *pcie);
drivers/pci/controller/dwc/pci-imx6.c
1424
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
1434
imx_pcie_deassert_core_reset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1435
imx_pcie_assert_perst(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
1437
if (imx_pcie->drvdata->wait_pll_lock) {
drivers/pci/controller/dwc/pci-imx6.c
1438
ret = imx_pcie->drvdata->wait_pll_lock(imx_pcie);
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
1443
imx_setup_phy_mpll(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1448
phy_power_off(imx_pcie->phy);
drivers/pci/controller/dwc/pci-imx6.c
145
int (*core_reset)(struct imx_pcie *pcie, bool assert);
drivers/pci/controller/dwc/pci-imx6.c
1450
phy_exit(imx_pcie->phy);
drivers/pci/controller/dwc/pci-imx6.c
1452
imx_pcie_clk_disable(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1459
if (imx_pcie->vpcie)
drivers/pci/controller/dwc/pci-imx6.c
146
int (*wait_pll_lock)(struct imx_pcie *pcie);
drivers/pci/controller/dwc/pci-imx6.c
1460
regulator_disable(imx_pcie->vpcie);
drivers/pci/controller/dwc/pci-imx6.c
1467
struct imx_pcie *imx_pcie = to_imx_pcie(pci);
drivers/pci/controller/dwc/pci-imx6.c
1469
if (imx_pcie->phy) {
drivers/pci/controller/dwc/pci-imx6.c
147
void (*clr_clkreq_override)(struct imx_pcie *pcie);
drivers/pci/controller/dwc/pci-imx6.c
1470
if (phy_power_off(imx_pcie->phy))
drivers/pci/controller/dwc/pci-imx6.c
1472
phy_exit(imx_pcie->phy);
drivers/pci/controller/dwc/pci-imx6.c
1474
imx_pcie_clk_disable(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1477
if (imx_pcie->vpcie)
drivers/pci/controller/dwc/pci-imx6.c
1478
regulator_disable(imx_pcie->vpcie);
drivers/pci/controller/dwc/pci-imx6.c
1484
struct imx_pcie *imx_pcie = to_imx_pcie(pci);
drivers/pci/controller/dwc/pci-imx6.c
1487
if (imx_pcie->drvdata->flags & IMX_PCIE_FLAG_8GT_ECN_ERR051586) {
drivers/pci/controller/dwc/pci-imx6.c
1507
if (dw_pcie_link_up(pci) && imx_pcie->supports_clkreq) {
drivers/pci/controller/dwc/pci-imx6.c
1508
if (imx_pcie->drvdata->clr_clkreq_override)
drivers/pci/controller/dwc/pci-imx6.c
1509
imx_pcie->drvdata->clr_clkreq_override(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1521
struct imx_pcie *imx_pcie = to_imx_pcie(pci);
drivers/pci/controller/dwc/pci-imx6.c
1523
regmap_set_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12, IMX6SX_GPR12_PCIE_PM_TURN_OFF);
drivers/pci/controller/dwc/pci-imx6.c
1524
regmap_clear_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12, IMX6SX_GPR12_PCIE_PM_TURN_OFF);
drivers/pci/controller/dwc/pci-imx6.c
1608
struct imx_pcie *imx_pcie = to_imx_pcie(pci);
drivers/pci/controller/dwc/pci-imx6.c
1610
return imx_pcie->drvdata->epc_features;
drivers/pci/controller/dwc/pci-imx6.c
1618
static int imx_add_pcie_ep(struct imx_pcie *imx_pcie,
drivers/pci/controller/dwc/pci-imx6.c
1623
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
1631
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_SUPPORT_64BIT))
drivers/pci/controller/dwc/pci-imx6.c
1634
ep->page_size = imx_pcie->drvdata->epc_features->align;
drivers/pci/controller/dwc/pci-imx6.c
1655
static void imx_pcie_msi_save_restore(struct imx_pcie *imx_pcie, bool save)
drivers/pci/controller/dwc/pci-imx6.c
1659
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
1665
imx_pcie->msi_ctrl = val;
drivers/pci/controller/dwc/pci-imx6.c
1668
val = imx_pcie->msi_ctrl;
drivers/pci/controller/dwc/pci-imx6.c
1675
static void imx_pcie_lut_save(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
1681
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_ACSCTRL,
drivers/pci/controller/dwc/pci-imx6.c
1683
regmap_read(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA1, &data1);
drivers/pci/controller/dwc/pci-imx6.c
1684
regmap_read(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA2, &data2);
drivers/pci/controller/dwc/pci-imx6.c
1686
imx_pcie->luts[i].data1 = data1;
drivers/pci/controller/dwc/pci-imx6.c
1687
imx_pcie->luts[i].data2 = data2;
drivers/pci/controller/dwc/pci-imx6.c
1689
imx_pcie->luts[i].data1 = 0;
drivers/pci/controller/dwc/pci-imx6.c
1690
imx_pcie->luts[i].data2 = 0;
drivers/pci/controller/dwc/pci-imx6.c
1695
static void imx_pcie_lut_restore(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
1700
if ((imx_pcie->luts[i].data1 & IMX95_PE0_LUT_VLD) == 0)
drivers/pci/controller/dwc/pci-imx6.c
1703
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA1,
drivers/pci/controller/dwc/pci-imx6.c
1704
imx_pcie->luts[i].data1);
drivers/pci/controller/dwc/pci-imx6.c
1705
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA2,
drivers/pci/controller/dwc/pci-imx6.c
1706
imx_pcie->luts[i].data2);
drivers/pci/controller/dwc/pci-imx6.c
1707
regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_ACSCTRL, i);
drivers/pci/controller/dwc/pci-imx6.c
1713
struct imx_pcie *imx_pcie = dev_get_drvdata(dev);
drivers/pci/controller/dwc/pci-imx6.c
1715
if (!(imx_pcie->drvdata->flags & IMX_PCIE_FLAG_SUPPORTS_SUSPEND))
drivers/pci/controller/dwc/pci-imx6.c
1718
imx_pcie_msi_save_restore(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
1719
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_LUT))
drivers/pci/controller/dwc/pci-imx6.c
1720
imx_pcie_lut_save(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1721
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_BROKEN_SUSPEND)) {
drivers/pci/controller/dwc/pci-imx6.c
1727
imx_pcie_assert_core_reset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1728
imx_pcie_assert_perst(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
1729
imx_pcie->drvdata->enable_ref_clk(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
1731
return dw_pcie_suspend_noirq(imx_pcie->pci);
drivers/pci/controller/dwc/pci-imx6.c
1740
struct imx_pcie *imx_pcie = dev_get_drvdata(dev);
drivers/pci/controller/dwc/pci-imx6.c
1742
if (!(imx_pcie->drvdata->flags & IMX_PCIE_FLAG_SUPPORTS_SUSPEND))
drivers/pci/controller/dwc/pci-imx6.c
1745
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_BROKEN_SUSPEND)) {
drivers/pci/controller/dwc/pci-imx6.c
1746
ret = imx_pcie->drvdata->enable_ref_clk(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
1749
imx_pcie_deassert_core_reset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1750
imx_pcie_assert_perst(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
1757
ret = dw_pcie_setup_rc(&imx_pcie->pci->pp);
drivers/pci/controller/dwc/pci-imx6.c
1761
ret = dw_pcie_resume_noirq(imx_pcie->pci);
drivers/pci/controller/dwc/pci-imx6.c
1765
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_LUT))
drivers/pci/controller/dwc/pci-imx6.c
1766
imx_pcie_lut_restore(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1767
imx_pcie_msi_save_restore(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
1781
struct imx_pcie *imx_pcie;
drivers/pci/controller/dwc/pci-imx6.c
1786
imx_pcie = devm_kzalloc(dev, sizeof(*imx_pcie), GFP_KERNEL);
drivers/pci/controller/dwc/pci-imx6.c
1787
if (!imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
1797
imx_pcie->pci = pci;
drivers/pci/controller/dwc/pci-imx6.c
1798
imx_pcie->drvdata = of_device_get_match_data(dev);
drivers/pci/controller/dwc/pci-imx6.c
1800
mutex_init(&imx_pcie->lock);
drivers/pci/controller/dwc/pci-imx6.c
1802
if (imx_pcie->drvdata->ops)
drivers/pci/controller/dwc/pci-imx6.c
1803
pci->pp.ops = imx_pcie->drvdata->ops;
drivers/pci/controller/dwc/pci-imx6.c
1818
imx_pcie->phy_base = devm_ioremap_resource(dev, &res);
drivers/pci/controller/dwc/pci-imx6.c
1819
if (IS_ERR(imx_pcie->phy_base))
drivers/pci/controller/dwc/pci-imx6.c
1820
return PTR_ERR(imx_pcie->phy_base);
drivers/pci/controller/dwc/pci-imx6.c
1824
imx_pcie->num_clks = devm_clk_bulk_get_all(dev, &imx_pcie->clks);
drivers/pci/controller/dwc/pci-imx6.c
1825
if (imx_pcie->num_clks < 0)
drivers/pci/controller/dwc/pci-imx6.c
1826
return dev_err_probe(dev, imx_pcie->num_clks,
drivers/pci/controller/dwc/pci-imx6.c
1828
for (i = 0; i < imx_pcie->num_clks; i++)
drivers/pci/controller/dwc/pci-imx6.c
1829
if (strncmp(imx_pcie->clks[i].id, "extref", 6) == 0)
drivers/pci/controller/dwc/pci-imx6.c
1830
imx_pcie->enable_ext_refclk = true;
drivers/pci/controller/dwc/pci-imx6.c
1832
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_PHYDRV)) {
drivers/pci/controller/dwc/pci-imx6.c
1833
imx_pcie->phy = devm_phy_get(dev, "pcie-phy");
drivers/pci/controller/dwc/pci-imx6.c
1834
if (IS_ERR(imx_pcie->phy))
drivers/pci/controller/dwc/pci-imx6.c
1835
return dev_err_probe(dev, PTR_ERR(imx_pcie->phy),
drivers/pci/controller/dwc/pci-imx6.c
1839
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_APP_RESET)) {
drivers/pci/controller/dwc/pci-imx6.c
1840
imx_pcie->apps_reset = devm_reset_control_get_exclusive(dev, "apps");
drivers/pci/controller/dwc/pci-imx6.c
1841
if (IS_ERR(imx_pcie->apps_reset))
drivers/pci/controller/dwc/pci-imx6.c
1842
return dev_err_probe(dev, PTR_ERR(imx_pcie->apps_reset),
drivers/pci/controller/dwc/pci-imx6.c
1846
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_PHY_RESET)) {
drivers/pci/controller/dwc/pci-imx6.c
1847
imx_pcie->pciephy_reset = devm_reset_control_get_exclusive(dev, "pciephy");
drivers/pci/controller/dwc/pci-imx6.c
1848
if (IS_ERR(imx_pcie->pciephy_reset))
drivers/pci/controller/dwc/pci-imx6.c
1849
return dev_err_probe(dev, PTR_ERR(imx_pcie->pciephy_reset),
drivers/pci/controller/dwc/pci-imx6.c
1853
switch (imx_pcie->drvdata->variant) {
drivers/pci/controller/dwc/pci-imx6.c
1860
imx_pcie->controller_id = domain;
drivers/pci/controller/dwc/pci-imx6.c
1866
if (imx_pcie->drvdata->gpr) {
drivers/pci/controller/dwc/pci-imx6.c
1868
imx_pcie->iomuxc_gpr =
drivers/pci/controller/dwc/pci-imx6.c
1869
syscon_regmap_lookup_by_compatible(imx_pcie->drvdata->gpr);
drivers/pci/controller/dwc/pci-imx6.c
1870
if (IS_ERR(imx_pcie->iomuxc_gpr))
drivers/pci/controller/dwc/pci-imx6.c
1871
return dev_err_probe(dev, PTR_ERR(imx_pcie->iomuxc_gpr),
drivers/pci/controller/dwc/pci-imx6.c
1875
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_SERDES)) {
drivers/pci/controller/dwc/pci-imx6.c
1888
imx_pcie->iomuxc_gpr = devm_regmap_init_mmio(dev, off, ®map_config);
drivers/pci/controller/dwc/pci-imx6.c
1889
if (IS_ERR(imx_pcie->iomuxc_gpr))
drivers/pci/controller/dwc/pci-imx6.c
1890
return dev_err_probe(dev, PTR_ERR(imx_pcie->iomuxc_gpr),
drivers/pci/controller/dwc/pci-imx6.c
1896
&imx_pcie->tx_deemph_gen1))
drivers/pci/controller/dwc/pci-imx6.c
1897
imx_pcie->tx_deemph_gen1 = 0;
drivers/pci/controller/dwc/pci-imx6.c
1900
&imx_pcie->tx_deemph_gen2_3p5db))
drivers/pci/controller/dwc/pci-imx6.c
1901
imx_pcie->tx_deemph_gen2_3p5db = 0;
drivers/pci/controller/dwc/pci-imx6.c
1904
&imx_pcie->tx_deemph_gen2_6db))
drivers/pci/controller/dwc/pci-imx6.c
1905
imx_pcie->tx_deemph_gen2_6db = 20;
drivers/pci/controller/dwc/pci-imx6.c
1908
&imx_pcie->tx_swing_full))
drivers/pci/controller/dwc/pci-imx6.c
1909
imx_pcie->tx_swing_full = 127;
drivers/pci/controller/dwc/pci-imx6.c
1912
&imx_pcie->tx_swing_low))
drivers/pci/controller/dwc/pci-imx6.c
1913
imx_pcie->tx_swing_low = 127;
drivers/pci/controller/dwc/pci-imx6.c
1918
imx_pcie->supports_clkreq = of_property_read_bool(node, "supports-clkreq");
drivers/pci/controller/dwc/pci-imx6.c
1920
imx_pcie->vpcie_aux = devm_regulator_get_optional(&pdev->dev,
drivers/pci/controller/dwc/pci-imx6.c
1922
if (IS_ERR(imx_pcie->vpcie_aux)) {
drivers/pci/controller/dwc/pci-imx6.c
1923
if (PTR_ERR(imx_pcie->vpcie_aux) != -ENODEV)
drivers/pci/controller/dwc/pci-imx6.c
1924
return PTR_ERR(imx_pcie->vpcie_aux);
drivers/pci/controller/dwc/pci-imx6.c
1925
imx_pcie->vpcie_aux = NULL;
drivers/pci/controller/dwc/pci-imx6.c
1928
imx_pcie->vpcie = devm_regulator_get_optional(&pdev->dev, "vpcie");
drivers/pci/controller/dwc/pci-imx6.c
1929
if (IS_ERR(imx_pcie->vpcie)) {
drivers/pci/controller/dwc/pci-imx6.c
1930
if (PTR_ERR(imx_pcie->vpcie) != -ENODEV)
drivers/pci/controller/dwc/pci-imx6.c
1931
return PTR_ERR(imx_pcie->vpcie);
drivers/pci/controller/dwc/pci-imx6.c
1932
imx_pcie->vpcie = NULL;
drivers/pci/controller/dwc/pci-imx6.c
1935
imx_pcie->vph = devm_regulator_get_optional(&pdev->dev, "vph");
drivers/pci/controller/dwc/pci-imx6.c
1936
if (IS_ERR(imx_pcie->vph)) {
drivers/pci/controller/dwc/pci-imx6.c
1937
if (PTR_ERR(imx_pcie->vph) != -ENODEV)
drivers/pci/controller/dwc/pci-imx6.c
1938
return PTR_ERR(imx_pcie->vph);
drivers/pci/controller/dwc/pci-imx6.c
1939
imx_pcie->vph = NULL;
drivers/pci/controller/dwc/pci-imx6.c
1942
platform_set_drvdata(pdev, imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1949
if (imx_pcie->drvdata->mode == DW_PCIE_EP_TYPE) {
drivers/pci/controller/dwc/pci-imx6.c
1950
ret = imx_add_pcie_ep(imx_pcie, pdev);
drivers/pci/controller/dwc/pci-imx6.c
1958
imx_pcie_add_lut_by_rid(imx_pcie, 0);
drivers/pci/controller/dwc/pci-imx6.c
1960
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_SKIP_L23_READY))
drivers/pci/controller/dwc/pci-imx6.c
1962
if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_KEEP_MSI_CAP))
drivers/pci/controller/dwc/pci-imx6.c
1983
struct imx_pcie *imx_pcie = platform_get_drvdata(pdev);
drivers/pci/controller/dwc/pci-imx6.c
1986
imx_pcie_assert_core_reset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
1987
imx_pcie_assert_perst(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
2221
struct imx_pcie *imx_pcie = to_imx_pcie(pci);
drivers/pci/controller/dwc/pci-imx6.c
2227
if (imx_pcie->drvdata->dbi_length) {
drivers/pci/controller/dwc/pci-imx6.c
2228
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
685
regmap_clear_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1, IMX6Q_GPR1_PCIE_TEST_PD);
drivers/pci/controller/dwc/pci-imx6.c
693
regmap_set_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1, IMX6Q_GPR1_PCIE_REF_CLK_EN);
drivers/pci/controller/dwc/pci-imx6.c
695
regmap_clear_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1, IMX6Q_GPR1_PCIE_REF_CLK_EN);
drivers/pci/controller/dwc/pci-imx6.c
696
regmap_set_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1, IMX6Q_GPR1_PCIE_TEST_PD);
drivers/pci/controller/dwc/pci-imx6.c
702
static void imx8mm_pcie_clkreq_override(struct imx_pcie *imx_pcie, bool enable)
drivers/pci/controller/dwc/pci-imx6.c
704
int offset = imx_pcie_grp_offset(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
706
regmap_update_bits(imx_pcie->iomuxc_gpr, offset,
drivers/pci/controller/dwc/pci-imx6.c
709
regmap_update_bits(imx_pcie->iomuxc_gpr, offset,
drivers/pci/controller/dwc/pci-imx6.c
714
static int imx8mm_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
drivers/pci/controller/dwc/pci-imx6.c
716
imx8mm_pcie_clkreq_override(imx_pcie, enable);
drivers/pci/controller/dwc/pci-imx6.c
720
static int imx7d_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
drivers/pci/controller/dwc/pci-imx6.c
722
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12,
drivers/pci/controller/dwc/pci-imx6.c
728
static void imx95_pcie_clkreq_override(struct imx_pcie *imx_pcie, bool enable)
drivers/pci/controller/dwc/pci-imx6.c
730
regmap_update_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_SS_RW_REG_1,
drivers/pci/controller/dwc/pci-imx6.c
733
regmap_update_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_SS_RW_REG_1,
drivers/pci/controller/dwc/pci-imx6.c
738
static int imx95_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
drivers/pci/controller/dwc/pci-imx6.c
740
bool ext = imx_pcie->enable_ext_refclk;
drivers/pci/controller/dwc/pci-imx6.c
742
imx95_pcie_clkreq_override(imx_pcie, enable);
drivers/pci/controller/dwc/pci-imx6.c
759
regmap_update_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_SS_RW_REG_0,
drivers/pci/controller/dwc/pci-imx6.c
766
static void imx8mm_pcie_clr_clkreq_override(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
768
imx8mm_pcie_clkreq_override(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
771
static void imx95_pcie_clr_clkreq_override(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
773
imx95_pcie_clkreq_override(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
776
static int imx_pcie_clk_enable(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
778
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
782
ret = clk_bulk_prepare_enable(imx_pcie->num_clks, imx_pcie->clks);
drivers/pci/controller/dwc/pci-imx6.c
786
if (imx_pcie->drvdata->enable_ref_clk) {
drivers/pci/controller/dwc/pci-imx6.c
787
ret = imx_pcie->drvdata->enable_ref_clk(imx_pcie, true);
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
804
static void imx_pcie_clk_disable(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
806
if (imx_pcie->drvdata->enable_ref_clk)
drivers/pci/controller/dwc/pci-imx6.c
807
imx_pcie->drvdata->enable_ref_clk(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
808
clk_bulk_disable_unprepare(imx_pcie->num_clks, imx_pcie->clks);
drivers/pci/controller/dwc/pci-imx6.c
811
static int imx6sx_pcie_core_reset(struct imx_pcie *imx_pcie, bool assert)
drivers/pci/controller/dwc/pci-imx6.c
814
regmap_set_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12,
drivers/pci/controller/dwc/pci-imx6.c
817
regmap_clear_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12,
drivers/pci/controller/dwc/pci-imx6.c
821
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR5, IMX6SX_GPR5_PCIE_BTNRST_RESET,
drivers/pci/controller/dwc/pci-imx6.c
826
static int imx6qp_pcie_core_reset(struct imx_pcie *imx_pcie, bool assert)
drivers/pci/controller/dwc/pci-imx6.c
828
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1, IMX6Q_GPR1_PCIE_SW_RST,
drivers/pci/controller/dwc/pci-imx6.c
836
static int imx6q_pcie_core_reset(struct imx_pcie *imx_pcie, bool assert)
drivers/pci/controller/dwc/pci-imx6.c
841
regmap_set_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1, IMX6Q_GPR1_PCIE_TEST_PD);
drivers/pci/controller/dwc/pci-imx6.c
842
regmap_set_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1, IMX6Q_GPR1_PCIE_REF_CLK_EN);
drivers/pci/controller/dwc/pci-imx6.c
847
static int imx7d_pcie_core_reset(struct imx_pcie *imx_pcie, bool assert)
drivers/pci/controller/dwc/pci-imx6.c
849
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
878
if (likely(imx_pcie->phy_base)) {
drivers/pci/controller/dwc/pci-imx6.c
880
writel(PCIE_PHY_CMN_REG4_DCC_FB_EN, imx_pcie->phy_base + PCIE_PHY_CMN_REG4);
drivers/pci/controller/dwc/pci-imx6.c
883
imx_pcie->phy_base + PCIE_PHY_CMN_REG24);
drivers/pci/controller/dwc/pci-imx6.c
885
writel(PCIE_PHY_CMN_REG26_ATT_MODE, imx_pcie->phy_base + PCIE_PHY_CMN_REG26);
drivers/pci/controller/dwc/pci-imx6.c
889
imx7d_pcie_wait_for_phy_pll_lock(imx_pcie);
drivers/pci/controller/dwc/pci-imx6.c
893
static int imx95_pcie_core_reset(struct imx_pcie *imx_pcie, bool assert)
drivers/pci/controller/dwc/pci-imx6.c
910
regmap_set_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_RST_CTRL,
drivers/pci/controller/dwc/pci-imx6.c
917
regmap_read_bypassed(imx_pcie->iomuxc_gpr, IMX95_PCIE_RST_CTRL,
drivers/pci/controller/dwc/pci-imx6.c
920
regmap_clear_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_RST_CTRL,
drivers/pci/controller/dwc/pci-imx6.c
922
regmap_read_bypassed(imx_pcie->iomuxc_gpr, IMX95_PCIE_RST_CTRL,
drivers/pci/controller/dwc/pci-imx6.c
930
static void imx_pcie_assert_core_reset(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
932
reset_control_assert(imx_pcie->pciephy_reset);
drivers/pci/controller/dwc/pci-imx6.c
934
if (imx_pcie->drvdata->core_reset)
drivers/pci/controller/dwc/pci-imx6.c
935
imx_pcie->drvdata->core_reset(imx_pcie, true);
drivers/pci/controller/dwc/pci-imx6.c
938
static void imx_pcie_deassert_core_reset(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
940
reset_control_deassert(imx_pcie->pciephy_reset);
drivers/pci/controller/dwc/pci-imx6.c
942
if (imx_pcie->drvdata->core_reset)
drivers/pci/controller/dwc/pci-imx6.c
943
imx_pcie->drvdata->core_reset(imx_pcie, false);
drivers/pci/controller/dwc/pci-imx6.c
946
static int imx_pcie_wait_for_speed_change(struct imx_pcie *imx_pcie)
drivers/pci/controller/dwc/pci-imx6.c
948
struct dw_pcie *pci = imx_pcie->pci;
drivers/pci/controller/dwc/pci-imx6.c
967
struct imx_pcie *imx_pcie = dev_get_drvdata(dev);
drivers/pci/controller/dwc/pci-imx6.c
968
const struct imx_pcie_drvdata *drvdata = imx_pcie->drvdata;
drivers/pci/controller/dwc/pci-imx6.c
969
u8 offset = dw_pcie_find_capability(imx_pcie->pci, PCI_CAP_ID_EXP);
drivers/pci/controller/dwc/pci-imx6.c
972
tmp = dw_pcie_readl_dbi(imx_pcie->pci, offset + PCI_EXP_LNKCAP);
drivers/pci/controller/dwc/pci-imx6.c
973
phy_set_speed(imx_pcie->phy, FIELD_GET(PCI_EXP_LNKCAP_SLS, tmp));
drivers/pci/controller/dwc/pci-imx6.c
975
regmap_update_bits(imx_pcie->iomuxc_gpr, drvdata->ltssm_off, drvdata->ltssm_mask,
drivers/pci/controller/dwc/pci-imx6.c
978
reset_control_deassert(imx_pcie->apps_reset);
drivers/pci/controller/dwc/pci-imx6.c
983
struct imx_pcie *imx_pcie = dev_get_drvdata(dev);
drivers/pci/controller/dwc/pci-imx6.c
984
const struct imx_pcie_drvdata *drvdata = imx_pcie->drvdata;
drivers/pci/controller/dwc/pci-imx6.c
986
phy_set_speed(imx_pcie->phy, 0);
drivers/pci/controller/dwc/pci-imx6.c
988
regmap_update_bits(imx_pcie->iomuxc_gpr, drvdata->ltssm_off,
drivers/pci/controller/dwc/pci-imx6.c
991
reset_control_assert(imx_pcie->apps_reset);
drivers/pci/controller/dwc/pci-imx6.c
996
struct imx_pcie *imx_pcie = to_imx_pcie(pci);