linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 0/2] Put Qualcomm's ufs controller to hibern8 during clock scaling
@ 2021-09-20 21:07 Bao D. Nguyen
  2021-09-20 21:07 ` [PATCH v1 1/2] scsi: ufs: export hibern8 entry and exit Bao D. Nguyen
  2021-09-20 21:07 ` [PATCH v1 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling Bao D. Nguyen
  0 siblings, 2 replies; 7+ messages in thread
From: Bao D. Nguyen @ 2021-09-20 21:07 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.

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   |  2 ++
 3 files changed, 15 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 v1 1/2] scsi: ufs: export hibern8 entry and exit
  2021-09-20 21:07 [PATCH v1 0/2] Put Qualcomm's ufs controller to hibern8 during clock scaling Bao D. Nguyen
@ 2021-09-20 21:07 ` Bao D. Nguyen
  2021-09-28  5:39   ` Alim Akhtar
  2021-09-20 21:07 ` [PATCH v1 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling Bao D. Nguyen
  1 sibling, 1 reply; 7+ messages in thread
From: Bao D. Nguyen @ 2021-09-20 21:07 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 | 2 ++
 2 files changed, 4 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..0cc55a2 100644
--- a/drivers/scsi/ufs/ufshcd.h
+++ b/drivers/scsi/ufs/ufshcd.h
@@ -1397,4 +1397,6 @@ static inline int ufshcd_rpmb_rpm_put(struct ufs_hba *hba)
 	return pm_runtime_put(&hba->sdev_rpmb->sdev_gendev);
 }
 
+int ufshcd_uic_hibern8_enter(struct ufs_hba *hba);
+int ufshcd_uic_hibern8_exit(struct ufs_hba *hba);
 #endif /* End of Header */
-- 
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 v1 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling
  2021-09-20 21:07 [PATCH v1 0/2] Put Qualcomm's ufs controller to hibern8 during clock scaling Bao D. Nguyen
  2021-09-20 21:07 ` [PATCH v1 1/2] scsi: ufs: export hibern8 entry and exit Bao D. Nguyen
@ 2021-09-20 21:07 ` Bao D. Nguyen
  2021-09-28  6:03   ` Alim Akhtar
  1 sibling, 1 reply; 7+ messages in thread
