On 2020-12-09 16:22, Stanley Chu wrote:
Hi Can,

On Tue, 2020-12-08 at 22:58 -0800, Can Guo wrote:
ufshcd_hba_exit() is always called after ufshcd_exit_clk_scaling() and
ufshcd_exit_clk_gating(), so no need to suspend clock scaling again in
ufshcd_hba_exit().

Signed-off-by: Can Guo <[email protected]>
---
 drivers/scsi/ufs/ufshcd.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 12266bd..0a5b197 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -7765,6 +7765,7 @@ static void ufshcd_async_scan(void *data, async_cookie_t cookie)
        if (ret) {
                pm_runtime_put_sync(hba->dev);
                ufshcd_exit_clk_scaling(hba);
+               ufshcd_exit_clk_gating(hba);

How about moving above two lines to ufshcd_hba_exit()?

Otherwise looks good to me!
Reviewed-by: Stanley Chu <[email protected]>

You read my mind - I thought about that too, but in ufshcd_init(),
they are separately called on different error out paths.

11232 exit_gating:
11233   ufshcd_exit_clk_scaling(hba);
11234   ufshcd_exit_clk_gating(hba);
11235 out_disable:
11236   hba->is_irq_enabled = false;
11237   ufshcd_hba_exit(hba);

Thanks,

Can Guo.


                ufshcd_hba_exit(hba);
        }
 }
@@ -8203,10 +8204,6 @@ static void ufshcd_hba_exit(struct ufs_hba *hba)
        if (hba->is_powered) {
                ufshcd_variant_hba_exit(hba);
                ufshcd_setup_vreg(hba, false);
-               ufshcd_suspend_clkscaling(hba);
-               if (ufshcd_is_clkscaling_supported(hba))
-                       if (hba->devfreq)
-                               ufshcd_suspend_clkscaling(hba);
                ufshcd_setup_clocks(hba, false);
                ufshcd_setup_hba_vreg(hba, false);
                hba->is_powered = false;

Reply via email to