mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 12:35:52 +02:00
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>
This commit is contained in:
parent
43abe48d95
commit
94c4c5d78b
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user