Lines Matching refs:pcie

207 	int (*get_resources)(struct qcom_pcie *pcie);
208 int (*init)(struct qcom_pcie *pcie);
209 int (*post_init)(struct qcom_pcie *pcie);
210 void (*deinit)(struct qcom_pcie *pcie);
211 void (*ltssm_enable)(struct qcom_pcie *pcie);
212 int (*config_sid)(struct qcom_pcie *pcie);
231 static void qcom_ep_reset_assert(struct qcom_pcie *pcie) in qcom_ep_reset_assert() argument
233 gpiod_set_value_cansleep(pcie->reset, 1); in qcom_ep_reset_assert()
237 static void qcom_ep_reset_deassert(struct qcom_pcie *pcie) in qcom_ep_reset_deassert() argument
241 gpiod_set_value_cansleep(pcie->reset, 0); in qcom_ep_reset_deassert()
247 struct qcom_pcie *pcie = to_qcom_pcie(pci); in qcom_pcie_start_link() local
250 if (pcie->cfg->ops->ltssm_enable) in qcom_pcie_start_link()
251 pcie->cfg->ops->ltssm_enable(pcie); in qcom_pcie_start_link()
256 static void qcom_pcie_2_1_0_ltssm_enable(struct qcom_pcie *pcie) in qcom_pcie_2_1_0_ltssm_enable() argument
261 val = readl(pcie->elbi + PCIE20_ELBI_SYS_CTRL); in qcom_pcie_2_1_0_ltssm_enable()
263 writel(val, pcie->elbi + PCIE20_ELBI_SYS_CTRL); in qcom_pcie_2_1_0_ltssm_enable()
266 static int qcom_pcie_get_resources_2_1_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_1_0() argument
268 struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; in qcom_pcie_get_resources_2_1_0()
269 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_1_0()
321 static void qcom_pcie_deinit_2_1_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_1_0() argument
323 struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; in qcom_pcie_deinit_2_1_0()
333 writel(1, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_deinit_2_1_0()
338 static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie) in qcom_pcie_init_2_1_0() argument
340 struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; in qcom_pcie_init_2_1_0()
341 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_1_0()
413 static int qcom_pcie_post_init_2_1_0(struct qcom_pcie *pcie) in qcom_pcie_post_init_2_1_0() argument
415 struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; in qcom_pcie_post_init_2_1_0()
416 struct dw_pcie *pci = pcie->pci; in qcom_pcie_post_init_2_1_0()
423 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_1_0()
425 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_1_0()
436 pcie->parf + PCIE20_PARF_PCS_DEEMPH); in qcom_pcie_post_init_2_1_0()
439 pcie->parf + PCIE20_PARF_PCS_SWING); in qcom_pcie_post_init_2_1_0()
440 writel(PHY_RX0_EQ(4), pcie->parf + PCIE20_PARF_CONFIG_BITS); in qcom_pcie_post_init_2_1_0()
445 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_1_0()
448 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_1_0()
452 val = readl(pcie->parf + PCIE20_PARF_PHY_REFCLK); in qcom_pcie_post_init_2_1_0()
457 writel(val, pcie->parf + PCIE20_PARF_PHY_REFCLK); in qcom_pcie_post_init_2_1_0()
471 static int qcom_pcie_get_resources_1_0_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_1_0_0() argument
473 struct qcom_pcie_resources_1_0_0 *res = &pcie->res.v1_0_0; in qcom_pcie_get_resources_1_0_0()
474 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_1_0_0()
501 static void qcom_pcie_deinit_1_0_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_1_0_0() argument
503 struct qcom_pcie_resources_1_0_0 *res = &pcie->res.v1_0_0; in qcom_pcie_deinit_1_0_0()
513 static int qcom_pcie_init_1_0_0(struct qcom_pcie *pcie) in qcom_pcie_init_1_0_0() argument
515 struct qcom_pcie_resources_1_0_0 *res = &pcie->res.v1_0_0; in qcom_pcie_init_1_0_0()
516 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_1_0_0()
571 static int qcom_pcie_post_init_1_0_0(struct qcom_pcie *pcie) in qcom_pcie_post_init_1_0_0() argument
574 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_post_init_1_0_0()
577 u32 val = readl(pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT); in qcom_pcie_post_init_1_0_0()
580 writel(val, pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT); in qcom_pcie_post_init_1_0_0()
586 static void qcom_pcie_2_3_2_ltssm_enable(struct qcom_pcie *pcie) in qcom_pcie_2_3_2_ltssm_enable() argument
591 val = readl(pcie->parf + PCIE20_PARF_LTSSM); in qcom_pcie_2_3_2_ltssm_enable()
593 writel(val, pcie->parf + PCIE20_PARF_LTSSM); in qcom_pcie_2_3_2_ltssm_enable()
596 static int qcom_pcie_get_resources_2_3_2(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_3_2() argument
598 struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; in qcom_pcie_get_resources_2_3_2()
599 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_3_2()
629 static void qcom_pcie_deinit_2_3_2(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_3_2() argument
631 struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; in qcom_pcie_deinit_2_3_2()
641 static int qcom_pcie_init_2_3_2(struct qcom_pcie *pcie) in qcom_pcie_init_2_3_2() argument
643 struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; in qcom_pcie_init_2_3_2()
644 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_3_2()
693 static int qcom_pcie_post_init_2_3_2(struct qcom_pcie *pcie) in qcom_pcie_post_init_2_3_2() argument
698 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_3_2()
700 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_3_2()
703 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_post_init_2_3_2()
706 val = readl(pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_post_init_2_3_2()
708 writel(val, pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_post_init_2_3_2()
710 val = readl(pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_post_init_2_3_2()
712 writel(val, pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_post_init_2_3_2()
714 val = readl(pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT_V2); in qcom_pcie_post_init_2_3_2()
716 writel(val, pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT_V2); in qcom_pcie_post_init_2_3_2()
721 static int qcom_pcie_get_resources_2_4_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_4_0() argument
723 struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0; in qcom_pcie_get_resources_2_4_0()
724 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_4_0()
804 static void qcom_pcie_deinit_2_4_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_4_0() argument
806 struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0; in qcom_pcie_deinit_2_4_0()
820 static int qcom_pcie_init_2_4_0(struct qcom_pcie *pcie) in qcom_pcie_init_2_4_0() argument
822 struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0; in qcom_pcie_init_2_4_0()
823 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_4_0()
972 static int qcom_pcie_post_init_2_4_0(struct qcom_pcie *pcie) in qcom_pcie_post_init_2_4_0() argument
977 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_4_0()
979 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_4_0()
982 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_post_init_2_4_0()
985 val = readl(pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_post_init_2_4_0()
987 writel(val, pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_post_init_2_4_0()
989 val = readl(pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_post_init_2_4_0()
991 writel(val, pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_post_init_2_4_0()
993 val = readl(pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT_V2); in qcom_pcie_post_init_2_4_0()
995 writel(val, pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT_V2); in qcom_pcie_post_init_2_4_0()
1000 static int qcom_pcie_get_resources_2_3_3(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_3_3() argument
1002 struct qcom_pcie_resources_2_3_3 *res = &pcie->res.v2_3_3; in qcom_pcie_get_resources_2_3_3()
1003 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_3_3()
1039 static void qcom_pcie_deinit_2_3_3(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_3_3() argument
1041 struct qcom_pcie_resources_2_3_3 *res = &pcie->res.v2_3_3; in qcom_pcie_deinit_2_3_3()
1050 static int qcom_pcie_init_2_3_3(struct qcom_pcie *pcie) in qcom_pcie_init_2_3_3() argument
1052 struct qcom_pcie_resources_2_3_3 *res = &pcie->res.v2_3_3; in qcom_pcie_init_2_3_3()
1053 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_3_3()
1133 static int qcom_pcie_post_init_2_3_3(struct qcom_pcie *pcie) in qcom_pcie_post_init_2_3_3() argument
1135 struct dw_pcie *pci = pcie->pci; in qcom_pcie_post_init_2_3_3()
1140 pcie->parf + PCIE20_v3_PARF_SLV_ADDR_SPACE_SIZE); in qcom_pcie_post_init_2_3_3()
1142 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_3_3()
1144 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_3_3()
1146 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_post_init_2_3_3()
1151 pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_post_init_2_3_3()
1152 writel(0, pcie->parf + PCIE20_PARF_Q2A_FLUSH); in qcom_pcie_post_init_2_3_3()
1168 static int qcom_pcie_get_resources_2_7_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_7_0() argument
1170 struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; in qcom_pcie_get_resources_2_7_0()
1171 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_7_0()
1219 static int qcom_pcie_init_2_7_0(struct qcom_pcie *pcie) in qcom_pcie_init_2_7_0() argument
1221 struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; in qcom_pcie_init_2_7_0()
1222 struct dw_pcie *pci = pcie->pci; in qcom_pcie_init_2_7_0()
1255 writel(DEVICE_TYPE_RC, pcie->parf + PCIE20_PARF_DEVICE_TYPE); in qcom_pcie_init_2_7_0()
1258 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_7_0()
1260 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_init_2_7_0()
1263 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_init_2_7_0()
1266 val = readl(pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_init_2_7_0()
1268 writel(val, pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_init_2_7_0()
1270 val = readl(pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_init_2_7_0()
1272 writel(val, pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_init_2_7_0()
1275 val = readl(pcie->parf + PCIE20_PARF_PM_CTRL); in qcom_pcie_init_2_7_0()
1277 writel(val, pcie->parf + PCIE20_PARF_PM_CTRL); in qcom_pcie_init_2_7_0()
1280 val = readl(pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT); in qcom_pcie_init_2_7_0()
1282 writel(val, pcie->parf + PCIE20_PARF_AXI_MSTR_WR_ADDR_HALT); in qcom_pcie_init_2_7_0()
1294 static void qcom_pcie_deinit_2_7_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_7_0() argument
1296 struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; in qcom_pcie_deinit_2_7_0()
1303 static int qcom_pcie_get_resources_2_9_0(struct qcom_pcie *pcie) in qcom_pcie_get_resources_2_9_0() argument
1305 struct qcom_pcie_resources_2_9_0 *res = &pcie->res.v2_9_0; in qcom_pcie_get_resources_2_9_0()
1306 struct dw_pcie *pci = pcie->pci; in qcom_pcie_get_resources_2_9_0()
1327 static void qcom_pcie_deinit_2_9_0(struct qcom_pcie *pcie) in qcom_pcie_deinit_2_9_0() argument
1329 struct qcom_pcie_resources_2_9_0 *res = &pcie->res.v2_9_0; in qcom_pcie_deinit_2_9_0()
1334 static int qcom_pcie_init_2_9_0(struct qcom_pcie *pcie) in qcom_pcie_init_2_9_0() argument
1336 struct qcom_pcie_resources_2_9_0 *res = &pcie->res.v2_9_0; in qcom_pcie_init_2_9_0()
1337 struct device *dev = pcie->pci->dev; in qcom_pcie_init_2_9_0()
1363 static int qcom_pcie_post_init_2_9_0(struct qcom_pcie *pcie) in qcom_pcie_post_init_2_9_0() argument
1365 struct dw_pcie *pci = pcie->pci; in qcom_pcie_post_init_2_9_0()
1371 pcie->parf + PCIE20_v3_PARF_SLV_ADDR_SPACE_SIZE); in qcom_pcie_post_init_2_9_0()
1373 val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_9_0()
1375 writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); in qcom_pcie_post_init_2_9_0()
1377 writel(0, pcie->parf + PCIE20_PARF_DBI_BASE_ADDR); in qcom_pcie_post_init_2_9_0()
1379 writel(DEVICE_TYPE_RC, pcie->parf + PCIE20_PARF_DEVICE_TYPE); in qcom_pcie_post_init_2_9_0()
1381 pcie->parf + PCIE20_PARF_MHI_CLOCK_RESET_CTRL); in qcom_pcie_post_init_2_9_0()
1389 pcie->parf + PCIE20_PARF_SYS_CTRL); in qcom_pcie_post_init_2_9_0()
1391 writel(0, pcie->parf + PCIE20_PARF_Q2A_FLUSH); in qcom_pcie_post_init_2_9_0()
1404 writel(0, pcie->parf + PCIE20_PARF_BDF_TO_SID_TABLE_N + (4 * i)); in qcom_pcie_post_init_2_9_0()
1417 static int qcom_pcie_config_sid_sm8250(struct qcom_pcie *pcie) in qcom_pcie_config_sid_sm8250() argument
1426 void __iomem *bdf_to_sid_base = pcie->parf + PCIE20_PARF_BDF_TO_SID_TABLE_N; in qcom_pcie_config_sid_sm8250()
1427 struct device *dev = pcie->pci->dev; in qcom_pcie_config_sid_sm8250()
1491 struct qcom_pcie *pcie = to_qcom_pcie(pci); in qcom_pcie_host_init() local
1494 qcom_ep_reset_assert(pcie); in qcom_pcie_host_init()
1496 ret = pcie->cfg->ops->init(pcie); in qcom_pcie_host_init()
1500 ret = phy_power_on(pcie->phy); in qcom_pcie_host_init()
1504 if (pcie->cfg->ops->post_init) { in qcom_pcie_host_init()
1505 ret = pcie->cfg->ops->post_init(pcie); in qcom_pcie_host_init()
1510 qcom_ep_reset_deassert(pcie); in qcom_pcie_host_init()
1512 if (pcie->cfg->ops->config_sid) { in qcom_pcie_host_init()
1513 ret = pcie->cfg->ops->config_sid(pcie); in qcom_pcie_host_init()
1521 qcom_ep_reset_assert(pcie); in qcom_pcie_host_init()
1523 phy_power_off(pcie->phy); in qcom_pcie_host_init()
1525 pcie->cfg->ops->deinit(pcie); in qcom_pcie_host_init()
1647 struct qcom_pcie *pcie; in qcom_pcie_probe() local
1657 pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); in qcom_pcie_probe()
1658 if (!pcie) in qcom_pcie_probe()
1674 pcie->pci = pci; in qcom_pcie_probe()
1676 pcie->cfg = pcie_cfg; in qcom_pcie_probe()
1678 pcie->reset = devm_gpiod_get_optional(dev, "perst", GPIOD_OUT_HIGH); in qcom_pcie_probe()
1679 if (IS_ERR(pcie->reset)) { in qcom_pcie_probe()
1680 ret = PTR_ERR(pcie->reset); in qcom_pcie_probe()
1684 pcie->parf = devm_platform_ioremap_resource_byname(pdev, "parf"); in qcom_pcie_probe()
1685 if (IS_ERR(pcie->parf)) { in qcom_pcie_probe()
1686 ret = PTR_ERR(pcie->parf); in qcom_pcie_probe()
1690 pcie->elbi = devm_platform_ioremap_resource_byname(pdev, "elbi"); in qcom_pcie_probe()
1691 if (IS_ERR(pcie->elbi)) { in qcom_pcie_probe()
1692 ret = PTR_ERR(pcie->elbi); in qcom_pcie_probe()
1696 pcie->phy = devm_phy_optional_get(dev, "pciephy"); in qcom_pcie_probe()
1697 if (IS_ERR(pcie->phy)) { in qcom_pcie_probe()
1698 ret = PTR_ERR(pcie->phy); in qcom_pcie_probe()
1702 ret = pcie->cfg->ops->get_resources(pcie); in qcom_pcie_probe()
1708 ret = phy_init(pcie->phy); in qcom_pcie_probe()
1712 platform_set_drvdata(pdev, pcie); in qcom_pcie_probe()
1723 phy_exit(pcie->phy); in qcom_pcie_probe()