linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V3] scsi: ufs: ufs-qcom: add fixup_dev_quirks vops
@ 2024-09-03 13:15 Manish Pandey
  2024-09-30 15:43 ` Manivannan Sadhasivam
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Manish Pandey @ 2024-09-03 13:15 UTC (permalink / raw)
  To: Manivannan Sadhasivam, James E.J. Bottomley, Martin K. Petersen
  Cc: linux-arm-msm, linux-scsi, linux-kernel, quic_nitirawa,
	quic_bhaskarv, quic_narepall, quic_rampraka, quic_mapa, quic_cang,
	quic_nguyenb

Add fixup_dev_quirk vops in QCOM UFS platforms and provide an initial
vendor-specific device quirk table to add UFS device specific quirks
which are enabled only for specified UFS devices.

- Add DELAY_BEFORE_LPM quirk for Skhynix UFS devices to introduce a
  delay before VCC is powered off in QCOM platforms.
- Add DELAY_AFTER_LPM quirk for Toshiba UFS devices to introduce a
  delay after the VCC power rail is turned off in QCOM platforms.
- Move UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE quirk from
  ufs_qcom_apply_dev_quirks to ufs_qcom_dev_fixups.

Signed-off-by: Manish Pandey <quic_mapa@quicinc.com>
---

Changes from v2:
- Addressed Mani's comments.
- Moved quirk for WDC to ufs_qcom_dev_fixups.

Changes from v2:
- Integrated Bart’s feedback and consolidated the patches into one.
---
 drivers/ufs/host/ufs-qcom.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c
index c87fdc849c62..6a715373d81c 100644
--- a/drivers/ufs/host/ufs-qcom.c
+++ b/drivers/ufs/host/ufs-qcom.c
@@ -828,12 +828,28 @@ static int ufs_qcom_apply_dev_quirks(struct ufs_hba *hba)
 	if (hba->dev_quirks & UFS_DEVICE_QUIRK_HOST_PA_SAVECONFIGTIME)
 		err = ufs_qcom_quirk_host_pa_saveconfigtime(hba);
 
-	if (hba->dev_info.wmanufacturerid == UFS_VENDOR_WDC)
-		hba->dev_quirks |= UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE;
-
 	return err;
 }
 
+/* UFS device-specific quirks */
+static struct ufs_dev_quirk ufs_qcom_dev_fixups[] = {
+	{ .wmanufacturerid = UFS_VENDOR_SKHYNIX,
+	  .model = UFS_ANY_MODEL,
+	  .quirk = UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM },
+	{ .wmanufacturerid = UFS_VENDOR_TOSHIBA,
+	  .model = UFS_ANY_MODEL,
+	  .quirk = UFS_DEVICE_QUIRK_DELAY_AFTER_LPM },
+	{ .wmanufacturerid = UFS_VENDOR_WDC,
+	  .model = UFS_ANY_MODEL,
+	  .quirk = UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE },
+	{}
+};
+
+static void ufs_qcom_fixup_dev_quirks(struct ufs_hba *hba)
+{
+	ufshcd_fixup_dev_quirks(hba, ufs_qcom_dev_fixups);
+}
+
 static u32 ufs_qcom_get_ufs_hci_version(struct ufs_hba *hba)
 {
 	return ufshci_version(2, 0);
@@ -1801,6 +1817,7 @@ static const struct ufs_hba_variant_ops ufs_hba_qcom_vops = {
 	.link_startup_notify    = ufs_qcom_link_startup_notify,
 	.pwr_change_notify	= ufs_qcom_pwr_change_notify,
 	.apply_dev_quirks	= ufs_qcom_apply_dev_quirks,
+	.fixup_dev_quirks       = ufs_qcom_fixup_dev_quirks,
 	.suspend		= ufs_qcom_suspend,
 	.resume			= ufs_qcom_resume,
 	.dbg_register_dump	= ufs_qcom_dump_dbg_regs,
-- 
2.17.1


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

* Re: [PATCH V3] scsi: ufs: ufs-qcom: add fixup_dev_quirks vops
  2024-09-03 13:15 [PATCH V3] scsi: ufs: ufs-qcom: add fixup_dev_quirks vops Manish Pandey
@ 2024-09-30 15:43 ` Manivannan Sadhasivam
  2024-10-04  2:03 ` Martin K. Petersen
  2024-10-16  2:40 ` Martin K. Petersen
  2 siblings, 0 replies; 4+ messages in thread
