Lines Matching refs:pcie

186 	int (*get_resources)(struct qcom_pcie *pcie);
187 int (*init)(struct qcom_pcie *pcie);
188 int (*post_init)(struct qcom_pcie *pcie);
189 void (*deinit)(struct qcom_pcie *pcie);
190 void (*post_deinit)(struct qcom_pcie *pcie);
191 void (*ltssm_enable)(struct qcom_pcie *pcie);
192 int (*config_sid)(struct qcom_pcie *pcie);
213 static void qcom_ep_reset_assert(struct qcom_pcie *pcie) in qcom_ep_reset_assert() argument
215 gpiod_set_value_cansleep(pcie->reset, 1); in qcom_ep_reset_assert()
219 static void qcom_ep_reset_deassert(struct qcom_pcie *pcie) in qcom_ep_reset_deassert() argument
223 gpiod_set_value_cansleep(pcie->reset, 0); in qcom_ep_reset_deassert()
229 struct qcom_pcie *pcie = to_qcom_pcie(pci); in qcom_pcie_start_link() local
232 if (pcie->ops->ltssm_enable) in qcom_pcie_start_link()
233 pcie->ops->ltssm_enable(pcie); in qcom_pcie_start_link()
238 static void qcom_pcie_2_1_0_ltssm_enable(struct qcom_pcie *pcie) in qcom_pcie_2_1_0_ltssm_enable() argument
243 val = readl(pcie->elbi + PCIE20_ELBI_SYS_CTRL); in qcom_pcie_2_1_0_ltssm_enable()
245 writel(val, pcie->elbi + PCIE20_ELBI_SYS_CTRL); in qcom_pcie_2_1_0_ltssm_enable()
248 static int qcom_pcie_get_resources_2_1_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_1_0() argument
250 struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; in qcom_pcie_get_resources_2_1_0()
251 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_1_0()
303 static void qcom_pcie_deinit_2_1_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_1_0() argument
305 struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; in qcom_pcie_deinit_2_1_0()
315 writel(1, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_deinit_2_1_0()
320 static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie) in qcom_pcie_init_2_1_0() argument
322 struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; in qcom_pcie_init_2_1_0()
323 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_1_0()
337 writel(1, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_1_0()
386 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_1_0()
388 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_1_0()
395 pcie->parf + PCIE20_PARF_PCS_DEEMPH); in qcom_pcie_init_2_1_0()
398 pcie->parf + PCIE20_PARF_PCS_SWING); in qcom_pcie_init_2_1_0()
399 writel(PHY_RX0_EQ(4), pcie->parf + PCIE20_PARF_CONFIG_BITS); in qcom_pcie_init_2_1_0()
404 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_1_0()
407 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_1_0()
411 val = readl(pcie->parf + PCIE20_PARF_PHY_REFCLK); in qcom_pcie_init_2_1_0()
416 writel(val, pcie->parf + PCIE20_PARF_PHY_REFCLK); in qcom_pcie_init_2_1_0()
447 static int qcom_pcie_get_resources_1_0_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_1_0_0() argument
449 struct qcom_pcie_resources_1_0_0 *res = &pcie->res.v1_0_0; in qcom_pcie_get_resources_1_0_0()
450 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_1_0_0()
477 static void qcom_pcie_deinit_1_0_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_1_0_0() argument
479 struct qcom_pcie_resources_1_0_0 *res = &pcie->res.v1_0_0; in qcom_pcie_deinit_1_0_0()
489 static int qcom_pcie_init_1_0_0(struct qcom_pcie *pcie) in qcom_pcie_init_1_0_0() argument
491 struct qcom_pcie_resources_1_0_0 *res = &pcie->res.v1_0_0; in qcom_pcie_init_1_0_0()
492 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_1_0_0()
533 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_init_1_0_0()
536 u32 val = readl(pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT); in qcom_pcie_init_1_0_0()
539 writel(val, pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT); in qcom_pcie_init_1_0_0()
557 static void qcom_pcie_2_3_2_ltssm_enable(struct qcom_pcie *pcie) in qcom_pcie_2_3_2_ltssm_enable() argument
562 val = readl(pcie->parf + PCIE20_PARF_LTSSM); in qcom_pcie_2_3_2_ltssm_enable()
564 writel(val, pcie->parf + PCIE20_PARF_LTSSM); in qcom_pcie_2_3_2_ltssm_enable()
567 static int qcom_pcie_get_resources_2_3_2(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_3_2() argument
569 struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; in qcom_pcie_get_resources_2_3_2()
570 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_3_2()
601 static void qcom_pcie_deinit_2_3_2(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_3_2() argument
603 struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; in qcom_pcie_deinit_2_3_2()
613 static void qcom_pcie_post_deinit_2_3_2(struct qcom_pcie *pcie) in qcom_pcie_post_deinit_2_3_2() argument
615 struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; in qcom_pcie_post_deinit_2_3_2()
620 static int qcom_pcie_init_2_3_2(struct qcom_pcie *pcie) in qcom_pcie_init_2_3_2() argument
622 struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; in qcom_pcie_init_2_3_2()
623 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_3_2()
659 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_3_2()
661 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_3_2()
664 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_init_2_3_2()
667 val = readl(pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_init_2_3_2()
669 writel(val, pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_init_2_3_2()
671 val = readl(pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_init_2_3_2()
673 writel(val, pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_init_2_3_2()
675 val = readl(pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT_V2); in qcom_pcie_init_2_3_2()
677 writel(val, pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT_V2); in qcom_pcie_init_2_3_2()
694 static int qcom_pcie_post_init_2_3_2(struct qcom_pcie *pcie) in qcom_pcie_post_init_2_3_2() argument
696 struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; in qcom_pcie_post_init_2_3_2()
697 struct dw_pcie *pci = pcie->pci; in qcom_pcie_post_init_2_3_2()
710 static int qcom_pcie_get_resources_2_4_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_4_0() argument
712 struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0; in qcom_pcie_get_resources_2_4_0()
713 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_4_0()
793 static void qcom_pcie_deinit_2_4_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_4_0() argument
795 struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0; in qcom_pcie_deinit_2_4_0()
809 static int qcom_pcie_init_2_4_0(struct qcom_pcie *pcie) in qcom_pcie_init_2_4_0() argument
811 struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0; in qcom_pcie_init_2_4_0()
812 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_4_0()
940 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_4_0()
942 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_4_0()
945 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_init_2_4_0()
948 val = readl(pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_init_2_4_0()
950 writel(val, pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_init_2_4_0()
952 val = readl(pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_init_2_4_0()
954 writel(val, pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_init_2_4_0()
956 val = readl(pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT_V2); in qcom_pcie_init_2_4_0()
958 writel(val, pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT_V2); in qcom_pcie_init_2_4_0()
983 static int qcom_pcie_get_resources_2_3_3(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_3_3() argument
985 struct qcom_pcie_resources_2_3_3 *res = &pcie->res.v2_3_3; in qcom_pcie_get_resources_2_3_3()
986 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_3_3()
1022 static void qcom_pcie_deinit_2_3_3(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_3_3() argument
1024 struct qcom_pcie_resources_2_3_3 *res = &pcie->res.v2_3_3; in qcom_pcie_deinit_2_3_3()
1033 static int qcom_pcie_init_2_3_3(struct qcom_pcie *pcie) in qcom_pcie_init_2_3_3() argument
1035 struct qcom_pcie_resources_2_3_3 *res = &pcie->res.v2_3_3; in qcom_pcie_init_2_3_3()
1036 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_3_3()
1098 pcie->parf + PCIE20_v3_PARF_SLV_ADDR_SPACE_SIZE); in qcom_pcie_init_2_3_3()
1100 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_3_3()
1102 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_3_3()
1104 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_init_2_3_3()
1109 pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_init_2_3_3()
1110 writel(0, pcie->parf + PCIE20_PARF_Q2A_FLUSH); in qcom_pcie_init_2_3_3()
1144 static int qcom_pcie_get_resources_2_7_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_7_0() argument
1146 struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; in qcom_pcie_get_resources_2_7_0()
1147 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_7_0()
1179 if (pcie->pipe_clk_need_muxing) { in qcom_pcie_get_resources_2_7_0()
1197 static int qcom_pcie_init_2_7_0(struct qcom_pcie *pcie) in qcom_pcie_init_2_7_0() argument
1199 struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; in qcom_pcie_init_2_7_0()
1200 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_7_0()
1212 if (pcie->pipe_clk_need_muxing) in qcom_pcie_init_2_7_0()
1240 writel(DEVICE_TYPE_RC, pcie->parf + PCIE20_PARF_DEVICE_TYPE); in qcom_pcie_init_2_7_0()
1243 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_7_0()
1245 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_7_0()
1248 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_init_2_7_0()
1251 val = readl(pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_init_2_7_0()
1253 writel(val, pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_init_2_7_0()
1255 val = readl(pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_init_2_7_0()
1257 writel(val, pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_init_2_7_0()
1260 val = readl(pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT); in qcom_pcie_init_2_7_0()
1262 writel(val, pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT); in qcom_pcie_init_2_7_0()
1274 static void qcom_pcie_deinit_2_7_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_7_0() argument
1276 struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; in qcom_pcie_deinit_2_7_0()
1282 static int qcom_pcie_post_init_2_7_0(struct qcom_pcie *pcie) in qcom_pcie_post_init_2_7_0() argument
1284 struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; in qcom_pcie_post_init_2_7_0()
1287 if (pcie->pipe_clk_need_muxing) in qcom_pcie_post_init_2_7_0()
1293 static void qcom_pcie_post_deinit_2_7_0(struct qcom_pcie *pcie) in qcom_pcie_post_deinit_2_7_0() argument
1295 struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; in qcom_pcie_post_deinit_2_7_0()
1308 static int qcom_pcie_config_sid_sm8250(struct qcom_pcie *pcie) in qcom_pcie_config_sid_sm8250() argument
1317 void __iomem *bdf_to_sid_base = pcie->parf + PCIE20_PARF_BDF_TO_SID_TABLE_N; in qcom_pcie_config_sid_sm8250()
1318 struct device *dev = pcie->pci->dev; in qcom_pcie_config_sid_sm8250()
1382 struct qcom_pcie *pcie = to_qcom_pcie(pci); in qcom_pcie_host_init() local
1385 qcom_ep_reset_assert(pcie); in qcom_pcie_host_init()
1387 ret = pcie->ops->init(pcie); in qcom_pcie_host_init()
1391 ret = phy_power_on(pcie->phy); in qcom_pcie_host_init()
1395 if (pcie->ops->post_init) { in qcom_pcie_host_init()
1396 ret = pcie->ops->post_init(pcie); in qcom_pcie_host_init()
1401 qcom_ep_reset_deassert(pcie); in qcom_pcie_host_init()
1403 if (pcie->ops->config_sid) { in qcom_pcie_host_init()
1404 ret = pcie->ops->config_sid(pcie); in qcom_pcie_host_init()
1412 qcom_ep_reset_assert(pcie); in qcom_pcie_host_init()
1413 if (pcie->ops->post_deinit) in qcom_pcie_host_init()
1414 pcie->ops->post_deinit(pcie); in qcom_pcie_host_init()
1416 phy_power_off(pcie->phy); in qcom_pcie_host_init()
1418 pcie->ops->deinit(pcie); in qcom_pcie_host_init()
1533 struct qcom_pcie *pcie; in qcom_pcie_probe() local
1537 pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); in qcom_pcie_probe()
1538 if (!pcie) in qcom_pcie_probe()
1554 pcie->pci = pci; in qcom_pcie_probe()
1562 pcie->ops = pcie_cfg->ops; in qcom_pcie_probe()
1563 pcie->pipe_clk_need_muxing = pcie_cfg->pipe_clk_need_muxing; in qcom_pcie_probe()
1565 pcie->reset = devm_gpiod_get_optional(dev, "perst", GPIOD_OUT_HIGH); in qcom_pcie_probe()
1566 if (IS_ERR(pcie->reset)) { in qcom_pcie_probe()
1567 ret = PTR_ERR(pcie->reset); in qcom_pcie_probe()
1571 pcie->parf = devm_platform_ioremap_resource_byname(pdev, "parf"); in qcom_pcie_probe()
1572 if (IS_ERR(pcie->parf)) { in qcom_pcie_probe()
1573 ret = PTR_ERR(pcie->parf); in qcom_pcie_probe()
1577 pcie->elbi = devm_platform_ioremap_resource_byname(pdev, "elbi"); in qcom_pcie_probe()
1578 if (IS_ERR(pcie->elbi)) { in qcom_pcie_probe()
1579 ret = PTR_ERR(pcie->elbi); in qcom_pcie_probe()
1583 pcie->phy = devm_phy_optional_get(dev, "pciephy"); in qcom_pcie_probe()
1584 if (IS_ERR(pcie->phy)) { in qcom_pcie_probe()
1585 ret = PTR_ERR(pcie->phy); in qcom_pcie_probe()
1589 ret = pcie->ops->get_resources(pcie); in qcom_pcie_probe()
1595 ret = phy_init(pcie->phy); in qcom_pcie_probe()
1601 platform_set_drvdata(pdev, pcie); in qcom_pcie_probe()