Message ID | 20250515162722.6933-8-quic_nitirawa@quicinc.com |
---|---|
State | New |
Headers | show |
Series | Refactor ufs phy powerup sequence | expand |
On Thu, May 15, 2025 at 09:57:18PM +0530, Nitin Rawat wrote: > qmp_ufs_exit() is a wrapper function. It only calls qmp_ufs_com_exit(). > Remove it to simplify the ufs phy driver. > Okay, so you are doing it now... > Additonally partial Inline(dropping the reset assert) qmp_ufs_com_exit > into qmp_ufs_power_off function to avoid unnecessary function call. > Why are you dropping the reset_assert()? > Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com> > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> > --- > drivers/phy/qualcomm/phy-qcom-qmp-ufs.c | 19 +++++-------------- > 1 file changed, 5 insertions(+), 14 deletions(-) > > diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c > index a5974a1fb5bb..fca47e5e8bf0 100644 > --- a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c > +++ b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c > @@ -1758,19 +1758,6 @@ static void qmp_ufs_init_registers(struct qmp_ufs *qmp, const struct qmp_phy_cfg > qmp_ufs_init_all(qmp, &cfg->tbls_hs_b); > } > > -static int qmp_ufs_com_exit(struct qmp_ufs *qmp) > -{ > - const struct qmp_phy_cfg *cfg = qmp->cfg; > - > - reset_control_assert(qmp->ufs_reset); > - > - clk_bulk_disable_unprepare(qmp->num_clks, qmp->clks); > - > - regulator_bulk_disable(cfg->num_vregs, qmp->vregs); > - > - return 0; > -} > - > static int qmp_ufs_power_on(struct phy *phy) > { > struct qmp_ufs *qmp = phy_get_drvdata(phy); > @@ -1851,7 +1838,11 @@ static int qmp_ufs_power_off(struct phy *phy) > qphy_clrbits(qmp->pcs, cfg->regs[QPHY_PCS_POWER_DOWN_CONTROL], > SW_PWRDN); > > - qmp_ufs_com_exit(qmp); > + /* Turn off all the phy clocks */ You should drop this and below comment. They add no value. - Mani
On 5/21/2025 7:19 PM, Manivannan Sadhasivam wrote: > On Thu, May 15, 2025 at 09:57:18PM +0530, Nitin Rawat wrote: >> qmp_ufs_exit() is a wrapper function. It only calls qmp_ufs_com_exit(). >> Remove it to simplify the ufs phy driver. >> > > Okay, so you are doing it now... Yes > >> Additonally partial Inline(dropping the reset assert) qmp_ufs_com_exit >> into qmp_ufs_power_off function to avoid unnecessary function call. >> > > Why are you dropping the reset_assert()? This was not aligning to Phy programming guide . > >> Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com> >> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> >> --- >> drivers/phy/qualcomm/phy-qcom-qmp-ufs.c | 19 +++++-------------- >> 1 file changed, 5 insertions(+), 14 deletions(-) >> >> diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c >> index a5974a1fb5bb..fca47e5e8bf0 100644 >> --- a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c >> +++ b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c >> @@ -1758,19 +1758,6 @@ static void qmp_ufs_init_registers(struct qmp_ufs *qmp, const struct qmp_phy_cfg >> qmp_ufs_init_all(qmp, &cfg->tbls_hs_b); >> } >> >> -static int qmp_ufs_com_exit(struct qmp_ufs *qmp) >> -{ >> - const struct qmp_phy_cfg *cfg = qmp->cfg; >> - >> - reset_control_assert(qmp->ufs_reset); >> - >> - clk_bulk_disable_unprepare(qmp->num_clks, qmp->clks); >> - >> - regulator_bulk_disable(cfg->num_vregs, qmp->vregs); >> - >> - return 0; >> -} >> - >> static int qmp_ufs_power_on(struct phy *phy) >> { >> struct qmp_ufs *qmp = phy_get_drvdata(phy); >> @@ -1851,7 +1838,11 @@ static int qmp_ufs_power_off(struct phy *phy) >> qphy_clrbits(qmp->pcs, cfg->regs[QPHY_PCS_POWER_DOWN_CONTROL], >> SW_PWRDN); >> >> - qmp_ufs_com_exit(qmp); >> + /* Turn off all the phy clocks */ > > You should drop this and below comment. They add no value. Comments are actually provided for each operation within qmp_ufs_power_off which actually facilitate understanding of all actions performed by the function which may not be fully clear by code. Hence I thought to keep the comments. But If you insist i'll remove. Thanks. Nitin > > - Mani >
diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c index a5974a1fb5bb..fca47e5e8bf0 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c @@ -1758,19 +1758,6 @@ static void qmp_ufs_init_registers(struct qmp_ufs *qmp, const struct qmp_phy_cfg qmp_ufs_init_all(qmp, &cfg->tbls_hs_b); } -static int qmp_ufs_com_exit(struct qmp_ufs *qmp) -{ - const struct qmp_phy_cfg *cfg = qmp->cfg; - - reset_control_assert(qmp->ufs_reset); - - clk_bulk_disable_unprepare(qmp->num_clks, qmp->clks); - - regulator_bulk_disable(cfg->num_vregs, qmp->vregs); - - return 0; -} - static int qmp_ufs_power_on(struct phy *phy) { struct qmp_ufs *qmp = phy_get_drvdata(phy); @@ -1851,7 +1838,11 @@ static int qmp_ufs_power_off(struct phy *phy) qphy_clrbits(qmp->pcs, cfg->regs[QPHY_PCS_POWER_DOWN_CONTROL], SW_PWRDN); - qmp_ufs_com_exit(qmp); + /* Turn off all the phy clocks */ + clk_bulk_disable_unprepare(qmp->num_clks, qmp->clks); + + /* Turn off all the phy rails */ + regulator_bulk_disable(cfg->num_vregs, qmp->vregs); return 0; }