linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 1/2] scsi: ufs: Put hba into LPM during clk gating
@ 2020-10-26 23:30 Asutosh Das
  2020-10-26 23:30 ` [PATCH v1 2/2] ufs: qcom: Enable aggressive power collapse for ufs hba Asutosh Das
  2020-10-27  1:53 ` [PATCH v1 1/2] scsi: ufs: Put hba into LPM during clk gating Stanley Chu
  0 siblings, 2 replies; 4+ messages in thread
From: Asutosh Das @ 2020-10-26 23:30 UTC (permalink / raw)
  To: cang, martin.petersen, linux-scsi
  Cc: linux-arm-msm, Asutosh Das, Alim Akhtar, Avri Altman,
	James E.J. Bottomley, Stanley Chu, Bean Huo, Bart Van Assche,
	Satya Tangirala, open list

From: Can Guo <cang@codeaurora.org>

During clock gating, after clocks are disabled,
put hba into LPM to save more power.

Signed-off-by: Can Guo <cang@codeaurora.org>
Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
---
 drivers/scsi/ufs/ufshcd.c |  7 +++++--
 drivers/scsi/ufs/ufshcd.h | 13 +++++++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 47c544d..55ca8c6 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -1548,6 +1548,7 @@ static void ufshcd_ungate_work(struct work_struct *work)
 	}
 
 	spin_unlock_irqrestore(hba->host->host_lock, flags);
+	ufshcd_hba_vreg_set_hpm(hba);
 	ufshcd_setup_clocks(hba, true);
 
 	ufshcd_enable_irq(hba);
@@ -1713,6 +1714,8 @@ static void ufshcd_gate_work(struct work_struct *work)
 		/* If link is active, device ref_clk can't be switched off */
 		__ufshcd_setup_clocks(hba, false, true);
 
+	/* Put the host controller in low power mode if possible */
+	ufshcd_hba_vreg_set_lpm(hba);
 	/*
 	 * In case you are here to cancel this work the gating state
 	 * would be marked as REQ_CLKS_ON. In this case keep the state
@@ -8405,13 +8408,13 @@ static int ufshcd_vreg_set_hpm(struct ufs_hba *hba)
 
 static void ufshcd_hba_vreg_set_lpm(struct ufs_hba *hba)
 {
-	if (ufshcd_is_link_off(hba))
+	if (ufshcd_is_link_off(hba) || ufshcd_can_aggressive_pc(hba))
 		ufshcd_setup_hba_vreg(hba, false);
 }
 
 static void ufshcd_hba_vreg_set_hpm(struct ufs_hba *hba)
 {
-	if (ufshcd_is_link_off(hba))
+	if (ufshcd_is_link_off(hba) || ufshcd_can_aggressive_pc(hba))
 		ufshcd_setup_hba_vreg(hba, true);
 }
 
diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
index 47eb143..0fbb735 100644
--- a/drivers/scsi/ufs/ufshcd.h
+++ b/drivers/scsi/ufs/ufshcd.h
@@ -592,6 +592,13 @@ enum ufshcd_caps {
 	 * inline crypto engine, if it is present
 	 */
 	UFSHCD_CAP_CRYPTO				= 1 << 8,
+
+	/*
+	 * This capability allows the controller regulators to be put into
+	 * lpm mode aggressively during clock gating.
+	 * This would increase power savings.
+	 */
+	UFSHCD_CAP_AGGR_POWER_COLLAPSE			= 1 << 9,
 };
 
 struct ufs_hba_variant_params {
@@ -829,6 +836,12 @@ return true;
 #endif
 }
 
