Message ID | 20250515162722.6933-8-quic_nitirawa@quicinc.com |
---|---|
State | New |
Headers | show |
Series | Refactor ufs phy powerup sequence | expand |
On Thu, May 22, 2025 at 03:49:12AM +0530, Nitin Rawat wrote: > > > 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 . > You should mention it in the description. > > > > > > 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. > For complex code, comment should be added indeed. But for clk_bulk_disable_unprepare() and regulator_bulk_disable(), NO. It is obvious that they turn off clock and regulators. - Mani
On 5/22/2025 2:23 PM, Manivannan Sadhasivam wrote: > On Thu, May 22, 2025 at 03:49:12AM +0530, Nitin Rawat wrote: >> >> >> 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 . >> > > You should mention it in the description. Sure, will update the commit text. > >> >>> >>>> 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. >> > > For complex code, comment should be added indeed. But for > clk_bulk_disable_unprepare() and regulator_bulk_disable(), NO. It is obvious > that they turn off clock and regulators. ok sure, will remove it. > > - 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; }