mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] scsi: ufs: qcom: Power down UFS during system suspend on Milos
@ 2026-10-05 17:02 Alexander Koskovich
  2026-10-09 20:30 ` Jorijn van der Graaf
  2026-10-24  3:09 ` Martin K. Petersen
  0 siblings, 2 replies; 3+ messages in thread
From: Alexander Koskovich @ 2026-10-05 17:02 UTC (permalink / raw)
  To: Manivannan Sadhasivam, James E.J. Bottomley, Martin K. Petersen,
	Abel Vesa, Konrad Dybcio, Luca Weiss, Bjorn Andersson,
	Dmitry Baryshkov
  Cc: linux-arm-msm, linux-scsi, linux-kernel, Alexander Koskovich

On Milos the UFS PHY GDSC is turned off on every system suspend and the
PHY loses its register state, so exiting hibern8 on resume fails:

ufshcd-qcom 1d84000.ufshc: pwr ctrl cmd 0x18 with (MIBattribute 0x0, mode 0x0) failed, host upmcrs:0x5
ufshcd-qcom 1d84000.ufshc: ufshcd_uic_hibern8_exit: hibern8 exit failed. ret = 5
ufshcd-qcom 1d84000.ufshc: __ufshcd_wl_resume: hibern8 exit failed 5

Set no_phy_retention so the controller and device are powered down
during system suspend and the link is brought up again on resume.

Fixes: 04bb37433330 ("arm64: dts: qcom: milos: Add UFS nodes")
Signed-off-by: Alexander Koskovich <akoskovich@pm.me>
---
 drivers/ufs/host/ufs-qcom.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c
index 7e6cb6dc42d1..e979850c05cb 100644
--- a/drivers/ufs/host/ufs-qcom.c
+++ b/drivers/ufs/host/ufs-qcom.c
@@ -3033,6 +3033,10 @@ static void ufs_qcom_remove(struct platform_device *pdev)
 		platform_device_msi_free_irqs_all(hba->dev);
 }
 
+static const struct ufs_qcom_drvdata ufs_qcom_milos_drvdata = {
+	.no_phy_retention = true,
+};
+
 static const struct ufs_qcom_drvdata ufs_qcom_sm8550_drvdata = {
 	.quirks = UFSHCD_QUIRK_BROKEN_LSDBS_CAP,
 	.no_phy_retention = true,
@@ -3044,6 +3048,7 @@ static const struct ufs_qcom_drvdata ufs_qcom_sa8255p_drvdata = {
 
 static const struct of_device_id ufs_qcom_of_match[] __maybe_unused = {
 	{ .compatible = "qcom,ufshc" },
+	{ .compatible = "qcom,milos-ufshc", .data = &ufs_qcom_milos_drvdata },
 	{ .compatible = "qcom,sm8550-ufshc", .data = &ufs_qcom_sm8550_drvdata },
 	{ .compatible = "qcom,sm8650-ufshc", .data = &ufs_qcom_sm8550_drvdata },
 	{ .compatible = "qcom,sa8255p-ufshc", .data = &ufs_qcom_sa8255p_drvdata },

---
base-commit: bf1ee2bd5c2da8992f33c8950ef194aaff74ed6c
change-id: 20261005-milos-ufs-suspend-7dd7439543a6

Best regards,
--  
Alexander Koskovich <akoskovich@pm.me>



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

* Re: [PATCH] scsi: ufs: qcom: Power down UFS during system suspend on Milos
  2026-10-05 17:02 [PATCH] scsi: ufs: qcom: Power down UFS during system suspend on Milos Alexander Koskovich
@ 2026-10-09 20:30 ` Jorijn van der Graaf
  2026-10-24  3:09 ` Martin K. Petersen
  1 sibling, 0 replies; 3+ messages in thread
From: Jorijn van der Graaf @ 2026-10-09 20:30 UTC (permalink / raw)
  To: Alexander Koskovich
  Cc: Jorijn van der Graaf, Manivannan Sadhasivam,
	James E.J. Bottomley, Martin K. Petersen, Abel Vesa,
	Konrad Dybcio, Luca Weiss, Bjorn Andersson, Dmitry Baryshkov,
	linux-arm-msm, linux-scsi, linux-kernel

On Mon, Oct 05, 2026 at 05:02:06PM +0000, Alexander Koskovich wrote:
> On Milos the UFS PHY GDSC is turned off on every system suspend and the
> PHY loses its register state, so exiting hibern8 on resume fails:
> 
> ufshcd-qcom 1d84000.ufshc: pwr ctrl cmd 0x18 with (MIBattribute 0x0, mode 0x0) failed, host upmcrs:0x5
> ufshcd-qcom 1d84000.ufshc: ufshcd_uic_hibern8_exit: hibern8 exit failed. ret = 5
> ufshcd-qcom 1d84000.ufshc: __ufshcd_wl_resume: hibern8 exit failed 5
> 
> Set no_phy_retention so the controller and device are powered down
> during system suspend and the link is brought up again on resume.

On the Fairphone (Gen. 6) which is also milos using 7.3/scsi-fixes (469fa055664b)
3 of 3 s2idle resumes fail hibern8 exit with the quoted lines above.

With the patch 5 s2idle and 10 deep suspend/resume cycles: no hibern8 exit failure
ufshcd_wl_resume 32-35 ms each, a 4 MiB fsync write succeeds after every resume.

Tested-by: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>

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

* Re: [PATCH] scsi: ufs: qcom: Power down UFS during system suspend on Milos
  2026-10-05 17:02 [PATCH] scsi: ufs: qcom: Power down UFS during system suspend on Milos Alexander Koskovich
  2026-10-09 20:30 ` Jorijn van der Graaf
@ 2026-10-24  3:09 ` Martin K. Petersen
  1 sibling, 0 replies; 3+ messages in thread
From: Martin K. Petersen @ 2026-10-24  3:09 UTC (permalink / raw)
  To: Alexander Koskovich
  Cc: Manivannan Sadhasivam, James E.J. Bottomley, Martin K. Petersen,
	Abel Vesa, Konrad Dybcio, Luca Weiss, Bjorn Andersson,
	Dmitry Baryshkov, linux-arm-msm, linux-scsi, linux-kernel


Alexander,

> On Milos the UFS PHY GDSC is turned off on every system suspend and
> the PHY loses its register state, so exiting hibern8 on resume fails:

Applied to 7.4/scsi-staging, thanks!

-- 
Martin K. Petersen

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

end of thread, other threads:[~2026-10-24  3:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-05 17:02 [PATCH] scsi: ufs: qcom: Power down UFS during system suspend on Milos Alexander Koskovich
2026-10-09 20:30 ` Jorijn van der Graaf
2026-10-24  3:09 ` Martin K. Petersen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®