From: Manivannan Sadhasivam @ 2024-09-30 15:43 UTC (permalink / raw)
  To: Manish Pandey
  Cc: James E.J. Bottomley, Martin K. Petersen, linux-arm-msm,
	linux-scsi, linux-kernel, quic_nitirawa, quic_bhaskarv,
	quic_narepall, quic_rampraka, quic_cang, quic_nguyenb

On Tue, Sep 03, 2024 at 06:45:46PM +0530, Manish Pandey wrote:
> Add fixup_dev_quirk vops in QCOM UFS platforms and provide an initial
> vendor-specific device quirk table to add UFS device specific quirks
> which are enabled only for specified UFS devices.
> 
> - Add DELAY_BEFORE_LPM quirk for Skhynix UFS devices to introduce a
>   delay before VCC is powered off in QCOM platforms.
> - Add DELAY_AFTER_LPM quirk for Toshiba UFS devices to introduce a
>   delay after the VCC power rail is turned off in QCOM platforms.
> - Move UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE quirk from
>   ufs_qcom_apply_dev_quirks to ufs_qcom_dev_fixups.
> 
> Signed-off-by: Manish Pandey <quic_mapa@quicinc.com>

I'd still like to have these quirks in the core driver if they apply to other
platforms as well. But I'll leave it up to you to check with respective device
manufacturers.

Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>

- Mani

