* [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; 6+ 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] 6+ 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; 6+ 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] 6+ 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; 6+ 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] 6+ 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; 6+ 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] 6+ 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; 6+ 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] 6+ 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; 6+ 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] 6+ messages in thread
end of thread, other threads:[~2021-09-28 17:30 UTC | newest]
Thread overview: 6+ 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
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.