diff options
Diffstat (limited to 'firmware/drivers')
-rw-r--r-- | firmware/drivers/ata.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index d547692b56..8e9ec942cd 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c | |||
@@ -62,6 +62,7 @@ | |||
62 | 62 | ||
63 | #define STATUS_BSY 0x80 | 63 | #define STATUS_BSY 0x80 |
64 | #define STATUS_RDY 0x40 | 64 | #define STATUS_RDY 0x40 |
65 | #define STATUS_DF 0x20 | ||
65 | #define STATUS_DRQ 0x08 | 66 | #define STATUS_DRQ 0x08 |
66 | #define STATUS_ERR 0x01 | 67 | #define STATUS_ERR 0x01 |
67 | 68 | ||
@@ -223,6 +224,9 @@ int ata_read_sectors(unsigned long start, | |||
223 | continue; | 224 | continue; |
224 | } | 225 | } |
225 | 226 | ||
227 | if ( ATA_ALT_STATUS & (STATUS_ERR | STATUS_DF) ) | ||
228 | continue; | ||
229 | |||
226 | /* if destination address is odd, use byte copying, | 230 | /* if destination address is odd, use byte copying, |
227 | otherwise use word copying */ | 231 | otherwise use word copying */ |
228 | 232 | ||