diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/drivers/ata.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index ba0d6d169e..56dc7d74fe 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c | |||
@@ -809,6 +809,19 @@ void ata_spindown(int seconds) | |||
809 | 809 | ||
810 | bool ata_disk_is_active(void) | 810 | bool ata_disk_is_active(void) |
811 | { | 811 | { |
812 | /* "active" here means "spinning and needs to be shut down" */ | ||
813 | |||
814 | /* SSDs are considered always "inactive" */ | ||
815 | if (ata_disk_isssd()) | ||
816 | return false; | ||
817 | |||
818 | /* We can't directly detect the common iFlash adapters, but they | ||
819 | don't claim to support powermanagement. Without ATA power | ||
820 | management we can never spin down anyway, so there's | ||
821 | no point in even trying. */ | ||
822 | if (!(identify_info[82] & (1 << 3))) | ||
823 | return false; | ||
824 | |||
812 | return ata_state >= ATA_SPINUP; | 825 | return ata_state >= ATA_SPINUP; |
813 | } | 826 | } |
814 | 827 | ||