Loading drivers/scsi/ufs/ufs_quirks.c +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ static struct ufs_card_fix ufs_fixups[] = { 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_TOSHIBA, "THGLF2G9C8KBADG", UFS_DEVICE_QUIRK_PA_TACTIVATE), UFS_FIX(UFS_VENDOR_TOSHIBA, "THGLF2G9D8KBADG", Loading drivers/scsi/ufs/ufs_quirks.h +7 −0 Original line number Diff line number Diff line Loading @@ -115,6 +115,13 @@ struct ufs_card_fix { */ #define UFS_DEVICE_QUIRK_PA_TACTIVATE (1 << 4) /* * Some UFS memory devices may have really low read/write throughput in * FAST AUTO mode, enable this quirk to make sure that FAST AUTO mode is * never enabled for such devices. */ #define UFS_DEVICE_NO_FASTAUTO (1 << 5) struct ufs_hba; void ufs_advertise_fixup_device(struct ufs_hba *hba); #endif /* UFS_QUIRKS_H_ */ drivers/scsi/ufs/ufshcd.c +4 −0 Original line number Diff line number Diff line Loading @@ -8469,6 +8469,10 @@ static int ufshcd_scale_gear(struct ufs_hba *hba, bool scale_up) /* scale down gear */ new_pwr_info.gear_tx = UFS_MIN_GEAR_TO_SCALE_DOWN; new_pwr_info.gear_rx = UFS_MIN_GEAR_TO_SCALE_DOWN; if (!(hba->dev_quirks & UFS_DEVICE_NO_FASTAUTO)) { new_pwr_info.pwr_tx = FASTAUTO_MODE; new_pwr_info.pwr_rx = FASTAUTO_MODE; } } } Loading Loading
drivers/scsi/ufs/ufs_quirks.c +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ static struct ufs_card_fix ufs_fixups[] = { 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_TOSHIBA, "THGLF2G9C8KBADG", UFS_DEVICE_QUIRK_PA_TACTIVATE), UFS_FIX(UFS_VENDOR_TOSHIBA, "THGLF2G9D8KBADG", Loading
drivers/scsi/ufs/ufs_quirks.h +7 −0 Original line number Diff line number Diff line Loading @@ -115,6 +115,13 @@ struct ufs_card_fix { */ #define UFS_DEVICE_QUIRK_PA_TACTIVATE (1 << 4) /* * Some UFS memory devices may have really low read/write throughput in * FAST AUTO mode, enable this quirk to make sure that FAST AUTO mode is * never enabled for such devices. */ #define UFS_DEVICE_NO_FASTAUTO (1 << 5) struct ufs_hba; void ufs_advertise_fixup_device(struct ufs_hba *hba); #endif /* UFS_QUIRKS_H_ */
drivers/scsi/ufs/ufshcd.c +4 −0 Original line number Diff line number Diff line Loading @@ -8469,6 +8469,10 @@ static int ufshcd_scale_gear(struct ufs_hba *hba, bool scale_up) /* scale down gear */ new_pwr_info.gear_tx = UFS_MIN_GEAR_TO_SCALE_DOWN; new_pwr_info.gear_rx = UFS_MIN_GEAR_TO_SCALE_DOWN; if (!(hba->dev_quirks & UFS_DEVICE_NO_FASTAUTO)) { new_pwr_info.pwr_tx = FASTAUTO_MODE; new_pwr_info.pwr_rx = FASTAUTO_MODE; } } } Loading