> ---
> 
> Changes from v2:
> - Addressed Mani's comments.
> - Moved quirk for WDC to ufs_qcom_dev_fixups.
> 
> Changes from v2:
> - Integrated Bart’s feedback and consolidated the patches into one.
> ---
>  drivers/ufs/host/ufs-qcom.c | 23 ++++++++++++++++++++---
>  1 file changed, 20 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c
> index c87fdc849c62..6a715373d81c 100644
> --- a/drivers/ufs/host/ufs-qcom.c
> +++ b/drivers/ufs/host/ufs-qcom.c
> @@ -828,12 +828,28 @@ static int ufs_qcom_apply_dev_quirks(struct ufs_hba *hba)
>  	if (hba->dev_quirks & UFS_DEVICE_QUIRK_HOST_PA_SAVECONFIGTIME)
>  		err = ufs_qcom_quirk_host_pa_saveconfigtime(hba);
>  
> -	if (hba->dev_info.wmanufacturerid == UFS_VENDOR_WDC)
> -		hba->dev_quirks |= UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE;
> -
>  	return err;
>  }
>  
> +/* UFS device-specific quirks */
> +static struct ufs_dev_quirk ufs_qcom_dev_fixups[] = {
> +	{ .wmanufacturerid = UFS_VENDOR_SKHYNIX,
> +	  .model = UFS_ANY_MODEL,
> +	  .quirk = UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM },
> +	{ .wmanufacturerid = UFS_VENDOR_TOSHIBA,
> +	  .model = UFS_ANY_MODEL,
> +	  .quirk = UFS_DEVICE_QUIRK_DELAY_AFTER_LPM },
> +	{ .wmanufacturerid = UFS_VENDOR_WDC,
> +	  .model = UFS_ANY_MODEL,
> +	  .quirk = UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE },
> +	{}
> +};
> +
> +static void ufs_qcom_fixup_dev_quirks(struct ufs_hba *hba)
> +{
> +	ufshcd_fixup_dev_quirks(hba, ufs_qcom_dev_fixups);
> +}
> +
>  static u32 ufs_qcom_get_ufs_hci_version(struct ufs_hba *hba)
>  {
>  	return ufshci_version(2, 0);
> @@ -1801,6 +1817,7 @@ static const struct ufs_hba_variant_ops ufs_hba_qcom_vops = {
>  	.link_startup_notify    = ufs_qcom_link_startup_notify,
>  	.pwr_change_notify	= ufs_qcom_pwr_change_notify,
>  	.apply_dev_quirks	= ufs_qcom_apply_dev_quirks,
> +	.fixup_dev_quirks       = ufs_qcom_fixup_dev_quirks,
>  	.suspend		= ufs_qcom_suspend,
>  	.resume			= ufs_qcom_resume,
>  	.dbg_register_dump	= ufs_qcom_dump_dbg_regs,
> -- 
> 2.17.1
> 

-- 
மணிவண்ணன் சதாசிவம்

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

* Re: [PATCH V3] scsi: ufs: ufs-qcom: add fixup_dev_quirks vops
  2024-09-03 13:15 [PATCH V3] scsi: ufs: ufs-qcom: add fixup_dev_quirks vops Manish Pandey
  2024-09-30 15:43 ` Manivannan Sadhasivam
@ 2024-10-04  2:03 ` Martin K. Petersen
  2024-10-16  2:40 ` Martin K. Petersen
  2 siblings, 0 replies; 4+ messages in thread
From: Martin K. Petersen @ 2024-10-04  2:03 UTC (permalink / raw)
  To: Manish Pandey
  Cc: Manivannan Sadhasivam, James E.J. Bottomley, Martin K. Petersen,
	linux-arm-msm, linux-scsi, linux-kernel, quic_nitirawa,
	quic_bhaskarv, quic_narepall, quic_rampraka, quic_cang,
	quic_nguyenb


Manish,

> Add fixup_dev_quirk vops in QCOM UFS platforms and provide an initial
> vendor-specific device quirk table to add UFS device specific quirks
> which are enabled only for specified UFS devices.

Applied to 6.13/scsi-staging, thanks!

-- 
Martin K. Petersen	Oracle Linux Engineering

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

* Re: [PATCH V3] scsi: ufs: ufs-qcom: add fixup_dev_quirks vops
  2024-09-03 13:15 [PATCH V3] scsi: ufs: ufs-qcom: add fixup_dev_quirks vops Manish Pandey
  2024-09-30 15:43 ` Manivannan Sadhasivam
  2024-10-04  2:03 ` Martin K. Petersen
@ 2024-10-16  2:40 ` Martin K. Petersen
  2 siblings, 0 replies; 4+ messages in thread
From: Martin K. Petersen @ 2024-10-16  2:40 UTC (permalink / raw)
  To: Manivannan Sadhasivam, James E.J. Bottomley, Manish Pandey
  Cc: Martin K . Petersen, linux-arm-msm, linux-scsi, linux-kernel,
	quic_nitirawa, quic_bhaskarv, quic_narepall, quic_rampraka,
	quic_cang, quic_nguyenb

On Tue, 03 Sep 2024 18:45:46 +0530, Manish Pandey wrote:

> Add fixup_dev_quirk vops in QCOM UFS platforms and provide an initial
> vendor-specific device quirk table to add UFS device specific quirks
> which are enabled only for specified UFS devices.
> 
> - Add DELAY_BEFORE_LPM quirk for Skhynix UFS devices to introduce a
>   delay before VCC is powered off in QCOM platforms.
> - Add DELAY_AFTER_LPM quirk for Toshiba UFS devices to introduce a
>   delay after the VCC power rail is turned off in QCOM platforms.
> - Move UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE quirk from
>   ufs_qcom_apply_dev_quirks to ufs_qcom_dev_fixups.
> 
> [...]

Applied to 6.13/scsi-queue, thanks!

[1/1] scsi: ufs: ufs-qcom: add fixup_dev_quirks vops
      https://git.kernel.org/mkp/scsi/c/94c4c5d78b0f

-- 
Martin K. Petersen	Oracle Linux Engineering

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

end of thread, other threads:[~2024-10-16  2:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-03 13:15 [PATCH V3] scsi: ufs: ufs-qcom: add fixup_dev_quirks vops Manish Pandey
2024-09-30 15:43 ` Manivannan Sadhasivam
2024-10-04  2:03 ` Martin K. Petersen
2024-10-16  2:40 ` 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;
as well as URLs for NNTP newsgroup(s).