diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index 8bbbe1a130..86b596bf99 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c @@ -959,7 +959,7 @@ static int set_features(void) if (identify_info[53] & (1<<2)) { int max_udma = ATA_MAX_UDMA; #if ATA_MAX_UDMA > 2 - if (!(identify_info[93] & (1<<13))) + if (!identify_info[76] && !(identify_info[93] & (1<<13))) /* w93b13 is only valid for PATA, w76 is 0 PATA */ max_udma = 2; #endif /* Ultra DMA mode info present, find a mode */ diff --git a/firmware/target/arm/s5l8702/ipod6g/storage_ata-6g.c b/firmware/target/arm/s5l8702/ipod6g/storage_ata-6g.c index 9f452cbe56..488340c434 100644 --- a/firmware/target/arm/s5l8702/ipod6g/storage_ata-6g.c +++ b/firmware/target/arm/s5l8702/ipod6g/storage_ata-6g.c @@ -726,7 +726,7 @@ static int ata_power_up(void) { int max_udma = ATA_MAX_UDMA; #if ATA_MAX_UDMA > 2 - if (!(identify_info[93] & BIT(13))) + if (!identify_info[76] && !(identify_info[93] & BIT(13))) /* w93b13 is only valid for PATA, w76 is 0 PATA */ max_udma = 2; #endif param = ata_get_best_mode(identify_info[88], max_udma, 0x40);