scsi: ufs: ufs-mediatek: Disable reset confirm feature by UniPro
authorPo-Wen Kao <powen.kao@mediatek.com>
Thu, 23 Jun 2022 03:50:49 +0000 (11:50 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 28 Jun 2022 03:17:36 +0000 (23:17 -0400)
In MediaTek UFS platforms, UniPro will not return reset confirm if it is in
POWERDOWN state thus hang issue may happen while disabling UFSHCI. Simply
disable this feature before UniPro leaves POWERDOWN state.

Link: https://lore.kernel.org/r/20220623035052.18802-6-stanley.chu@mediatek.com
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Po-Wen Kao <powen.kao@mediatek.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/host/ufs-mediatek.c

index 0cc7d4faccec4e02422cd3563adc2daec2780af7..a7482f530f27d44b4bb4392d026fffa343c4bb62 100644 (file)
@@ -1079,6 +1079,11 @@ static int ufs_mtk_link_set_lpm(struct ufs_hba *hba)
 {
        int err;
 
+       /* Disable reset confirm feature by UniPro */
+       ufshcd_writel(hba,
+                     (ufshcd_readl(hba, REG_UFS_XOUFS_CTRL) & ~0x100),
+                     REG_UFS_XOUFS_CTRL);
+
        err = ufs_mtk_unipro_set_lpm(hba, true);
        if (err) {
                /* Resume UniPro state for following error recovery */