* [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
* 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 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
* [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 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
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 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).