|
@@ -185,6 +185,30 @@ ufs_get_pm_lvl_to_link_pwr_state(enum ufs_pm_level lvl)
|
|
|
return ufs_pm_lvl_states[lvl].link_state;
|
|
|
}
|
|
|
|
|
|
+static struct ufs_dev_fix ufs_fixups[] = {
|
|
|
+ /* UFS cards deviations table */
|
|
|
+ UFS_FIX(UFS_VENDOR_SAMSUNG, UFS_ANY_MODEL,
|
|
|
+ UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM),
|
|
|
+ UFS_FIX(UFS_VENDOR_SAMSUNG, UFS_ANY_MODEL, UFS_DEVICE_NO_VCCQ),
|
|
|
+ UFS_FIX(UFS_VENDOR_SAMSUNG, UFS_ANY_MODEL,
|
|
|
+ UFS_DEVICE_QUIRK_RECOVERY_FROM_DL_NAC_ERRORS),
|
|
|
+ UFS_FIX(UFS_VENDOR_SAMSUNG, UFS_ANY_MODEL,
|
|
|
+ UFS_DEVICE_NO_FASTAUTO),
|
|
|
+ UFS_FIX(UFS_VENDOR_SAMSUNG, UFS_ANY_MODEL,
|
|
|
+ UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE),
|
|
|
+ UFS_FIX(UFS_VENDOR_TOSHIBA, UFS_ANY_MODEL,
|
|
|
+ UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM),
|
|
|
+ UFS_FIX(UFS_VENDOR_TOSHIBA, "THGLF2G9C8KBADG",
|
|
|
+ UFS_DEVICE_QUIRK_PA_TACTIVATE),
|
|
|
+ UFS_FIX(UFS_VENDOR_TOSHIBA, "THGLF2G9D8KBADG",
|
|
|
+ UFS_DEVICE_QUIRK_PA_TACTIVATE),
|
|
|
+ UFS_FIX(UFS_VENDOR_SKHYNIX, UFS_ANY_MODEL, UFS_DEVICE_NO_VCCQ),
|
|
|
+ UFS_FIX(UFS_VENDOR_SKHYNIX, UFS_ANY_MODEL,
|
|
|
+ UFS_DEVICE_QUIRK_HOST_PA_SAVECONFIGTIME),
|
|
|
+
|
|
|
+ END_FIX
|
|
|
+};
|
|
|
+
|
|
|
static void ufshcd_tmc_handler(struct ufs_hba *hba);
|
|
|
static void ufshcd_async_scan(void *data, async_cookie_t cookie);
|
|
|
static int ufshcd_reset_and_restore(struct ufs_hba *hba);
|
|
@@ -5213,6 +5237,8 @@ static void ufshcd_tune_unipro_params(struct ufs_hba *hba)
|
|
|
|
|
|
if (hba->dev_quirks & UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE)
|
|
|
ufshcd_quirk_tune_host_pa_tactivate(hba);
|
|
|
+
|
|
|
+ ufshcd_vops_apply_dev_quirks(hba);
|
|
|
}
|
|
|
|
|
|
/**
|