scsi: ufs-mediatek: add error recovery for suspend and resume
authorStanley Chu <stanley.chu@mediatek.com>
Fri, 27 Mar 2020 09:53:29 +0000 (17:53 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sun, 29 Mar 2020 22:10:58 +0000 (18:10 -0400)
commit8033824bbf3c15e6321045a3f51d6f6947d89d47
tree54b9bba27ee37a5ecb14ba664757543acb9e37b0
parent087c5efafa48661ac98184fbf8826a1a79dc5784
scsi: ufs-mediatek: add error recovery for suspend and resume

Once fail happens during suspend and resume flow if the desired low power
link state is H8, link recovery is required for MediaTek UFS controller.

For resume flow, since power and clocks are already enabled before invoking
vendor's resume callback, simply using ufshcd_link_recovery() inside
callback is fine.

For suspend flow, the device power enters low power mode or is disabled
before suspend callback, thus ufshcd_link_recovery() can not be directly
used in vendor callback. One solution is to set the link to off state and
then ufshcd_host_reset_and_restore() will be executed by ufshcd_suspend().

Link: https://lore.kernel.org/r/20200327095329.10083-3-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufs-mediatek.c