From: Bao D. Nguyen @ 2021-09-20 21:07 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 v1 1/2] scsi: ufs: export hibern8 entry and exit
  2021-09-20 21:07 ` [PATCH v1 1/2] scsi: ufs: export hibern8 entry and exit Bao D. Nguyen
@ 2021-09-28  5:39   ` Alim Akhtar
  2021-09-28 17:30     ` nguyenb
  0 siblings, 1 reply; 7+ messages in thread
From: Alim Akhtar @ 2021-09-28  5:39 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'

Hi Bao

>-----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 21, 2021 2:38 AM
>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 v1 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>
>---
> drivers/scsi/ufs/ufshcd.c | 4 ++--
> drivers/scsi/ufs/ufshcd.h | 2 ++
> 2 files changed, 4 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..0cc55a2
>100644
>--- a/drivers/scsi/ufs/ufshcd.h
>+++ b/drivers/scsi/ufs/ufshcd.h
>@@ -1397,4 +1397,6 @@ static inline int ufshcd_rpmb_rpm_put(struct ufs_hba
>*hba)
> 	return pm_runtime_put(&hba->sdev_rpmb->sdev_gendev);
> }
>
>+int ufshcd_uic_hibern8_enter(struct ufs_hba *hba); int
>+ufshcd_uic_hibern8_exit(struct ufs_hba *hba);

This will add ufshcd_uic_hibern8_exit() twice, it is already add by 
commit: 9d19bf7ad168a8: scsi: ufs: export some functions for vendor usage

Also move ufshcd_uic_hibern8_enter() before _earlier_
ufshcd_uic_hibern8_exit() declaration.

> #endif /* End of Header */
>--
>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 v1 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling
  2021-09-20 21:07 ` [PATCH v1 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling Bao D. Nguyen
@ 2021-09-28  6:03   ` Alim Akhtar
  0 siblings, 0 replies; 7+ messages in thread
From: Alim Akhtar @ 2021-09-28  6:03 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 21, 2021 2:38 AM
>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 v1 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 v1 1/2] scsi: ufs: export hibern8 entry and exit
  2021-09-28  5:39   ` Alim Akhtar
@ 2021-09-28 17:30     ` nguyenb
  0 siblings, 0 replies; 7+ messages in thread
From: nguyenb @ 2021-09-28 17:30 UTC (permalink / raw)
  To: Alim Akhtar
  Cc: cang, asutoshd, martin.petersen, linux-scsi, linux-arm-msm,
	'Avri Altman', 'James E.J. Bottomley',
	'Bean Huo', 'Stanley Chu',
	'Bart Van Assche', 'Jaegeuk Kim',
	'Adrian Hunter', 'Keoseong Park',
	'open list'

On 2021-09-27 22:39, Alim Akhtar wrote:
> Hi Bao
> 
>> -----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 21, 2021 2:38 AM
>> 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 v1 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>
>> ---
>> drivers/scsi/ufs/ufshcd.c | 4 ++--
>> drivers/scsi/ufs/ufshcd.h | 2 ++
>> 2 files changed, 4 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..0cc55a2
>> 100644
>> --- a/drivers/scsi/ufs/ufshcd.h
>> +++ b/drivers/scsi/ufs/ufshcd.h
>> @@ -1397,4 +1397,6 @@ static inline int ufshcd_rpmb_rpm_put(struct 
>> ufs_hba
>> *hba)
>> 	return pm_runtime_put(&hba->sdev_rpmb->sdev_gendev);
>> }
>> 
>> +int ufshcd_uic_hibern8_enter(struct ufs_hba *hba); int
>> +ufshcd_uic_hibern8_exit(struct ufs_hba *hba);
> 
> This will add ufshcd_uic_hibern8_exit() twice, it is already add by
> commit: 9d19bf7ad168a8: scsi: ufs: export some functions for vendor 
> usage
Thank you, Alim. I have corrected this in Patch V2.

> 
> Also move ufshcd_uic_hibern8_enter() before _earlier_
> ufshcd_uic_hibern8_exit() declaration.
Yes, I have addressed this in the Patch V2. Please review.
Thank you.

> 
>> #endif /* End of Header */
>> --
>> 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 v1 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling
  2019-10-23  1:40 [PATCH v1 1/2] scsi: ufs: export hibern8 entry and exit Asutosh Das
@ 2019-10-23  1:40 ` Asutosh Das
  0 siblings, 0 replies; 7+ messages in thread
From: Asutosh Das @ 2019-10-23  1:40 UTC (permalink / raw)
  To: cang, vivek.gautam, rnayak, vinholikatti, jejb, martin.petersen
  Cc: linux-scsi, kernel-team, saravanak, salyzyn, Asutosh Das,
	Andy Gross, Alim Akhtar, Avri Altman, Pedro Sousa,
	James E.J. Bottomley, open list:ARM/QUALCOMM SUPPORT, open list

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>
---
 drivers/scsi/ufs/ufs-qcom.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
index a5b7148..d117088 100644
--- a/drivers/scsi/ufs/ufs-qcom.c
+++ b/drivers/scsi/ufs/ufs-qcom.c
@@ -1305,6 +1305,9 @@ 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
@@ -1324,6 +1327,7 @@ static int ufs_qcom_clk_scale_notify(struct ufs_hba *hba,
 				    dev_req_params->hs_rate,
 				    false);
 		ufs_qcom_update_bus_bw_vote(host);
+		ufshcd_uic_hibern8_exit(hba);
 	}
 
 out:
-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.


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

end of thread, other threads:[~2021-09-28 17:30 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-20 21:07 [PATCH v1 0/2] Put Qualcomm's ufs controller to hibern8 during clock scaling Bao D. Nguyen
2021-09-20 21:07 ` [PATCH v1 1/2] scsi: ufs: export hibern8 entry and exit Bao D. Nguyen
2021-09-28  5:39   ` Alim Akhtar
2021-09-28 17:30     ` nguyenb
2021-09-20 21:07 ` [PATCH v1 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling Bao D. Nguyen
2021-09-28  6:03   ` Alim Akhtar
  -- strict thread matches above, loose matches on Subject: below --
2019-10-23  1:40 [PATCH v1 1/2] scsi: ufs: export hibern8 entry and exit Asutosh Das
2019-10-23  1:40 ` [PATCH v1 2/2] scsi: ufs-qcom: enter and exit hibern8 during clock scaling Asutosh Das

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).