Skip to content

Commit 94c4c5d

Browse files
quic-mapamartinkpetersen
authored andcommitted
scsi: ufs: ufs-qcom: Add fixup_dev_quirks vops
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> Link: https://lore.kernel.org/r/20240903131546.1141-1-quic_mapa@quicinc.com Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent 43abe48 commit 94c4c5d

1 file changed

Lines changed: 20 additions & 3 deletions

File tree

drivers/ufs/host/ufs-qcom.c

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -828,12 +828,28 @@ static int ufs_qcom_apply_dev_quirks(struct ufs_hba *hba)
828828
if (hba->dev_quirks & UFS_DEVICE_QUIRK_HOST_PA_SAVECONFIGTIME)
829829
err = ufs_qcom_quirk_host_pa_saveconfigtime(hba);
830830

831-
if (hba->dev_info.wmanufacturerid == UFS_VENDOR_WDC)
832-
hba->dev_quirks |= UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE;
833-
834831
return err;
835832
}
836833

834+
/* UFS device-specific quirks */
835+
static struct ufs_dev_quirk ufs_qcom_dev_fixups[] = {
836+
{ .wmanufacturerid = UFS_VENDOR_SKHYNIX,
837+
.model = UFS_ANY_MODEL,
838+
.quirk = UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM },
839+
{ .wmanufacturerid = UFS_VENDOR_TOSHIBA,
840+
.model = UFS_ANY_MODEL,
841+
.quirk = UFS_DEVICE_QUIRK_DELAY_AFTER_LPM },
842+
{ .wmanufacturerid = UFS_VENDOR_WDC,
843+
.model = UFS_ANY_MODEL,
844+
.quirk = UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE },
845+
{}
846+
};
847+
848+
static void ufs_qcom_fixup_dev_quirks(struct ufs_hba *hba)
849+
{
850+
ufshcd_fixup_dev_quirks(hba, ufs_qcom_dev_fixups);
851+
}
852+
837853
static u32 ufs_qcom_get_ufs_hci_version(struct ufs_hba *hba)
838854
{
839855
return ufshci_version(2, 0);
@@ -1801,6 +1817,7 @@ static const struct ufs_hba_variant_ops ufs_hba_qcom_vops = {
18011817
.link_startup_notify = ufs_qcom_link_startup_notify,
18021818
.pwr_change_notify = ufs_qcom_pwr_change_notify,
18031819
.apply_dev_quirks = ufs_qcom_apply_dev_quirks,
1820+
.fixup_dev_quirks = ufs_qcom_fixup_dev_quirks,
18041821
.suspend = ufs_qcom_suspend,
18051822
.resume = ufs_qcom_resume,
18061823
.dbg_register_dump = ufs_qcom_dump_dbg_regs,

0 commit comments

Comments
 (0)