diff options
Diffstat (limited to 'drivers/ata/libata-core.c')
-rw-r--r-- | drivers/ata/libata-core.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index f6cb1f1b30b7..577849c6611a 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -4235,7 +4235,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { | |||
4235 | ATA_HORKAGE_ZERO_AFTER_TRIM, }, | 4235 | ATA_HORKAGE_ZERO_AFTER_TRIM, }, |
4236 | { "Crucial_CT*MX100*", "MU01", ATA_HORKAGE_NO_NCQ_TRIM | | 4236 | { "Crucial_CT*MX100*", "MU01", ATA_HORKAGE_NO_NCQ_TRIM | |
4237 | ATA_HORKAGE_ZERO_AFTER_TRIM, }, | 4237 | ATA_HORKAGE_ZERO_AFTER_TRIM, }, |
4238 | { "Samsung SSD 850 PRO*", NULL, ATA_HORKAGE_NO_NCQ_TRIM | | 4238 | { "Samsung SSD 8*", NULL, ATA_HORKAGE_NO_NCQ_TRIM | |
4239 | ATA_HORKAGE_ZERO_AFTER_TRIM, }, | 4239 | ATA_HORKAGE_ZERO_AFTER_TRIM, }, |
4240 | 4240 | ||
4241 | /* | 4241 | /* |
@@ -6752,6 +6752,38 @@ u32 ata_wait_register(struct ata_port *ap, void __iomem *reg, u32 mask, u32 val, | |||
6752 | return tmp; | 6752 | return tmp; |
6753 | } | 6753 | } |
6754 | 6754 | ||
6755 | /** | ||
6756 | * sata_lpm_ignore_phy_events - test if PHY event should be ignored | ||
6757 | * @link: Link receiving the event | ||
6758 | * | ||
6759 | * Test whether the received PHY event has to be ignored or not. | ||
6760 | * | ||
6761 | * LOCKING: | ||
6762 | * None: | ||
6763 | * | ||
6764 | * RETURNS: | ||
6765 | * True if the event has to be ignored. | ||
6766 | */ | ||
6767 | bool sata_lpm_ignore_phy_events(struct ata_link *link) | ||
6768 | { | ||
6769 | unsigned long lpm_timeout = link->last_lpm_change + | ||
6770 | msecs_to_jiffies(ATA_TMOUT_SPURIOUS_PHY); | ||
6771 | |||
6772 | /* if LPM is enabled, PHYRDY doesn't mean anything */ | ||
6773 | if (link->lpm_policy > ATA_LPM_MAX_POWER) | ||
6774 | return true; | ||
6775 | |||
6776 | /* ignore the first PHY event after the LPM policy changed | ||
6777 | * as it is might be spurious | ||
6778 | */ | ||
6779 | if ((link->flags & ATA_LFLAG_CHANGED) && | ||
6780 | time_before(jiffies, lpm_timeout)) | ||
6781 | return true; | ||
6782 | |||
6783 | return false; | ||
6784 | } | ||
6785 | EXPORT_SYMBOL_GPL(sata_lpm_ignore_phy_events); | ||
6786 | |||
6755 | /* | 6787 | /* |
6756 | * Dummy port_ops | 6788 | * Dummy port_ops |
6757 | */ | 6789 | */ |