[RAMEN9610-21009][COMMON] scsi: ufs: Add device reset for malfunction in bkops.
authorJaeHun Jung <jh0801.jung@samsung.com>
Tue, 3 Dec 2019 06:08:00 +0000 (15:08 +0900)
committerCosmin Tanislav <demonsingur@gmail.com>
Mon, 22 Apr 2024 17:23:38 +0000 (20:23 +0300)
When UFS device goes to malfunction in bkops setting.
UFS device return response error code to host.
In case, Add device reset for need recover.

Change-Id: I2ec2ad3c280f2bc7cd29b76251fe4fef580f9eab
Signed-off-by: JaeHun Jung <jh0801.jung@samsung.com>
drivers/scsi/ufs/ufshcd.c

index ddc0bc75d28fcb3c8d6ae777d4f563fef10b3bd1..0df92e99987948507f73f225fcbeb8f5ae063016 100644 (file)
@@ -5204,18 +5204,22 @@ out:
  * as well. This function would change the auto-bkops state based on
  * UFSHCD_CAP_KEEP_AUTO_BKOPS_ENABLED_EXCEPT_SUSPEND.
  */
-static void ufshcd_force_reset_auto_bkops(struct ufs_hba *hba)
+static int ufshcd_force_reset_auto_bkops(struct ufs_hba *hba)
 {
+       int ret = 0;
+
        if (ufshcd_keep_autobkops_enabled_except_suspend(hba)) {
                hba->auto_bkops_enabled = false;
                hba->ee_ctrl_mask |= MASK_EE_URGENT_BKOPS;
-               ufshcd_enable_auto_bkops(hba);
+               ret = ufshcd_enable_auto_bkops(hba);
        } else {
                hba->auto_bkops_enabled = true;
                hba->ee_ctrl_mask &= ~MASK_EE_URGENT_BKOPS;
-               ufshcd_disable_auto_bkops(hba);
+               ret = ufshcd_disable_auto_bkops(hba);
        }
        hba->is_urgent_bkops_lvl_checked = false;
+
+       return ret;
 }
 
 static inline int ufshcd_get_bkops_status(struct ufs_hba *hba, u32 *status)
@@ -6829,7 +6833,11 @@ retry:
 
        /* UFS device is also active now */
        ufshcd_set_ufs_dev_active(hba);
-       ufshcd_force_reset_auto_bkops(hba);
+       ret = ufshcd_force_reset_auto_bkops(hba);
+       if (ret) {
+               device_reset = 1;
+               goto out;
+       }
        hba->wlun_dev_clr_ua = true;
 
        if (ufshcd_get_max_pwr_mode(hba)) {