Lines Matching refs:qmp

961 	struct qcom_qmp *qmp;  member
1300 struct qcom_qmp *qmp = qphy->qmp; in qcom_qmp_phy_com_init() local
1301 const struct qmp_phy_cfg *cfg = qmp->cfg; in qcom_qmp_phy_com_init()
1302 void __iomem *serdes = qmp->serdes; in qcom_qmp_phy_com_init()
1304 void __iomem *dp_com = qmp->dp_com; in qcom_qmp_phy_com_init()
1307 mutex_lock(&qmp->phy_mutex); in qcom_qmp_phy_com_init()
1308 if (qmp->init_count++) { in qcom_qmp_phy_com_init()
1309 mutex_unlock(&qmp->phy_mutex); in qcom_qmp_phy_com_init()
1314 ret = regulator_bulk_enable(cfg->num_vregs, qmp->vregs); in qcom_qmp_phy_com_init()
1316 dev_err(qmp->dev, "failed to enable regulators, err=%d\n", ret); in qcom_qmp_phy_com_init()
1321 ret = reset_control_assert(qmp->resets[i]); in qcom_qmp_phy_com_init()
1323 dev_err(qmp->dev, "%s reset assert failed\n", in qcom_qmp_phy_com_init()
1330 ret = reset_control_deassert(qmp->resets[i]); in qcom_qmp_phy_com_init()
1332 dev_err(qmp->dev, "%s reset deassert failed\n", in qcom_qmp_phy_com_init()
1333 qmp->cfg->reset_list[i]); in qcom_qmp_phy_com_init()
1338 ret = clk_bulk_prepare_enable(cfg->num_clks, qmp->clks); in qcom_qmp_phy_com_init()
1340 dev_err(qmp->dev, "failed to enable clks, err=%d\n", ret); in qcom_qmp_phy_com_init()
1385 dev_err(qmp->dev, in qcom_qmp_phy_com_init()
1391 mutex_unlock(&qmp->phy_mutex); in qcom_qmp_phy_com_init()
1396 clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks); in qcom_qmp_phy_com_init()
1399 reset_control_assert(qmp->resets[i]); in qcom_qmp_phy_com_init()
1401 regulator_bulk_disable(cfg->num_vregs, qmp->vregs); in qcom_qmp_phy_com_init()
1403 mutex_unlock(&qmp->phy_mutex); in qcom_qmp_phy_com_init()
1408 static int qcom_qmp_phy_com_exit(struct qcom_qmp *qmp) in qcom_qmp_phy_com_exit() argument
1410 const struct qmp_phy_cfg *cfg = qmp->cfg; in qcom_qmp_phy_com_exit()
1411 void __iomem *serdes = qmp->serdes; in qcom_qmp_phy_com_exit()
1414 mutex_lock(&qmp->phy_mutex); in qcom_qmp_phy_com_exit()
1415 if (--qmp->init_count) { in qcom_qmp_phy_com_exit()
1416 mutex_unlock(&qmp->phy_mutex); in qcom_qmp_phy_com_exit()
1420 reset_control_assert(qmp->ufs_reset); in qcom_qmp_phy_com_exit()
1431 reset_control_assert(qmp->resets[i]); in qcom_qmp_phy_com_exit()
1433 clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks); in qcom_qmp_phy_com_exit()
1435 regulator_bulk_disable(cfg->num_vregs, qmp->vregs); in qcom_qmp_phy_com_exit()
1437 mutex_unlock(&qmp->phy_mutex); in qcom_qmp_phy_com_exit()
1445 struct qcom_qmp *qmp = qphy->qmp; in qcom_qmp_phy_enable() local
1446 const struct qmp_phy_cfg *cfg = qmp->cfg; in qcom_qmp_phy_enable()
1450 void __iomem *dp_com = qmp->dp_com; in qcom_qmp_phy_enable()
1455 dev_vdbg(qmp->dev, "Initializing QMP phy\n"); in qcom_qmp_phy_enable()
1463 if (!qmp->ufs_reset) { in qcom_qmp_phy_enable()
1464 qmp->ufs_reset = in qcom_qmp_phy_enable()
1465 devm_reset_control_get_exclusive(qmp->dev, in qcom_qmp_phy_enable()
1468 if (IS_ERR(qmp->ufs_reset)) { in qcom_qmp_phy_enable()
1469 ret = PTR_ERR(qmp->ufs_reset); in qcom_qmp_phy_enable()
1470 dev_err(qmp->dev, in qcom_qmp_phy_enable()
1474 qmp->ufs_reset = NULL; in qcom_qmp_phy_enable()
1479 ret = reset_control_assert(qmp->ufs_reset); in qcom_qmp_phy_enable()
1491 dev_err(qmp->dev, "lane%d reset deassert failed\n", in qcom_qmp_phy_enable()
1499 dev_err(qmp->dev, "pipe_clk enable failed err=%d\n", ret); in qcom_qmp_phy_enable()
1516 ret = reset_control_deassert(qmp->ufs_reset); in qcom_qmp_phy_enable()
1553 dev_err(qmp->dev, "phy initialization timed-out\n"); in qcom_qmp_phy_enable()
1556 qmp->phy_initialized = true; in qcom_qmp_phy_enable()
1560 reset_control_assert(qmp->ufs_reset); in qcom_qmp_phy_enable()
1566 qcom_qmp_phy_com_exit(qmp); in qcom_qmp_phy_enable()
1574 struct qcom_qmp *qmp = qphy->qmp; in qcom_qmp_phy_disable() local
1575 const struct qmp_phy_cfg *cfg = qmp->cfg; in qcom_qmp_phy_disable()
1592 qcom_qmp_phy_com_exit(qmp); in qcom_qmp_phy_disable()
1594 qmp->phy_initialized = false; in qcom_qmp_phy_disable()
1603 struct qcom_qmp *qmp = qphy->qmp; in qcom_qmp_phy_set_mode() local
1605 qmp->mode = mode; in qcom_qmp_phy_set_mode()
1612 struct qcom_qmp *qmp = qphy->qmp; in qcom_qmp_phy_enable_autonomous_mode() local
1613 const struct qmp_phy_cfg *cfg = qmp->cfg; in qcom_qmp_phy_enable_autonomous_mode()
1618 if (qmp->mode == PHY_MODE_USB_HOST_SS || in qcom_qmp_phy_enable_autonomous_mode()
1619 qmp->mode == PHY_MODE_USB_DEVICE_SS) in qcom_qmp_phy_enable_autonomous_mode()
1642 struct qcom_qmp *qmp = qphy->qmp; in qcom_qmp_phy_disable_autonomous_mode() local
1643 const struct qmp_phy_cfg *cfg = qmp->cfg; in qcom_qmp_phy_disable_autonomous_mode()
1661 struct qcom_qmp *qmp = dev_get_drvdata(dev); in qcom_qmp_phy_runtime_suspend() local
1662 struct qmp_phy *qphy = qmp->phys[0]; in qcom_qmp_phy_runtime_suspend()
1663 const struct qmp_phy_cfg *cfg = qmp->cfg; in qcom_qmp_phy_runtime_suspend()
1665 dev_vdbg(dev, "Suspending QMP phy, mode:%d\n", qmp->mode); in qcom_qmp_phy_runtime_suspend()
1671 if (!qmp->phy_initialized) { in qcom_qmp_phy_runtime_suspend()
1679 clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks); in qcom_qmp_phy_runtime_suspend()
1686 struct qcom_qmp *qmp = dev_get_drvdata(dev); in qcom_qmp_phy_runtime_resume() local
1687 struct qmp_phy *qphy = qmp->phys[0]; in qcom_qmp_phy_runtime_resume()
1688 const struct qmp_phy_cfg *cfg = qmp->cfg; in qcom_qmp_phy_runtime_resume()
1691 dev_vdbg(dev, "Resuming QMP phy, mode:%d\n", qmp->mode); in qcom_qmp_phy_runtime_resume()
1697 if (!qmp->phy_initialized) { in qcom_qmp_phy_runtime_resume()
1702 ret = clk_bulk_prepare_enable(cfg->num_clks, qmp->clks); in qcom_qmp_phy_runtime_resume()
1704 dev_err(qmp->dev, "failed to enable clks, err=%d\n", ret); in qcom_qmp_phy_runtime_resume()
1711 clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks); in qcom_qmp_phy_runtime_resume()
1722 struct qcom_qmp *qmp = dev_get_drvdata(dev); in qcom_qmp_phy_vreg_init() local
1723 int num = qmp->cfg->num_vregs; in qcom_qmp_phy_vreg_init()
1726 qmp->vregs = devm_kcalloc(dev, num, sizeof(*qmp->vregs), GFP_KERNEL); in qcom_qmp_phy_vreg_init()
1727 if (!qmp->vregs) in qcom_qmp_phy_vreg_init()
1731 qmp->vregs[i].supply = qmp->cfg->vreg_list[i]; in qcom_qmp_phy_vreg_init()
1733 return devm_regulator_bulk_get(dev, num, qmp->vregs); in qcom_qmp_phy_vreg_init()
1738 struct qcom_qmp *qmp = dev_get_drvdata(dev); in qcom_qmp_phy_reset_init() local
1741 qmp->resets = devm_kcalloc(dev, qmp->cfg->num_resets, in qcom_qmp_phy_reset_init()
1742 sizeof(*qmp->resets), GFP_KERNEL); in qcom_qmp_phy_reset_init()
1743 if (!qmp->resets) in qcom_qmp_phy_reset_init()
1746 for (i = 0; i < qmp->cfg->num_resets; i++) { in qcom_qmp_phy_reset_init()
1748 const char *name = qmp->cfg->reset_list[i]; in qcom_qmp_phy_reset_init()
1755 qmp->resets[i] = rst; in qcom_qmp_phy_reset_init()
1763 struct qcom_qmp *qmp = dev_get_drvdata(dev); in qcom_qmp_phy_clk_init() local
1764 int num = qmp->cfg->num_clks; in qcom_qmp_phy_clk_init()
1767 qmp->clks = devm_kcalloc(dev, num, sizeof(*qmp->clks), GFP_KERNEL); in qcom_qmp_phy_clk_init()
1768 if (!qmp->clks) in qcom_qmp_phy_clk_init()
1772 qmp->clks[i].id = qmp->cfg->clk_list[i]; in qcom_qmp_phy_clk_init()
1774 return devm_clk_bulk_get(dev, num, qmp->clks); in qcom_qmp_phy_clk_init()
1800 static int phy_pipe_clk_register(struct qcom_qmp *qmp, struct device_node *np) in phy_pipe_clk_register() argument
1806 if ((qmp->cfg->type != PHY_TYPE_USB3) && in phy_pipe_clk_register()
1807 (qmp->cfg->type != PHY_TYPE_PCIE)) { in phy_pipe_clk_register()
1814 dev_err(qmp->dev, "%pOFn: No clock-output-names\n", np); in phy_pipe_clk_register()
1818 fixed = devm_kzalloc(qmp->dev, sizeof(*fixed), GFP_KERNEL); in phy_pipe_clk_register()
1828 ret = devm_clk_hw_register(qmp->dev, &fixed->hw); in phy_pipe_clk_register()
1840 ret = devm_add_action(qmp->dev, phy_pipe_clk_release_provider, np); in phy_pipe_clk_register()
1864 struct qcom_qmp *qmp = dev_get_drvdata(dev); in qcom_qmp_phy_create() local
1899 if (qmp->cfg->is_dual_lane_phy) { in qcom_qmp_phy_create()
1932 if (qmp->cfg->type == PHY_TYPE_PCIE || in qcom_qmp_phy_create()
1933 qmp->cfg->type == PHY_TYPE_USB3) { in qcom_qmp_phy_create()
1945 if (qmp->cfg->has_lane_rst) { in qcom_qmp_phy_create()
1954 if (qmp->cfg->type == PHY_TYPE_UFS) in qcom_qmp_phy_create()
1966 qphy->qmp = qmp; in qcom_qmp_phy_create()
1967 qmp->phys[id] = qphy; in qcom_qmp_phy_create()
2013 struct qcom_qmp *qmp; in qcom_qmp_phy_probe() local
2022 qmp = devm_kzalloc(dev, sizeof(*qmp), GFP_KERNEL); in qcom_qmp_phy_probe()
2023 if (!qmp) in qcom_qmp_phy_probe()
2026 qmp->dev = dev; in qcom_qmp_phy_probe()
2027 dev_set_drvdata(dev, qmp); in qcom_qmp_phy_probe()
2030 qmp->cfg = of_device_get_match_data(dev); in qcom_qmp_phy_probe()
2031 if (!qmp->cfg) in qcom_qmp_phy_probe()
2040 qmp->serdes = base; in qcom_qmp_phy_probe()
2043 if (qmp->cfg->has_phy_dp_com_ctrl) { in qcom_qmp_phy_probe()
2050 qmp->dp_com = base; in qcom_qmp_phy_probe()
2053 mutex_init(&qmp->phy_mutex); in qcom_qmp_phy_probe()
2073 if (num > qmp->cfg->nlanes) in qcom_qmp_phy_probe()
2076 qmp->phys = devm_kcalloc(dev, num, sizeof(*qmp->phys), GFP_KERNEL); in qcom_qmp_phy_probe()
2077 if (!qmp->phys) in qcom_qmp_phy_probe()
2102 ret = phy_pipe_clk_register(qmp, child); in qcom_qmp_phy_probe()
2104 dev_err(qmp->dev, in qcom_qmp_phy_probe()