Lines Matching refs:qmp
25 #include "phy-qcom-qmp.h"
1911 * @qmp: QMP phy to which this lane belongs
1927 struct qcom_qmp *qmp;
2623 struct qcom_qmp *qmp = qphy->qmp;
2676 dev_err(qmp->dev,
2912 struct qcom_qmp *qmp = qphy->qmp;
2916 void __iomem *dp_com = qmp->dp_com;
2919 mutex_lock(&qmp->phy_mutex);
2920 if (qmp->init_count++) {
2921 mutex_unlock(&qmp->phy_mutex);
2926 ret = regulator_bulk_enable(cfg->num_vregs, qmp->vregs);
2928 dev_err(qmp->dev, "failed to enable regulators, err=%d\n", ret);
2933 ret = reset_control_assert(qmp->resets[i]);
2935 dev_err(qmp->dev, "%s reset assert failed\n",
2942 ret = reset_control_deassert(qmp->resets[i]);
2944 dev_err(qmp->dev, "%s reset deassert failed\n",
2950 ret = clk_bulk_prepare_enable(cfg->num_clks, qmp->clks);
2952 dev_err(qmp->dev, "failed to enable clks, err=%d\n", ret);
2959 /* override hardware control for reset of qmp phy */
2992 mutex_unlock(&qmp->phy_mutex);
2998 reset_control_assert(qmp->resets[i]);
3000 regulator_bulk_disable(cfg->num_vregs, qmp->vregs);
3002 mutex_unlock(&qmp->phy_mutex);
3009 struct qcom_qmp *qmp = qphy->qmp;
3014 mutex_lock(&qmp->phy_mutex);
3015 if (--qmp->init_count) {
3016 mutex_unlock(&qmp->phy_mutex);
3020 reset_control_assert(qmp->ufs_reset);
3031 reset_control_assert(qmp->resets[i]);
3033 clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks);
3035 regulator_bulk_disable(cfg->num_vregs, qmp->vregs);
3037 mutex_unlock(&qmp->phy_mutex);
3045 struct qcom_qmp *qmp = qphy->qmp;
3048 dev_vdbg(qmp->dev, "Initializing QMP phy\n");
3056 if (!qmp->ufs_reset) {
3057 qmp->ufs_reset =
3058 devm_reset_control_get_exclusive(qmp->dev,
3061 if (IS_ERR(qmp->ufs_reset)) {
3062 ret = PTR_ERR(qmp->ufs_reset);
3063 dev_err(qmp->dev,
3067 qmp->ufs_reset = NULL;
3072 ret = reset_control_assert(qmp->ufs_reset);
3090 struct qcom_qmp *qmp = qphy->qmp;
3105 dev_err(qmp->dev, "lane%d reset deassert failed\n",
3113 dev_err(qmp->dev, "pipe_clk enable failed err=%d\n", ret);
3142 ret = reset_control_deassert(qmp->ufs_reset);
3179 dev_err(qmp->dev, "phy initialization timed-out\n");
3322 struct qcom_qmp *qmp = dev_get_drvdata(dev);
3323 struct qmp_phy *qphy = qmp->phys[0];
3332 if (!qmp->init_count) {
3340 clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks);
3347 struct qcom_qmp *qmp = dev_get_drvdata(dev);
3348 struct qmp_phy *qphy = qmp->phys[0];
3358 if (!qmp->init_count) {
3363 ret = clk_bulk_prepare_enable(cfg->num_clks, qmp->clks);
3365 dev_err(qmp->dev, "failed to enable clks, err=%d\n", ret);
3372 clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks);
3383 struct qcom_qmp *qmp = dev_get_drvdata(dev);
3387 qmp->vregs = devm_kcalloc(dev, num, sizeof(*qmp->vregs), GFP_KERNEL);
3388 if (!qmp->vregs)
3392 qmp->vregs[i].supply = cfg->vreg_list[i];
3394 return devm_regulator_bulk_get(dev, num, qmp->vregs);
3399 struct qcom_qmp *qmp = dev_get_drvdata(dev);
3402 qmp->resets = devm_kcalloc(dev, cfg->num_resets,
3403 sizeof(*qmp->resets), GFP_KERNEL);
3404 if (!qmp->resets)
3416 qmp->resets[i] = rst;
3424 struct qcom_qmp *qmp = dev_get_drvdata(dev);
3428 qmp->clks = devm_kcalloc(dev, num, sizeof(*qmp->clks), GFP_KERNEL);
3429 if (!qmp->clks)
3433 qmp->clks[i].id = cfg->clk_list[i];
3435 return devm_clk_bulk_get(dev, num, qmp->clks);
3461 static int phy_pipe_clk_register(struct qcom_qmp *qmp, struct device_node *np)
3469 dev_err(qmp->dev, "%pOFn: No clock-output-names\n", np);
3473 fixed = devm_kzalloc(qmp->dev, sizeof(*fixed), GFP_KERNEL);
3483 ret = devm_clk_hw_register(qmp->dev, &fixed->hw);
3495 ret = devm_add_action(qmp->dev, phy_clk_release_provider, np);
3652 static int phy_dp_clks_register(struct qcom_qmp *qmp, struct qmp_phy *qphy,
3659 dp_clks = devm_kzalloc(qmp->dev, sizeof(*dp_clks), GFP_KERNEL);
3669 ret = devm_clk_hw_register(qmp->dev, &dp_clks->dp_link_hw);
3676 ret = devm_clk_hw_register(qmp->dev, &dp_clks->dp_pixel_hw);
3688 ret = devm_add_action(qmp->dev, phy_clk_release_provider, np);
3729 struct qcom_qmp *qmp = dev_get_drvdata(dev);
3841 qphy->qmp = qmp;
3842 qmp->phys[id] = qphy;
3850 .compatible = "qcom,ipq8074-qmp-usb3-phy",
3853 .compatible = "qcom,msm8996-qmp-pcie-phy",
3856 .compatible = "qcom,msm8996-qmp-ufs-phy",
3859 .compatible = "qcom,msm8996-qmp-usb3-phy",
3862 .compatible = "qcom,msm8998-qmp-pcie-phy",
3865 .compatible = "qcom,msm8998-qmp-ufs-phy",
3868 .compatible = "qcom,ipq8074-qmp-pcie-phy",
3871 .compatible = "qcom,sc7180-qmp-usb3-phy",
3874 .compatible = "qcom,sc7180-qmp-usb3-dp-phy",
3880 .compatible = "qcom,sdm845-qmp-pcie-phy",
3883 .compatible = "qcom,sdm845-qmp-usb3-phy",
3886 .compatible = "qcom,sdm845-qmp-usb3-uni-phy",
3889 .compatible = "qcom,sdm845-qmp-ufs-phy",
3892 .compatible = "qcom,msm8998-qmp-usb3-phy",
3895 .compatible = "qcom,sm8150-qmp-ufs-phy",
3898 .compatible = "qcom,sm8250-qmp-ufs-phy",
3901 .compatible = "qcom,sm8150-qmp-usb3-phy",
3904 .compatible = "qcom,sm8150-qmp-usb3-uni-phy",
3907 .compatible = "qcom,sm8250-qmp-usb3-phy",
3910 .compatible = "qcom,sm8250-qmp-usb3-uni-phy",
3919 .compatible = "qcom,sc7180-qmp-usb3-dp-phy",
3932 struct qcom_qmp *qmp;
3946 qmp = devm_kzalloc(dev, sizeof(*qmp), GFP_KERNEL);
3947 if (!qmp)
3950 qmp->dev = dev;
3951 dev_set_drvdata(dev, qmp);
3977 qmp->dp_com = devm_platform_ioremap_resource(pdev, 1);
3978 if (IS_ERR(qmp->dp_com))
3979 return PTR_ERR(qmp->dp_com);
3994 mutex_init(&qmp->phy_mutex);
4017 qmp->phys = devm_kcalloc(dev, num, sizeof(*qmp->phys), GFP_KERNEL);
4018 if (!qmp->phys)
4052 ret = phy_pipe_clk_register(qmp, child);
4054 dev_err(qmp->dev,
4059 ret = phy_dp_clks_register(qmp, qmp->phys[id], child);
4061 dev_err(qmp->dev,
4086 .name = "qcom-qmp-phy",