All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Put Qualcomm's ufs controller to hibern8 during clock scaling
@ 2021-09-28  9:06 Bao D. Nguyen
  2021-09-28  9:06 ` [PATCH v2 1/2] scsi: ufs: export hibern8 entry and exit Bao D. Nguyen
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Bao D. Nguyen @ 2021-09-28  9:06 UTC (permalink / raw)
  To: cang, asutoshd, martin.petersen, linux-scsi; +Cc: Bao D. Nguyen, linux-arm-msm

Asutosh Das tried to upstream this change about a year ago.
We would like to resume his work because Qualcomm's ufs controller
needs to be in hibern8 before scaling up/down the clocks.
Just like ufshcd_uic_hibern8_exit() is already being exported,
we would like to export ufshcd_uic_hibern8_enter() so that
Qualcomm's ufs controller can be put in hibern8 state.

Changes from v1:
- Removed the extra ufshcd_uic_hibern8_exit().
- Moved the ufshcd_uic_hibern8_enter() above the current ufshcd_uic_hibern8_exit().

Asutosh Das (2):
  scsi: ufs: export hibern8 entry and exit
  scsi: ufs-qcom: enter and exit hibern8 during clock scaling

 drivers/scsi/ufs/ufs-qcom.c | 12 +++++++++++-
 drivers/scsi/ufs/ufshcd.c   |  4 ++--
 drivers/scsi/ufs/ufshcd.h   |  1 +
 3 files changed, 14 insertions(+), 3 deletions(-)

-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 1/2] scsi: ufs: export hibern8 entry and exit
  2021-09-28  9:06 [PATCH v2 0/2] Put Qualcomm's ufs controller to hibern8 during clock scaling Bao D. Nguyen
@ 2021-09-28  9:06 ` Bao D. Nguyen
  2021-09-28 22:28   ` Bart Van Assche
  2021-09-29  3:13   ` Alim Akhtar
  2021-09-28  9:06 ` [PATCH v2 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling Bao D. Nguyen
  2021-10-05  4:34 ` [PATCH v2 0/2] Put Qualcomm's ufs controller to " Martin K. Petersen
  2 siblings, 2 replies; 7+ messages in thread
From: Bao D. Nguyen @ 2021-09-28  9:06 UTC (permalink / raw)
  To: cang, asutoshd, martin.petersen, linux-scsi
  Cc: linux-arm-msm, Bao D . Nguyen, Alim Akhtar, Avri Altman,
	James E.J. Bottomley, Bean Huo, Stanley Chu, Bart Van Assche,
	Jaegeuk Kim, Adrian Hunter, Keoseong Park, open list

From: Asutosh Das <asutoshd@codeaurora.org>

Qualcomm controllers need to be in hibern8 before scaling up
or down the clocks. Hence, export the hibern8 entry and exit
functions.

Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Bao D. Nguyen <nguyenb@codeaurora.org>
---
 drivers/scsi/ufs/ufshcd.c | 4 ++--
 drivers/scsi/ufs/ufshcd.h | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 3841ab49..f3aad32 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -227,7 +227,6 @@ static void ufshcd_hba_exit(struct ufs_hba *hba);
 static int ufshcd_clear_ua_wluns(struct ufs_hba *hba);
 static int ufshcd_probe_hba(struct ufs_hba *hba, bool async);
 static int ufshcd_setup_clocks(struct ufs_hba *hba, bool on);
-static int ufshcd_uic_hibern8_enter(struct ufs_hba *hba);
 static inline void ufshcd_add_delay_before_dme_cmd(struct ufs_hba *hba);
 static int ufshcd_host_reset_and_restore(struct ufs_hba *hba);
 static void ufshcd_resume_clkscaling(struct ufs_hba *hba);
@@ -4116,7 +4115,7 @@ int ufshcd_link_recovery(struct ufs_hba *hba)
 }
 EXPORT_SYMBOL_GPL(ufshcd_link_recovery);
 