+static inline bool ufshcd_can_aggressive_pc(struct ufs_hba *hba)
+{
+	return !!(ufshcd_is_link_hibern8(hba) &&
+		  (hba->caps & UFSHCD_CAP_AGGR_POWER_COLLAPSE));
+}
+
 static inline bool ufshcd_is_auto_hibern8_supported(struct ufs_hba *hba)
 {
 	return (hba->capabilities & MASK_AUTO_HIBERN8_SUPPORT) &&
-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.


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

* [PATCH v1 2/2] ufs: qcom: Enable aggressive power collapse for ufs hba
  2020-10-26 23:30 [PATCH v1 1/2] scsi: ufs: Put hba into LPM during clk gating Asutosh Das
@ 2020-10-26 23:30 ` Asutosh Das
  2020-10-27  2:06   ` Can Guo
  2020-10-27  1:53 ` [PATCH v1 1/2] scsi: ufs: Put hba into LPM during clk gating Stanley Chu
  1 sibling, 1 reply; 4+ messages in thread
From: Asutosh Das @ 2020-10-26 23:30 UTC (permalink / raw)
  To: cang, martin.petersen, linux-scsi
  Cc: Asutosh Das, linux-arm-msm, Andy Gross, Bjorn Andersson,
	Alim Akhtar, Avri Altman, James E.J. Bottomley, open list

Enabling this capability to let hba power-collapse
more often to save power.

Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
---
 drivers/scsi/ufs/ufs-qcom.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
index f9d6ef3..9a19c6d 100644
--- a/drivers/scsi/ufs/ufs-qcom.c
+++ b/drivers/scsi/ufs/ufs-qcom.c
@@ -863,6 +863,7 @@ static void ufs_qcom_set_caps(struct ufs_hba *hba)
 	hba->caps |= UFSHCD_CAP_AUTO_BKOPS_SUSPEND;
 	hba->caps |= UFSHCD_CAP_WB_EN;
 	hba->caps |= UFSHCD_CAP_CRYPTO;
+	hba->caps |= UFSHCD_CAP_AGGR_POWER_COLLAPSE;
 
 	if (host->hw_ver.major >= 0x2) {
 		host->caps = UFS_QCOM_CAP_QUNIPRO |
-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.


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

* Re: [PATCH v1 1/2] scsi: ufs: Put hba into LPM during clk gating
  2020-10-26 23:30 [PATCH v1 1/2] scsi: ufs: Put hba into LPM during clk gating Asutosh Das
  2020-10-26 23:30 ` [PATCH v1 2/2] ufs: qcom: Enable aggressive power collapse for ufs hba Asutosh Das
@ 2020-10-27  1:53 ` Stanley Chu
  1 sibling, 0 replies; 4+ messages in thread
From: Stanley Chu @ 2020-10-27  1:53 UTC (permalink / raw)
  To: Asutosh Das
  Cc: cang, martin.petersen, linux-scsi, linux-arm-msm, Alim Akhtar,
	Avri Altman, James E.J. Bottomley, Bean Huo, Bart Van Assche,
	Satya Tangirala, open list

On Mon, 2020-10-26 at 16:30 -0700, Asutosh Das wrote:
> From: Can Guo <cang@codeaurora.org>
> 
> During clock gating, after clocks are disabled,
> put hba into LPM to save more power.
> 
> Signed-off-by: Can Guo <cang@codeaurora.org>
> Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>

Acked-by: Stanley Chu <stanley.chu@mediatek.com>



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

* Re: [PATCH v1 2/2] ufs: qcom: Enable aggressive power collapse for ufs hba
  2020-10-26 23:30 ` [PATCH v1 2/2] ufs: qcom: Enable aggressive power collapse for ufs hba Asutosh Das
@ 2020-10-27  2:06   ` Can Guo
  0 siblings, 0 replies; 4+ messages in thread
From: Can Guo @ 2020-10-27  2:06 UTC (permalink / raw)
  To: Asutosh Das
  Cc: martin.petersen, linux-scsi, linux-arm-msm, Andy Gross,
	Bjorn Andersson, Alim Akhtar, Avri Altman, James E.J. Bottomley,
	linux-kernel

On 2020-10-27 07:30, Asutosh Das wrote:
> Enabling this capability to let hba power-collapse
> more often to save power.
> 
> Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>

Reviewed-by: Can Guo <cang@codeaurora.org>

> ---
>  drivers/scsi/ufs/ufs-qcom.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
> index f9d6ef3..9a19c6d 100644
> --- a/drivers/scsi/ufs/ufs-qcom.c
> +++ b/drivers/scsi/ufs/ufs-qcom.c
> @@ -863,6 +863,7 @@ static void ufs_qcom_set_caps(struct ufs_hba *hba)
>  	hba->caps |= UFSHCD_CAP_AUTO_BKOPS_SUSPEND;
>  	hba->caps |= UFSHCD_CAP_WB_EN;
>  	hba->caps |= UFSHCD_CAP_CRYPTO;
> +	hba->caps |= UFSHCD_CAP_AGGR_POWER_COLLAPSE;
> 
>  	if (host->hw_ver.major >= 0x2) {
>  		host->caps = UFS_QCOM_CAP_QUNIPRO |

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

end of thread, other threads:[~2020-10-27  2:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-26 23:30 [PATCH v1 1/2] scsi: ufs: Put hba into LPM during clk gating Asutosh Das
2020-10-26 23:30 ` [PATCH v1 2/2] ufs: qcom: Enable aggressive power collapse for ufs hba Asutosh Das
2020-10-27  2:06   ` Can Guo
2020-10-27  1:53 ` [PATCH v1 1/2] scsi: ufs: Put hba into LPM during clk gating Stanley Chu

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