static int ufs_qcom_phy_qmp_20nm_init(struct phy *generic_phy) { struct ufs_qcom_phy_qmp_20nm *phy = phy_get_drvdata(generic_phy); struct ufs_qcom_phy *phy_common = &phy->common_cfg; int err = 0; err = ufs_qcom_phy_init_clks(generic_phy, phy_common); if (err) { dev_err(phy_common->dev, "%s: ufs_qcom_phy_init_clks() failed %d\n", __func__, err); goto out; } err = ufs_qcom_phy_init_vregulators(generic_phy, phy_common); if (err) { dev_err(phy_common->dev, "%s: ufs_qcom_phy_init_vregulators() failed %d\n", __func__, err); goto out; } ufs_qcom_phy_qmp_20nm_advertise_quirks(phy_common); out: return err; }
static int ufs_qcom_phy_qmp_20nm_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; struct phy *generic_phy; struct ufs_qcom_phy_qmp_20nm *phy; struct ufs_qcom_phy *phy_common; int err = 0; phy = devm_kzalloc(dev, sizeof(*phy), GFP_KERNEL); if (!phy) { err = -ENOMEM; goto out; } phy_common = &phy->common_cfg; generic_phy = ufs_qcom_phy_generic_probe(pdev, phy_common, &ufs_qcom_phy_qmp_20nm_phy_ops, &phy_20nm_ops); if (!generic_phy) { err = -EIO; goto out; } err = ufs_qcom_phy_init_clks(phy_common); if (err) goto out; err = ufs_qcom_phy_init_vregulators(phy_common); if (err) goto out; ufs_qcom_phy_qmp_20nm_advertise_quirks(phy_common); phy_set_drvdata(generic_phy, phy); strlcpy(phy_common->name, UFS_PHY_NAME, sizeof(phy_common->name)); out: return err; }