diff options
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/pp/ata-pp5020.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/firmware/target/arm/pp/ata-pp5020.c b/firmware/target/arm/pp/ata-pp5020.c index 176e74993c..f247a44171 100644 --- a/firmware/target/arm/pp/ata-pp5020.c +++ b/firmware/target/arm/pp/ata-pp5020.c | |||
@@ -175,11 +175,12 @@ bool ata_dma_setup(void *addr, unsigned long bytes, bool write) { | |||
175 | /* Writes only need to be word-aligned, but by default DMA | 175 | /* Writes only need to be word-aligned, but by default DMA |
176 | * is not used for writing on non-SSDs as it appears to be slower. | 176 | * is not used for writing on non-SSDs as it appears to be slower. |
177 | */ | 177 | */ |
178 | if (!ata_disk_isssd()) | 178 | if (write) { |
179 | return false; | 179 | if ((unsigned long)addr & 3) |
180 | 180 | return false; | |
181 | if (write && ((unsigned long)addr & 3)) | 181 | if (!ata_disk_isssd()) |
182 | return false; | 182 | return false; |
183 | } | ||
183 | 184 | ||
184 | #if ATA_MAX_UDMA > 2 | 185 | #if ATA_MAX_UDMA > 2 |
185 | if (dma_needs_boost && !dma_boosted) { | 186 | if (dma_needs_boost && !dma_boosted) { |