]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
scsi: ufs: core: Introduce ufshcd_process_probe_result()
authorBart Van Assche <bvanassche@acm.org>
Wed, 16 Oct 2024 20:12:00 +0000 (13:12 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 25 Oct 2024 19:30:21 +0000 (15:30 -0400)
Prepare for moving a ufshcd_device_init() call from inside
ufshcd_probe_hba() into the ufshcd_probe_hba() callers by introducing
the function ufshcd_process_probe_result(). No functionality has been
changed.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20241016201249.2256266-5-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/core/ufshcd.c

index 4fe2339b1deb8fe506302095ae4487c2594de7ff..67ee6fba6f2a7bafd1045d893170724ce7df9189 100644 (file)
@@ -7638,6 +7638,29 @@ release:
        return err;
 }
 
+/**
+ * ufshcd_process_probe_result - Process the ufshcd_probe_hba() result.
+ * @hba: UFS host controller instance.
+ * @probe_start: time when the ufshcd_probe_hba() call started.
+ * @ret: ufshcd_probe_hba() return value.
+ */
+static void ufshcd_process_probe_result(struct ufs_hba *hba,
+                                       ktime_t probe_start, int ret)
+{
+       unsigned long flags;
+
+       spin_lock_irqsave(hba->host->host_lock, flags);
+       if (ret)
+               hba->ufshcd_state = UFSHCD_STATE_ERROR;
+       else if (hba->ufshcd_state == UFSHCD_STATE_RESET)
+               hba->ufshcd_state = UFSHCD_STATE_OPERATIONAL;
+       spin_unlock_irqrestore(hba->host->host_lock, flags);
+
+       trace_ufshcd_init(dev_name(hba->dev), ret,
+                         ktime_to_us(ktime_sub(ktime_get(), probe_start)),
+                         hba->curr_dev_pwr_mode, hba->uic_link_state);
+}
+
 /**
  * ufshcd_host_reset_and_restore - reset and restore host controller
  * @hba: per-adapter instance
@@ -8804,7 +8827,6 @@ static int ufshcd_device_init(struct ufs_hba *hba, bool init_dev_params)
 static int ufshcd_probe_hba(struct ufs_hba *hba, bool init_dev_params)
 {
        ktime_t start = ktime_get();
-       unsigned long flags;
        int ret;
 
        ret = ufshcd_device_init(hba, init_dev_params);
@@ -8850,16 +8872,7 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool init_dev_params)
        ufshcd_configure_auto_hibern8(hba);
 
 out:
-       spin_lock_irqsave(hba->host->host_lock, flags);
-       if (ret)
-               hba->ufshcd_state = UFSHCD_STATE_ERROR;
-       else if (hba->ufshcd_state == UFSHCD_STATE_RESET)
-               hba->ufshcd_state = UFSHCD_STATE_OPERATIONAL;
-       spin_unlock_irqrestore(hba->host->host_lock, flags);
-
-       trace_ufshcd_init(dev_name(hba->dev), ret,
-               ktime_to_us(ktime_sub(ktime_get(), start)),
-               hba->curr_dev_pwr_mode, hba->uic_link_state);
+       ufshcd_process_probe_result(hba, start, ret);
        return ret;
 }