Lines Matching refs:pcie

209 	int (*get_resources)(struct qcom_pcie *pcie);
210 int (*init)(struct qcom_pcie *pcie);
211 int (*post_init)(struct qcom_pcie *pcie);
212 void (*deinit)(struct qcom_pcie *pcie);
213 void (*ltssm_enable)(struct qcom_pcie *pcie);
214 int (*config_sid)(struct qcom_pcie *pcie);
234 static void qcom_ep_reset_assert(struct qcom_pcie *pcie) in qcom_ep_reset_assert() argument
236 gpiod_set_value_cansleep(pcie->reset, 1); in qcom_ep_reset_assert()
240 static void qcom_ep_reset_deassert(struct qcom_pcie *pcie) in qcom_ep_reset_deassert() argument
244 gpiod_set_value_cansleep(pcie->reset, 0); in qcom_ep_reset_deassert()
250 struct qcom_pcie *pcie = to_qcom_pcie(pci); in qcom_pcie_start_link() local
253 if (pcie->cfg->ops->ltssm_enable) in qcom_pcie_start_link()
254 pcie->cfg->ops->ltssm_enable(pcie); in qcom_pcie_start_link()
259 static void qcom_pcie_2_1_0_ltssm_enable(struct qcom_pcie *pcie) in qcom_pcie_2_1_0_ltssm_enable() argument
264 val = readl(pcie->elbi + PCIE20_ELBI_SYS_CTRL); in qcom_pcie_2_1_0_ltssm_enable()
266 writel(val, pcie->elbi + PCIE20_ELBI_SYS_CTRL); in qcom_pcie_2_1_0_ltssm_enable()
269 static int qcom_pcie_get_resources_2_1_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_1_0() argument
271 struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; in qcom_pcie_get_resources_2_1_0()
272 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_1_0()
324 static void qcom_pcie_deinit_2_1_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_1_0() argument
326 struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; in qcom_pcie_deinit_2_1_0()
336 writel(1, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_deinit_2_1_0()
341 static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie) in qcom_pcie_init_2_1_0() argument
343 struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; in qcom_pcie_init_2_1_0()
344 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_1_0()
416 static int qcom_pcie_post_init_2_1_0(struct qcom_pcie *pcie) in qcom_pcie_post_init_2_1_0() argument
418 struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; in qcom_pcie_post_init_2_1_0()
419 struct dw_pcie *pci = pcie->pci; in qcom_pcie_post_init_2_1_0()
426 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_1_0()
428 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_1_0()
439 pcie->parf + PCIE20_PARF_PCS_DEEMPH); in qcom_pcie_post_init_2_1_0()
442 pcie->parf + PCIE20_PARF_PCS_SWING); in qcom_pcie_post_init_2_1_0()
443 writel(PHY_RX0_EQ(4), pcie->parf + PCIE20_PARF_CONFIG_BITS); in qcom_pcie_post_init_2_1_0()
448 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_1_0()
451 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_1_0()
455 val = readl(pcie->parf + PCIE20_PARF_PHY_REFCLK); in qcom_pcie_post_init_2_1_0()
460 writel(val, pcie->parf + PCIE20_PARF_PHY_REFCLK); in qcom_pcie_post_init_2_1_0()
474 static int qcom_pcie_get_resources_1_0_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_1_0_0() argument
476 struct qcom_pcie_resources_1_0_0 *res = &pcie->res.v1_0_0; in qcom_pcie_get_resources_1_0_0()
477 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_1_0_0()
504 static void qcom_pcie_deinit_1_0_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_1_0_0() argument
506 struct qcom_pcie_resources_1_0_0 *res = &pcie->res.v1_0_0; in qcom_pcie_deinit_1_0_0()
516 static int qcom_pcie_init_1_0_0(struct qcom_pcie *pcie) in qcom_pcie_init_1_0_0() argument
518 struct qcom_pcie_resources_1_0_0 *res = &pcie->res.v1_0_0; in qcom_pcie_init_1_0_0()
519 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_1_0_0()
574 static int qcom_pcie_post_init_1_0_0(struct qcom_pcie *pcie) in qcom_pcie_post_init_1_0_0() argument
577 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_post_init_1_0_0()
580 u32 val = readl(pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT); in qcom_pcie_post_init_1_0_0()
583 writel(val, pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT); in qcom_pcie_post_init_1_0_0()
589 static void qcom_pcie_2_3_2_ltssm_enable(struct qcom_pcie *pcie) in qcom_pcie_2_3_2_ltssm_enable() argument
594 val = readl(pcie->parf + PCIE20_PARF_LTSSM); in qcom_pcie_2_3_2_ltssm_enable()
596 writel(val, pcie->parf + PCIE20_PARF_LTSSM); in qcom_pcie_2_3_2_ltssm_enable()
599 static int qcom_pcie_get_resources_2_3_2(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_3_2() argument
601 struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; in qcom_pcie_get_resources_2_3_2()
602 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_3_2()
632 static void qcom_pcie_deinit_2_3_2(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_3_2() argument
634 struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; in qcom_pcie_deinit_2_3_2()
644 static int qcom_pcie_init_2_3_2(struct qcom_pcie *pcie) in qcom_pcie_init_2_3_2() argument
646 struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; in qcom_pcie_init_2_3_2()
647 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_3_2()
696 static int qcom_pcie_post_init_2_3_2(struct qcom_pcie *pcie) in qcom_pcie_post_init_2_3_2() argument
701 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_3_2()
703 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_3_2()
706 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_post_init_2_3_2()
709 val = readl(pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_post_init_2_3_2()
711 writel(val, pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_post_init_2_3_2()
713 val = readl(pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_post_init_2_3_2()
715 writel(val, pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_post_init_2_3_2()
717 val = readl(pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT_V2); in qcom_pcie_post_init_2_3_2()
719 writel(val, pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT_V2); in qcom_pcie_post_init_2_3_2()
724 static int qcom_pcie_get_resources_2_4_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_4_0() argument
726 struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0; in qcom_pcie_get_resources_2_4_0()
727 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_4_0()
807 static void qcom_pcie_deinit_2_4_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_4_0() argument
809 struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0; in qcom_pcie_deinit_2_4_0()
823 static int qcom_pcie_init_2_4_0(struct qcom_pcie *pcie) in qcom_pcie_init_2_4_0() argument
825 struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0; in qcom_pcie_init_2_4_0()
826 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_4_0()
975 static int qcom_pcie_post_init_2_4_0(struct qcom_pcie *pcie) in qcom_pcie_post_init_2_4_0() argument
980 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_4_0()
982 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_4_0()
985 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_post_init_2_4_0()
988 val = readl(pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_post_init_2_4_0()
990 writel(val, pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_post_init_2_4_0()
992 val = readl(pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_post_init_2_4_0()
994 writel(val, pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_post_init_2_4_0()
996 val = readl(pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT_V2); in qcom_pcie_post_init_2_4_0()
998 writel(val, pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT_V2); in qcom_pcie_post_init_2_4_0()
1003 static int qcom_pcie_get_resources_2_3_3(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_3_3() argument
1005 struct qcom_pcie_resources_2_3_3 *res = &pcie->res.v2_3_3; in qcom_pcie_get_resources_2_3_3()
1006 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_3_3()
1042 static void qcom_pcie_deinit_2_3_3(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_3_3() argument
1044 struct qcom_pcie_resources_2_3_3 *res = &pcie->res.v2_3_3; in qcom_pcie_deinit_2_3_3()
1053 static int qcom_pcie_init_2_3_3(struct qcom_pcie *pcie) in qcom_pcie_init_2_3_3() argument
1055 struct qcom_pcie_resources_2_3_3 *res = &pcie->res.v2_3_3; in qcom_pcie_init_2_3_3()
1056 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_3_3()
1136 static int qcom_pcie_post_init_2_3_3(struct qcom_pcie *pcie) in qcom_pcie_post_init_2_3_3() argument
1138 struct dw_pcie *pci = pcie->pci; in qcom_pcie_post_init_2_3_3()
1143 pcie->parf + PCIE20_v3_PARF_SLV_ADDR_SPACE_SIZE); in qcom_pcie_post_init_2_3_3()
1145 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_3_3()
1147 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_3_3()
1149 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_post_init_2_3_3()
1154 pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_post_init_2_3_3()
1155 writel(0, pcie->parf + PCIE20_PARF_Q2A_FLUSH); in qcom_pcie_post_init_2_3_3()
1171 static int qcom_pcie_get_resources_2_7_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_7_0() argument
1173 struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; in qcom_pcie_get_resources_2_7_0()
1174 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_7_0()
1222 static int qcom_pcie_init_2_7_0(struct qcom_pcie *pcie) in qcom_pcie_init_2_7_0() argument
1224 struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; in qcom_pcie_init_2_7_0()
1225 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_7_0()
1258 writel(DEVICE_TYPE_RC, pcie->parf + PCIE20_PARF_DEVICE_TYPE); in qcom_pcie_init_2_7_0()
1261 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_7_0()
1263 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_7_0()
1266 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_init_2_7_0()
1269 val = readl(pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_init_2_7_0()
1271 writel(val, pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_init_2_7_0()
1273 val = readl(pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_init_2_7_0()
1275 writel(val, pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_init_2_7_0()
1278 val = readl(pcie->parf + PCIE20_PARF_PM_CTRL); in qcom_pcie_init_2_7_0()
1280 writel(val, pcie->parf + PCIE20_PARF_PM_CTRL); in qcom_pcie_init_2_7_0()
1283 val = readl(pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT); in qcom_pcie_init_2_7_0()
1285 writel(val, pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT); in qcom_pcie_init_2_7_0()
1297 static void qcom_pcie_deinit_2_7_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_7_0() argument
1299 struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; in qcom_pcie_deinit_2_7_0()
1306 static int qcom_pcie_get_resources_2_9_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_9_0() argument
1308 struct qcom_pcie_resources_2_9_0 *res = &pcie->res.v2_9_0; in qcom_pcie_get_resources_2_9_0()
1309 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_9_0()
1330 static void qcom_pcie_deinit_2_9_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_9_0() argument
1332 struct qcom_pcie_resources_2_9_0 *res = &pcie->res.v2_9_0; in qcom_pcie_deinit_2_9_0()
1337 static int qcom_pcie_init_2_9_0(struct qcom_pcie *pcie) in qcom_pcie_init_2_9_0() argument
1339 struct qcom_pcie_resources_2_9_0 *res = &pcie->res.v2_9_0; in qcom_pcie_init_2_9_0()
1340 struct device *dev = pcie->pci->dev; in qcom_pcie_init_2_9_0()
1366 static int qcom_pcie_post_init_2_9_0(struct qcom_pcie *pcie) in qcom_pcie_post_init_2_9_0() argument
1368 struct dw_pcie *pci = pcie->pci; in qcom_pcie_post_init_2_9_0()
1374 pcie->parf + PCIE20_v3_PARF_SLV_ADDR_SPACE_SIZE); in qcom_pcie_post_init_2_9_0()
1376 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_9_0()
1378 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_9_0()
1380 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_post_init_2_9_0()
1382 writel(DEVICE_TYPE_RC, pcie->parf + PCIE20_PARF_DEVICE_TYPE); in qcom_pcie_post_init_2_9_0()
1384 pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_post_init_2_9_0()
1392 pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_post_init_2_9_0()
1394 writel(0, pcie->parf + PCIE20_PARF_Q2A_FLUSH); in qcom_pcie_post_init_2_9_0()
1407 writel(0, pcie->parf + PCIE20_PARF_BDF_TO_SID_TABLE_N + (4 * i)); in qcom_pcie_post_init_2_9_0()
1420 static int qcom_pcie_config_sid_sm8250(struct qcom_pcie *pcie) in qcom_pcie_config_sid_sm8250() argument
1429 void __iomem *bdf_to_sid_base = pcie->parf + PCIE20_PARF_BDF_TO_SID_TABLE_N; in qcom_pcie_config_sid_sm8250()
1430 struct device *dev = pcie->pci->dev; in qcom_pcie_config_sid_sm8250()
1494 struct qcom_pcie *pcie = to_qcom_pcie(pci); in qcom_pcie_host_init() local
1497 qcom_ep_reset_assert(pcie); in qcom_pcie_host_init()
1499 ret = pcie->cfg->ops->init(pcie); in qcom_pcie_host_init()
1503 ret = phy_set_mode_ext(pcie->phy, PHY_MODE_PCIE, PHY_MODE_PCIE_RC); in qcom_pcie_host_init()
1507 ret = phy_power_on(pcie->phy); in qcom_pcie_host_init()
1511 if (pcie->cfg->ops->post_init) { in qcom_pcie_host_init()
1512 ret = pcie->cfg->ops->post_init(pcie); in qcom_pcie_host_init()
1517 qcom_ep_reset_deassert(pcie); in qcom_pcie_host_init()
1519 if (pcie->cfg->ops->config_sid) { in qcom_pcie_host_init()
1520 ret = pcie->cfg->ops->config_sid(pcie); in qcom_pcie_host_init()
1528 qcom_ep_reset_assert(pcie); in qcom_pcie_host_init()
1530 phy_power_off(pcie->phy); in qcom_pcie_host_init()
1532 pcie->cfg->ops->deinit(pcie); in qcom_pcie_host_init()
1540 struct qcom_pcie *pcie = to_qcom_pcie(pci); in qcom_pcie_host_deinit() local
1542 qcom_ep_reset_assert(pcie); in qcom_pcie_host_deinit()
1543 phy_power_off(pcie->phy); in qcom_pcie_host_deinit()
1544 pcie->cfg->ops->deinit(pcie); in qcom_pcie_host_deinit()
1660 static int qcom_pcie_icc_init(struct qcom_pcie *pcie) in qcom_pcie_icc_init() argument
1662 struct dw_pcie *pci = pcie->pci; in qcom_pcie_icc_init()
1665 pcie->icc_mem = devm_of_icc_get(pci->dev, "pcie-mem"); in qcom_pcie_icc_init()
1666 if (IS_ERR(pcie->icc_mem)) in qcom_pcie_icc_init()
1667 return PTR_ERR(pcie->icc_mem); in qcom_pcie_icc_init()
1676 ret = icc_set_bw(pcie->icc_mem, 0, MBps_to_icc(250)); in qcom_pcie_icc_init()
1686 static void qcom_pcie_icc_update(struct qcom_pcie *pcie) in qcom_pcie_icc_update() argument
1688 struct dw_pcie *pci = pcie->pci; in qcom_pcie_icc_update()
1693 if (!pcie->icc_mem) in qcom_pcie_icc_update()
1721 ret = icc_set_bw(pcie->icc_mem, 0, width * bw); in qcom_pcie_icc_update()
1733 struct qcom_pcie *pcie; in qcom_pcie_probe() local
1743 pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); in qcom_pcie_probe()
1744 if (!pcie) in qcom_pcie_probe()
1760 pcie->pci = pci; in qcom_pcie_probe()
1762 pcie->cfg = pcie_cfg; in qcom_pcie_probe()
1764 pcie->reset = devm_gpiod_get_optional(dev, "perst", GPIOD_OUT_HIGH); in qcom_pcie_probe()
1765 if (IS_ERR(pcie->reset)) { in qcom_pcie_probe()
1766 ret = PTR_ERR(pcie->reset); in qcom_pcie_probe()
1770 pcie->parf = devm_platform_ioremap_resource_byname(pdev, "parf"); in qcom_pcie_probe()
1771 if (IS_ERR(pcie->parf)) { in qcom_pcie_probe()
1772 ret = PTR_ERR(pcie->parf); in qcom_pcie_probe()
1776 pcie->elbi = devm_platform_ioremap_resource_byname(pdev, "elbi"); in qcom_pcie_probe()
1777 if (IS_ERR(pcie->elbi)) { in qcom_pcie_probe()
1778 ret = PTR_ERR(pcie->elbi); in qcom_pcie_probe()
1782 pcie->phy = devm_phy_optional_get(dev, "pciephy"); in qcom_pcie_probe()
1783 if (IS_ERR(pcie->phy)) { in qcom_pcie_probe()
1784 ret = PTR_ERR(pcie->phy); in qcom_pcie_probe()
1788 ret = qcom_pcie_icc_init(pcie); in qcom_pcie_probe()
1792 ret = pcie->cfg->ops->get_resources(pcie); in qcom_pcie_probe()
1798 ret = phy_init(pcie->phy); in qcom_pcie_probe()
1802 platform_set_drvdata(pdev, pcie); in qcom_pcie_probe()
1810 qcom_pcie_icc_update(pcie); in qcom_pcie_probe()
1815 phy_exit(pcie->phy); in qcom_pcie_probe()