Hi, On 6/19/2018 2:06 PM, Can Guo wrote: > +static int qcom_qmp_phy_poweron(struct phy *phy) > +{ > + struct qmp_phy *qphy = phy_get_drvdata(phy); > + struct qcom_qmp *qmp = qphy->qmp; > + const struct qmp_phy_cfg *cfg = qmp->cfg; > + void __iomem *pcs = qphy->pcs; > + void __iomem *status; > + unsigned int mask, val; > + int ret = 0; > + > + if (cfg->type != PHY_TYPE_UFS) > + return 0; > + > + /* > + * For UFS PHY that has not software reset control, serdes start > + * should only happen when UFS driver explicitly calls phy_power_on > + * after it deasserts software reset. > + */ Instead of relying on UFS glue driver to assert/de-assert PHY which requires UFS PHY initialization to be split in init() and poweron(), we can rather register reset_controller from ufs-qcom driver. PHY driver can then assert/de-assert as per UFS PHY requirement in init() function itself and there won't be any need to have poweron() routine for UFS as init can perform complete PHY initialization without any dependency on ufs-qcom glue driver. -Manu -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html