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