diff mbox series

[V5,07/11] phy: qcom-qmp-ufs: Remove qmp_ufs_exit() and Inline qmp_ufs_com_exit()

Message ID 20250515162722.6933-8-quic_nitirawa@quicinc.com
State New
Headers show
Series Refactor ufs phy powerup sequence | expand

Commit Message

Nitin Rawat May 15, 2025, 4:27 p.m. UTC
qmp_ufs_exit() is a wrapper function. It only calls qmp_ufs_com_exit().
Remove it to simplify the ufs phy driver.

Additonally partial Inline(dropping the reset assert) qmp_ufs_com_exit
into qmp_ufs_power_off function to avoid unnecessary function call.

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(-)

Comments

Manivannan Sadhasivam May 21, 2025, 1:49 p.m. UTC | #1
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
Nitin Rawat May 21, 2025, 10:19 p.m. UTC | #2
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
>
Manivannan Sadhasivam May 22, 2025, 8:53 a.m. UTC | #3
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
Nitin Rawat May 22, 2025, 9:20 a.m. UTC | #4
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 mbox series

Patch

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;
 }