diff options
Diffstat (limited to 'firmware/drivers')
-rw-r--r-- | firmware/drivers/ata.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index 5331e7f589..cb857158ca 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c | |||
@@ -1116,8 +1116,13 @@ static int set_features(void) | |||
1116 | 1116 | ||
1117 | #ifdef HAVE_ATA_DMA | 1117 | #ifdef HAVE_ATA_DMA |
1118 | if (identify_info[53] & (1<<2)) { | 1118 | if (identify_info[53] & (1<<2)) { |
1119 | int max_udma = ATA_MAX_UDMA; | ||
1120 | #if ATA_MAX_UDMA > 2 | ||
1121 | if (!(ata_identify_data[93] & BIT(13))) | ||
1122 | max_udma = 2; | ||
1123 | #endif | ||
1119 | /* Ultra DMA mode info present, find a mode */ | 1124 | /* Ultra DMA mode info present, find a mode */ |
1120 | dma_mode = ata_get_best_mode(identify_info[88], ATA_MAX_UDMA, 0x40); | 1125 | dma_mode = ata_get_best_mode(identify_info[88], max_udma, 0x40); |
1121 | } | 1126 | } |
1122 | 1127 | ||
1123 | if (!dma_mode) { | 1128 | if (!dma_mode) { |