scsi: ufs: core: Correct ufshcd_shutdown() flow
After ufshcd_wl_shutdown() set device power off and link off,
ufshcd_shutdown() could turn off clock/power. Also remove
pm_runtime_get_sync.
The reason why it is safe to remove pm_runtime_get_sync() is because:
- ufshcd_wl_shutdown() -> pm_runtime_get_sync() will resume hba->dev too.
- device resume(turn on clk/power) is not required, even if device is in
RPM_SUSPENDED.
Link: https://lore.kernel.org/r/20220727030526.31022-1-peter.wang@mediatek.com
Fixes: b294ff3e34
("scsi: ufs: core: Enable power management for wlun")
Cc: <stable@vger.kernel.org> # 5.15.x
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Peter Wang <peter.wang@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
86a44f045b
commit
00511d2abf
@ -9487,12 +9487,8 @@ EXPORT_SYMBOL(ufshcd_runtime_resume);
|
|||||||
int ufshcd_shutdown(struct ufs_hba *hba)
|
int ufshcd_shutdown(struct ufs_hba *hba)
|
||||||
{
|
{
|
||||||
if (ufshcd_is_ufs_dev_poweroff(hba) && ufshcd_is_link_off(hba))
|
if (ufshcd_is_ufs_dev_poweroff(hba) && ufshcd_is_link_off(hba))
|
||||||
goto out;
|
|
||||||
|
|
||||||
pm_runtime_get_sync(hba->dev);
|
|
||||||
|
|
||||||
ufshcd_suspend(hba);
|
ufshcd_suspend(hba);
|
||||||
out:
|
|
||||||
hba->is_powered = false;
|
hba->is_powered = false;
|
||||||
/* allow force shutdown even in case of errors */
|
/* allow force shutdown even in case of errors */
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user