-static int ufshcd_uic_hibern8_enter(struct ufs_hba *hba)
+int ufshcd_uic_hibern8_enter(struct ufs_hba *hba)
 {
 	int ret;
 	struct uic_command uic_cmd = {0};
@@ -4138,6 +4137,7 @@ static int ufshcd_uic_hibern8_enter(struct ufs_hba *hba)
 
 	return ret;
 }
+EXPORT_SYMBOL_GPL(ufshcd_uic_hibern8_enter);
 
 int ufshcd_uic_hibern8_exit(struct ufs_hba *hba)
 {
diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
index 52ea6f3..124f50b 100644
--- a/drivers/scsi/ufs/ufshcd.h
+++ b/drivers/scsi/ufs/ufshcd.h
@@ -1001,6 +1001,7 @@ int ufshcd_init(struct ufs_hba *, void __iomem *, unsigned int);
 int ufshcd_link_recovery(struct ufs_hba *hba);
 int ufshcd_make_hba_operational(struct ufs_hba *hba);
 void ufshcd_remove(struct ufs_hba *);
+int ufshcd_uic_hibern8_enter(struct ufs_hba *hba);
 int ufshcd_uic_hibern8_exit(struct ufs_hba *hba);
 void ufshcd_delay_us(unsigned long us, unsigned long tolerance);
 int ufshcd_wait_for_register(struct ufs_hba *hba, u32 reg, u32 mask,
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling
  2021-09-28  9:06 [PATCH v2 0/2] Put Qualcomm's ufs controller to hibern8 during clock scaling Bao D. Nguyen
  2021-09-28  9:06 ` [PATCH v2 1/2] scsi: ufs: export hibern8 entry and exit Bao D. Nguyen
@ 2021-09-28  9:06 ` Bao D. Nguyen
  2021-09-29  3:16   ` Alim Akhtar
  2021-10-05  4:34 ` [PATCH v2 0/2] Put Qualcomm's ufs controller to " Martin K. Petersen
  2 siblings, 1 reply; 7+ messages in thread
From: Bao D. Nguyen @ 2021-09-28  9:06 UTC (permalink / raw)
  To: cang, asutoshd, martin.petersen, linux-scsi
  Cc: linux-arm-msm, Bao D . Nguyen, Andy Gross, Bjorn Andersson,
	Alim Akhtar, Avri Altman, James E.J. Bottomley, open list

From: Asutosh Das <asutoshd@codeaurora.org>

Qualcomm controller needs to be in hibern8 before scaling clocks.
This change puts the controller in hibern8 state before scaling
and brings it out after scaling of clocks.

Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Bao D. Nguyen <nguyenb@codeaurora.org>
---
 drivers/scsi/ufs/ufs-qcom.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
index 92d4c61..92f5bb4 100644
--- a/drivers/scsi/ufs/ufs-qcom.c
+++ b/drivers/scsi/ufs/ufs-qcom.c
@@ -1212,24 +1212,34 @@ static int ufs_qcom_clk_scale_notify(struct ufs_hba *hba,
 	int err = 0;
 
 	if (status == PRE_CHANGE) {
+		err = ufshcd_uic_hibern8_enter(hba);
+		if (err)
+			return err;
 		if (scale_up)
 			err = ufs_qcom_clk_scale_up_pre_change(hba);
 		else
 			err = ufs_qcom_clk_scale_down_pre_change(hba);
+		if (err)
+			ufshcd_uic_hibern8_exit(hba);
+
 	} else {
 		if (scale_up)
 			err = ufs_qcom_clk_scale_up_post_change(hba);
 		else
 			err = ufs_qcom_clk_scale_down_post_change(hba);
 
-		if (err || !dev_req_params)
+
+		if (err || !dev_req_params) {
+			ufshcd_uic_hibern8_exit(hba);
 			goto out;
+		}
 
 		ufs_qcom_cfg_timers(hba,
 				    dev_req_params->gear_rx,
 				    dev_req_params->pwr_rx,
 				    dev_req_params->hs_rate,
 				    false);
+		ufshcd_uic_hibern8_exit(hba);
 	}
 
 out:
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 1/2] scsi: ufs: export hibern8 entry and exit
  2021-09-28  9:06 ` [PATCH v2 1/2] scsi: ufs: export hibern8 entry and exit Bao D. Nguyen
@ 2021-09-28 22:28   ` Bart Van Assche
  2021-09-29  3:13   ` Alim Akhtar
  1 sibling, 0 replies; 7+ messages in thread
From: Bart Van Assche @ 2021-09-28 22:28 UTC (permalink / raw)
  To: Bao D. Nguyen, cang, asutoshd, martin.petersen, linux-scsi
  Cc: linux-arm-msm, Alim Akhtar, Avri Altman, James E.J. Bottomley,
	Bean Huo, Stanley Chu, Jaegeuk Kim, Adrian Hunter, Keoseong Park,
	open list

On 9/28/21 2:06 AM, Bao D. Nguyen wrote:
> Qualcomm controllers need to be in hibern8 before scaling up
> or down the clocks. Hence, export the hibern8 entry and exit
> functions.
Reviewed-by: Bart Van Assche <bvanassche@acm.org>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [PATCH v2 1/2] scsi: ufs: export hibern8 entry and exit
  2021-09-28  9:06 ` [PATCH v2 1/2] scsi: ufs: export hibern8 entry and exit Bao D. Nguyen
  2021-09-28 22:28   ` Bart Van Assche
@ 2021-09-29  3:13   ` Alim Akhtar
  1 sibling, 0 replies; 7+ messages in thread
From: Alim Akhtar @ 2021-09-29  3:13 UTC (permalink / raw)
  To: 'Bao D. Nguyen', cang, asutoshd, martin.petersen, linux-scsi
  Cc: linux-arm-msm, 'Avri Altman',
	'James E.J. Bottomley', 'Bean Huo',
	'Stanley Chu', 'Bart Van Assche',
	'Jaegeuk Kim', 'Adrian Hunter',
	'Keoseong Park', 'open list'


Hello,

>-----Original Message-----
>From: nguyenb=codeaurora.org@mg.codeaurora.org
>[mailto:nguyenb=codeaurora.org@mg.codeaurora.org] On Behalf Of Bao D.
>Nguyen
>Sent: Tuesday, September 28, 2021 2:36 PM
>To: cang@codeaurora.org; asutoshd@codeaurora.org;
>martin.petersen@oracle.com; linux-scsi@vger.kernel.org
>Cc: linux-arm-msm@vger.kernel.org; Bao D . Nguyen
><nguyenb@codeaurora.org>; Alim Akhtar <alim.akhtar@samsung.com>; Avri
>Altman <avri.altman@wdc.com>; James E.J. Bottomley <jejb@linux.ibm.com>;
>Bean Huo <beanhuo@micron.com>; Stanley Chu <stanley.chu@mediatek.com>;
>Bart Van Assche <bvanassche@acm.org>; Jaegeuk Kim <jaegeuk@kernel.org>;
>Adrian Hunter <adrian.hunter@intel.com>; Keoseong Park
><keosung.park@samsung.com>; open list <linux-kernel@vger.kernel.org>
>Subject: [PATCH v2 1/2] scsi: ufs: export hibern8 entry and exit
>
>From: Asutosh Das <asutoshd@codeaurora.org>
>
>Qualcomm controllers need to be in hibern8 before scaling up or down the
>clocks. Hence, export the hibern8 entry and exit functions.
>
>Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
>Signed-off-by: Bao D. Nguyen <nguyenb@codeaurora.org>
>---

Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>

> drivers/scsi/ufs/ufshcd.c | 4 ++--
> drivers/scsi/ufs/ufshcd.h | 1 +
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index
>3841ab49..f3aad32 100644
>--- a/drivers/scsi/ufs/ufshcd.c
>+++ b/drivers/scsi/ufs/ufshcd.c
>@@ -227,7 +227,6 @@ static void ufshcd_hba_exit(struct ufs_hba *hba);
static
>int ufshcd_clear_ua_wluns(struct ufs_hba *hba);  static int
>ufshcd_probe_hba(struct ufs_hba *hba, bool async);  static int
>ufshcd_setup_clocks(struct ufs_hba *hba, bool on); -static int
>ufshcd_uic_hibern8_enter(struct ufs_hba *hba);  static inline void
>ufshcd_add_delay_before_dme_cmd(struct ufs_hba *hba);  static int
>ufshcd_host_reset_and_restore(struct ufs_hba *hba);  static void
>ufshcd_resume_clkscaling(struct ufs_hba *hba); @@ -4116,7 +4115,7 @@ int
>ufshcd_link_recovery(struct ufs_hba *hba)  }
>EXPORT_SYMBOL_GPL(ufshcd_link_recovery);
>
>-static int ufshcd_uic_hibern8_enter(struct ufs_hba *hba)
>+int ufshcd_uic_hibern8_enter(struct ufs_hba *hba)
> {
> 	int ret;
> 	struct uic_command uic_cmd = {0};
>@@ -4138,6 +4137,7 @@ static int ufshcd_uic_hibern8_enter(struct ufs_hba
>*hba)
>
> 	return ret;
> }
>+EXPORT_SYMBOL_GPL(ufshcd_uic_hibern8_enter);
>
> int ufshcd_uic_hibern8_exit(struct ufs_hba *hba)  { diff --git
>a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index
52ea6f3..124f50b
>100644
>--- a/drivers/scsi/ufs/ufshcd.h
>+++ b/drivers/scsi/ufs/ufshcd.h
>@@ -1001,6 +1001,7 @@ int ufshcd_init(struct ufs_hba *, void __iomem *,
>unsigned int);  int ufshcd_link_recovery(struct ufs_hba *hba);  int
>ufshcd_make_hba_operational(struct ufs_hba *hba);  void
ufshcd_remove(struct
>ufs_hba *);
>+int ufshcd_uic_hibern8_enter(struct ufs_hba *hba);
> int ufshcd_uic_hibern8_exit(struct ufs_hba *hba);  void
>ufshcd_delay_us(unsigned long us, unsigned long tolerance);  int
>ufshcd_wait_for_register(struct ufs_hba *hba, u32 reg, u32 mask,
>--
>The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a
>Linux Foundation Collaborative Project



^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [PATCH v2 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling
  2021-09-28  9:06 ` [PATCH v2 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling Bao D. Nguyen
@ 2021-09-29  3:16   ` Alim Akhtar
  0 siblings, 0 replies; 7+ messages in thread
From: Alim Akhtar @ 2021-09-29  3:16 UTC (permalink / raw)
  To: 'Bao D. Nguyen', cang, asutoshd, martin.petersen, linux-scsi
  Cc: linux-arm-msm, 'Andy Gross', 'Bjorn Andersson',
	'Avri Altman', 'James E.J. Bottomley',
	'open list'

Hello,

>-----Original Message-----
>From: nguyenb=codeaurora.org@mg.codeaurora.org
>[mailto:nguyenb=codeaurora.org@mg.codeaurora.org] On Behalf Of Bao D.
>Nguyen
>Sent: Tuesday, September 28, 2021 2:36 PM
>To: cang@codeaurora.org; asutoshd@codeaurora.org;
>martin.petersen@oracle.com; linux-scsi@vger.kernel.org
>Cc: linux-arm-msm@vger.kernel.org; Bao D . Nguyen
><nguyenb@codeaurora.org>; Andy Gross <agross@kernel.org>; Bjorn Andersson
><bjorn.andersson@linaro.org>; Alim Akhtar <alim.akhtar@samsung.com>; Avri
>Altman <avri.altman@wdc.com>; James E.J. Bottomley <jejb@linux.ibm.com>;
>open list <linux-kernel@vger.kernel.org>
>Subject: [PATCH v2 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock
scaling
>
>From: Asutosh Das <asutoshd@codeaurora.org>
>
>Qualcomm controller needs to be in hibern8 before scaling clocks.
>This change puts the controller in hibern8 state before scaling and brings
it out
>after scaling of clocks.
>
>Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
>Signed-off-by: Bao D. Nguyen <nguyenb@codeaurora.org>
>---

Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>

> drivers/scsi/ufs/ufs-qcom.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
index
>92d4c61..92f5bb4 100644
>--- a/drivers/scsi/ufs/ufs-qcom.c
>+++ b/drivers/scsi/ufs/ufs-qcom.c
>@@ -1212,24 +1212,34 @@ static int ufs_qcom_clk_scale_notify(struct ufs_hba
>*hba,
> 	int err = 0;
>
> 	if (status == PRE_CHANGE) {
>+		err = ufshcd_uic_hibern8_enter(hba);
>+		if (err)
>+			return err;
> 		if (scale_up)
> 			err = ufs_qcom_clk_scale_up_pre_change(hba);
> 		else
> 			err = ufs_qcom_clk_scale_down_pre_change(hba);
>+		if (err)
>+			ufshcd_uic_hibern8_exit(hba);
>+
> 	} else {
> 		if (scale_up)
> 			err = ufs_qcom_clk_scale_up_post_change(hba);
> 		else
> 			err = ufs_qcom_clk_scale_down_post_change(hba);
>
>-		if (err || !dev_req_params)
>+
>+		if (err || !dev_req_params) {
>+			ufshcd_uic_hibern8_exit(hba);
> 			goto out;
>+		}
>
> 		ufs_qcom_cfg_timers(hba,
> 				    dev_req_params->gear_rx,
> 				    dev_req_params->pwr_rx,
> 				    dev_req_params->hs_rate,
> 				    false);
>+		ufshcd_uic_hibern8_exit(hba);
> 	}
>
> out:
>--
>The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a
>Linux Foundation Collaborative Project



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 0/2] Put Qualcomm's ufs controller to hibern8 during clock scaling
  2021-09-28  9:06 [PATCH v2 0/2] Put Qualcomm's ufs controller to hibern8 during clock scaling Bao D. Nguyen
  2021-09-28  9:06 ` [PATCH v2 1/2] scsi: ufs: export hibern8 entry and exit Bao D. Nguyen
  2021-09-28  9:06 ` [PATCH v2 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling Bao D. Nguyen
@ 2021-10-05  4:34 ` Martin K. Petersen
  2 siblings, 0 replies; 7+ messages in thread
From: Martin K. Petersen @ 2021-10-05  4:34 UTC (permalink / raw)
  To: asutoshd, Bao D. Nguyen, linux-scsi, cang
  Cc: Martin K . Petersen, linux-arm-msm

On Tue, 28 Sep 2021 02:06:11 -0700, Bao D. Nguyen wrote:

> Asutosh Das tried to upstream this change about a year ago.
> We would like to resume his work because Qualcomm's ufs controller
> needs to be in hibern8 before scaling up/down the clocks.
> Just like ufshcd_uic_hibern8_exit() is already being exported,
> we would like to export ufshcd_uic_hibern8_enter() so that
> Qualcomm's ufs controller can be put in hibern8 state.
> 
> [...]

Applied to 5.16/scsi-queue, thanks!

[1/2] scsi: ufs: export hibern8 entry and exit
      https://git.kernel.org/mkp/scsi/c/525943a586ef
[2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling
      https://git.kernel.org/mkp/scsi/c/a0cea83332ae

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-10-05  4:35 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-28  9:06 [PATCH v2 0/2] Put Qualcomm's ufs controller to hibern8 during clock scaling Bao D. Nguyen
2021-09-28  9:06 ` [PATCH v2 1/2] scsi: ufs: export hibern8 entry and exit Bao D. Nguyen
2021-09-28 22:28   ` Bart Van Assche
2021-09-29  3:13   ` Alim Akhtar
2021-09-28  9:06 ` [PATCH v2 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling Bao D. Nguyen
2021-09-29  3:16   ` Alim Akhtar
2021-10-05  4:34 ` [PATCH v2 0/2] Put Qualcomm's ufs controller to " Martin K. Petersen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.