diff mbox series

[v2,1/5] scsi: ufshpb: Merge ufshpb_reset() and ufshpb_reset_host()

Message ID 20220419183044.789065-2-huobean@gmail.com
State Superseded
Headers show
Series Several changes for UFSHPB | expand

Commit Message

Bean Huo April 19, 2022, 6:30 p.m. UTC
From: Bean Huo <beanhuo@micron.com>

There is no functional change in this patch, just merge ufshpb_reset() and
ufshpb_reset_host() into one function ufshpb_toggle()

Signed-off-by: Bean Huo <beanhuo@micron.com>
---
 drivers/scsi/ufs/ufshcd.c |  4 ++--
 drivers/scsi/ufs/ufshpb.c | 36 +++++++++++++-----------------------
 drivers/scsi/ufs/ufshpb.h |  6 ++----
 3 files changed, 17 insertions(+), 29 deletions(-)

Comments

Keoseong Park April 20, 2022, 2:47 a.m. UTC | #1
Hi Bean,

>From: Bean Huo <beanhuo@micron.com>
> 
>There is no functional change in this patch, just merge ufshpb_reset() and
>ufshpb_reset_host() into one function ufshpb_toggle()
> 
>Signed-off-by: Bean Huo <beanhuo@micron.com>
>---
> drivers/scsi/ufs/ufshcd.c |  4 ++--
> drivers/scsi/ufs/ufshpb.c | 36 +++++++++++++-----------------------
> drivers/scsi/ufs/ufshpb.h |  6 ++----
> 3 files changed, 17 insertions(+), 29 deletions(-)
> 
>diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
>index 0899d5b8cdad..de0bc53e3ac6 100644
>--- a/drivers/scsi/ufs/ufshcd.c
>+++ b/drivers/scsi/ufs/ufshcd.c
>@@ -7223,7 +7223,7 @@ static int ufshcd_host_reset_and_restore(struct ufs_hba *hba)
>          * Stop the host controller and complete the requests
>          * cleared by h/w
>          */
>-        ufshpb_reset_host(hba);
>+        ufshpb_toggle(hba, HPB_PRESENT, HPB_RESET);
>         ufshcd_hba_stop(hba);
>         hba->silence_err_logs = true;
>         ufshcd_complete_requests(hba);
>@@ -8184,7 +8184,7 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool init_dev_params)
>         /* Enable Auto-Hibernate if configured */
>         ufshcd_auto_hibern8_enable(hba);
> 
>-        ufshpb_reset(hba);
>+        ufshpb_toggle(hba, HPB_RESET, HPB_PRESENT);
> out:
>         spin_lock_irqsave(hba->host->host_lock, flags);
>         if (ret)
>diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/scsi/ufs/ufshpb.c
>index 3ca745ad616c..9df032e82ec3 100644
>--- a/drivers/scsi/ufs/ufshpb.c
>+++ b/drivers/scsi/ufs/ufshpb.c
>@@ -2278,38 +2278,28 @@ static bool ufshpb_check_hpb_reset_query(struct ufs_hba *hba)
>         return flag_res;
> }
> 
>-void ufshpb_reset(struct ufs_hba *hba)
>+/**
>+ * ufshpb_toggle - switch HPB state of all LUs
>+ * @hba: per-adapter instance
>+ * @src: expected current HPB state
>+ * @dest: target HPB state to switch to
>+ */
>+void ufshpb_toggle(struct ufs_hba *hba, enum UFSHPB_STATE src, enum UFSHPB_STATE dest)
How about changing it to something like ufshpb_state_toggle()?

Best Regards,
Keoseong Park

