summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/ata.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c
index d3ccf0e662..88b57d033e 100644
--- a/firmware/drivers/ata.c
+++ b/firmware/drivers/ata.c
@@ -110,9 +110,10 @@ static int wait_for_bsy(void) __attribute__ ((section (".icode")));
110static int wait_for_bsy(void) 110static int wait_for_bsy(void)
111{ 111{
112 int timeout = current_tick + HZ*10; 112 int timeout = current_tick + HZ*10;
113 last_disk_activity = timeout; 113 while (TIME_BEFORE(current_tick, timeout) && (ATA_STATUS & STATUS_BSY)) {
114 while (TIME_BEFORE(current_tick, timeout) && (ATA_STATUS & STATUS_BSY)) 114 last_disk_activity = current_tick;
115 yield(); 115 yield();
116 }
116 117
117 if (TIME_BEFORE(current_tick, timeout)) 118 if (TIME_BEFORE(current_tick, timeout))
118 return 1; 119 return 1;
@@ -129,10 +130,12 @@ static int wait_for_rdy(void)
129 return 0; 130 return 0;
130 131
131 timeout = current_tick + HZ*10; 132 timeout = current_tick + HZ*10;
132 last_disk_activity = timeout;
133 133
134 while (TIME_BEFORE(current_tick, timeout) && !(ATA_ALT_STATUS & STATUS_RDY)) 134 while (TIME_BEFORE(current_tick, timeout) &&
135 !(ATA_ALT_STATUS & STATUS_RDY)) {
136 last_disk_activity = current_tick;
135 yield(); 137 yield();
138 }
136 139
137 if (TIME_BEFORE(current_tick, timeout)) 140 if (TIME_BEFORE(current_tick, timeout))
138 return STATUS_RDY; 141 return STATUS_RDY;