summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/ata.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c
index 8c0292d474..935b91271e 100644
--- a/firmware/drivers/ata.c
+++ b/firmware/drivers/ata.c
@@ -226,6 +226,8 @@ int ata_read_sectors(unsigned long start,
if (!wait_for_start_of_transfer()) {
ret = -4;
+ if(ata_hard_reset())
+ break;
goto retry;
}
@@ -279,7 +281,7 @@ int ata_read_sectors(unsigned long start,
last_disk_activity = current_tick;
}
- if(!wait_for_end_of_transfer()) {
+ if(!ret && !wait_for_end_of_transfer()) {
ret = -3;
goto retry;
}