> {
>         struct ufshpb_lu *hpb;
>         struct scsi_device *sdev;
> 
>         shost_for_each_device(sdev, hba->host) {
>                 hpb = ufshpb_get_hpb_data(sdev);
>-                if (!hpb)
>-                        continue;
>-
>-                if (ufshpb_get_state(hpb) != HPB_RESET)
>-                        continue;
>-
>-                ufshpb_set_state(hpb, HPB_PRESENT);
>-        }
>-}
>-
>-void ufshpb_reset_host(struct ufs_hba *hba)
>-{
>-        struct ufshpb_lu *hpb;
>-        struct scsi_device *sdev;
> 
>-        shost_for_each_device(sdev, hba->host) {
>-                hpb = ufshpb_get_hpb_data(sdev);
>-                if (!hpb)
>+                if (!hpb || ufshpb_get_state(hpb) != src)
>                         continue;
>+                ufshpb_set_state(hpb, dest);
> 
>-                if (ufshpb_get_state(hpb) != HPB_PRESENT)
>-                        continue;
>-                ufshpb_set_state(hpb, HPB_RESET);
>-                ufshpb_cancel_jobs(hpb);
>-                ufshpb_discard_rsp_lists(hpb);
>+                if (dest == HPB_RESET) {
>+                        ufshpb_cancel_jobs(hpb);
>+                        ufshpb_discard_rsp_lists(hpb);
>+                }
>         }
> }
> 
>diff --git a/drivers/scsi/ufs/ufshpb.h b/drivers/scsi/ufs/ufshpb.h
>index b475dbd78988..2825ec69a6a6 100644
>--- a/drivers/scsi/ufs/ufshpb.h
>+++ b/drivers/scsi/ufs/ufshpb.h
>@@ -288,8 +288,7 @@ static int ufshpb_prep(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) { return 0;
> static void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) {}
> static void ufshpb_resume(struct ufs_hba *hba) {}
> static void ufshpb_suspend(struct ufs_hba *hba) {}
>-static void ufshpb_reset(struct ufs_hba *hba) {}
>-static void ufshpb_reset_host(struct ufs_hba *hba) {}
>+static void ufshpb_toggle(struct ufs_hba *hba, enum UFSHPB_STATE src, enum UFSHPB_STATE dest) {}
> static void ufshpb_init(struct ufs_hba *hba) {}
> static void ufshpb_init_hpb_lu(struct ufs_hba *hba, struct scsi_device *sdev) {}
> static void ufshpb_destroy_lu(struct ufs_hba *hba, struct scsi_device *sdev) {}
>@@ -303,8 +302,7 @@ int ufshpb_prep(struct ufs_hba *hba, struct ufshcd_lrb *lrbp);
> void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp);
> void ufshpb_resume(struct ufs_hba *hba);
> void ufshpb_suspend(struct ufs_hba *hba);
>-void ufshpb_reset(struct ufs_hba *hba);
>-void ufshpb_reset_host(struct ufs_hba *hba);
>+void ufshpb_toggle(struct ufs_hba *hba, enum UFSHPB_STATE src, enum UFSHPB_STATE dest);
> void ufshpb_init(struct ufs_hba *hba);
> void ufshpb_init_hpb_lu(struct ufs_hba *hba, struct scsi_device *sdev);
> void ufshpb_destroy_lu(struct ufs_hba *hba, struct scsi_device *sdev);
>-- 
>2.34.1
> 
>
Bean Huo April 20, 2022, 12:48 p.m. UTC | #2
On Wed, 2022-04-20 at 11:47 +0900, Keoseong Park wrote:
> > +void ufshpb_toggle(struct ufs_hba *hba, enum UFSHPB_STATE src,
> > enum UFSHPB_STATE dest)
> How about changing it to something like ufshpb_state_toggle()?
> 
> Best Regards,
> Keoseong Park

ufshpb_state_toggle() is much better, I will change it in the next
version. Thanks.

Kind regards,
Bean
Bart Van Assche April 21, 2022, 3:48 a.m. UTC | #3
On 4/20/22 05:48, Bean Huo wrote:
> On Wed, 2022-04-20 at 11:47 +0900, Keoseong Park wrote:
>>> +void ufshpb_toggle(struct ufs_hba *hba, enum UFSHPB_STATE src,
>>> enum UFSHPB_STATE dest)
>> How about changing it to something like ufshpb_state_toggle()?
>>
>> Best Regards,
>> Keoseong Park
> 
> ufshpb_state_toggle() is much better, I will change it in the next
> version. Thanks.

How about ufshbp_toggle_state() such that the word order is correct?

Thanks,

Bart.
Bean Huo April 21, 2022, 1:02 p.m. UTC | #4
On Wed, 2022-04-20 at 20:48 -0700, Bart Van Assche wrote:
> > > How about changing it to something like ufshpb_state_toggle()?
> > > 
> > > Best Regards,
> > > Keoseong Park
> > 
> > ufshpb_state_toggle() is much better, I will change it in the next
> > version. Thanks.
> 
> How about ufshbp_toggle_state() such that the word order is correct?
> 
> Thanks,
> 
> Bart.
Sound good, I will change to this one. thanks.

Bean
diff mbox series

Patch

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 0899d5b8cdad..de0bc53e3ac6 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -7223,7 +7223,7 @@  static int ufshcd_host_reset_and_restore(struct ufs_hba *hba)
 	 * Stop the host controller and complete the requests
 	 * cleared by h/w
 	 */
-	ufshpb_reset_host(hba);
+	ufshpb_toggle(hba, HPB_PRESENT, HPB_RESET);
 	ufshcd_hba_stop(hba);
 	hba->silence_err_logs = true;
 	ufshcd_complete_requests(hba);
@@ -8184,7 +8184,7 @@  static int ufshcd_probe_hba(struct ufs_hba *hba, bool init_dev_params)
 	/* Enable Auto-Hibernate if configured */
 	ufshcd_auto_hibern8_enable(hba);
 
-	ufshpb_reset(hba);
+	ufshpb_toggle(hba, HPB_RESET, HPB_PRESENT);
 out:
 	spin_lock_irqsave(hba->host->host_lock, flags);
 	if (ret)
diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/scsi/ufs/ufshpb.c
index 3ca745ad616c..9df032e82ec3 100644
--- a/drivers/scsi/ufs/ufshpb.c
+++ b/drivers/scsi/ufs/ufshpb.c
@@ -2278,38 +2278,28 @@  static bool ufshpb_check_hpb_reset_query(struct ufs_hba *hba)
 	return flag_res;
 }
 
-void ufshpb_reset(struct ufs_hba *hba)
+/**
+ * ufshpb_toggle - switch HPB state of all LUs
+ * @hba: per-adapter instance
+ * @src: expected current HPB state
+ * @dest: target HPB state to switch to
+ */
+void ufshpb_toggle(struct ufs_hba *hba, enum UFSHPB_STATE src, enum UFSHPB_STATE dest)
 {
 	struct ufshpb_lu *hpb;
 	struct scsi_device *sdev;
 
 	shost_for_each_device(sdev, hba->host) {
 		hpb = ufshpb_get_hpb_data(sdev);
-		if (!hpb)
-			continue;
-
-		if (ufshpb_get_state(hpb) != HPB_RESET)
-			continue;
-
-		ufshpb_set_state(hpb, HPB_PRESENT);
-	}
-}
-
-void ufshpb_reset_host(struct ufs_hba *hba)
-{
-	struct ufshpb_lu *hpb;
-	struct scsi_device *sdev;
 
-	shost_for_each_device(sdev, hba->host) {
-		hpb = ufshpb_get_hpb_data(sdev);
-		if (!hpb)
+		if (!hpb || ufshpb_get_state(hpb) != src)
 			continue;
+		ufshpb_set_state(hpb, dest);
 
-		if (ufshpb_get_state(hpb) != HPB_PRESENT)
-			continue;
-		ufshpb_set_state(hpb, HPB_RESET);
-		ufshpb_cancel_jobs(hpb);
-		ufshpb_discard_rsp_lists(hpb);
+		if (dest == HPB_RESET) {
+			ufshpb_cancel_jobs(hpb);
+			ufshpb_discard_rsp_lists(hpb);
+		}
 	}
 }
 
diff --git a/drivers/scsi/ufs/ufshpb.h b/drivers/scsi/ufs/ufshpb.h
index b475dbd78988..2825ec69a6a6 100644
--- a/drivers/scsi/ufs/ufshpb.h
+++ b/drivers/scsi/ufs/ufshpb.h
@@ -288,8 +288,7 @@  static int ufshpb_prep(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) { return 0;
 static void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) {}
 static void ufshpb_resume(struct ufs_hba *hba) {}
 static void ufshpb_suspend(struct ufs_hba *hba) {}
-static void ufshpb_reset(struct ufs_hba *hba) {}
-static void ufshpb_reset_host(struct ufs_hba *hba) {}
+static void ufshpb_toggle(struct ufs_hba *hba, enum UFSHPB_STATE src, enum UFSHPB_STATE dest) {}
 static void ufshpb_init(struct ufs_hba *hba) {}
 static void ufshpb_init_hpb_lu(struct ufs_hba *hba, struct scsi_device *sdev) {}
 static void ufshpb_destroy_lu(struct ufs_hba *hba, struct scsi_device *sdev) {}
@@ -303,8 +302,7 @@  int ufshpb_prep(struct ufs_hba *hba, struct ufshcd_lrb *lrbp);
 void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp);
 void ufshpb_resume(struct ufs_hba *hba);
 void ufshpb_suspend(struct ufs_hba *hba);
-void ufshpb_reset(struct ufs_hba *hba);
-void ufshpb_reset_host(struct ufs_hba *hba);
+void ufshpb_toggle(struct ufs_hba *hba, enum UFSHPB_STATE src, enum UFSHPB_STATE dest);
 void ufshpb_init(struct ufs_hba *hba);
 void ufshpb_init_hpb_lu(struct ufs_hba *hba, struct scsi_device *sdev);
 void ufshpb_destroy_lu(struct ufs_hba *hba, struct scsi_device *sdev);