summaryrefslogtreecommitdiff
path: root/firmware/drivers/ata.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/ata.c')
-rw-r--r--firmware/drivers/ata.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c
index 5e6df91cc5..c72ebb8790 100644
--- a/firmware/drivers/ata.c
+++ b/firmware/drivers/ata.c
@@ -170,10 +170,12 @@ int ata_read_sectors(unsigned long start,
170 int timeout; 170 int timeout;
171 int count; 171 int count;
172 void* buf; 172 void* buf;
173 int spinup_start;
173 174
174 mutex_lock(&ata_mtx); 175 mutex_lock(&ata_mtx);
175 176
176 last_disk_activity = current_tick; 177 last_disk_activity = current_tick;
178 spinup_start = current_tick;
177 179
178 led(true); 180 led(true);
179 181
@@ -242,7 +244,7 @@ int ata_read_sectors(unsigned long start,
242 } 244 }
243 245
244 if (spinup) { 246 if (spinup) {
245 ata_spinup_time = current_tick - last_disk_activity; 247 ata_spinup_time = current_tick - spinup_start;
246 spinup = false; 248 spinup = false;
247 sleeping = false; 249 sleeping = false;
248 poweroff = false; 250 poweroff = false;
@@ -314,6 +316,7 @@ int ata_write_sectors(unsigned long start,
314{ 316{
315 int i; 317 int i;
316 int ret = 0; 318 int ret = 0;
319 int spinup_start;
317 320
318 if (start == 0) 321 if (start == 0)
319 panicf("Writing on sector 0\n"); 322 panicf("Writing on sector 0\n");
@@ -321,6 +324,7 @@ int ata_write_sectors(unsigned long start,
321 mutex_lock(&ata_mtx); 324 mutex_lock(&ata_mtx);
322 325
323 last_disk_activity = current_tick; 326 last_disk_activity = current_tick;
327 spinup_start = current_tick;
324 328
325 led(true); 329 led(true);
326 330
@@ -369,7 +373,7 @@ int ata_write_sectors(unsigned long start,
369 } 373 }
370 374
371 if (spinup) { 375 if (spinup) {
372 ata_spinup_time = current_tick - last_disk_activity; 376 ata_spinup_time = current_tick - spinup_start;
373 spinup = false; 377 spinup = false;
374 sleeping = false; 378 sleeping = false;
375 poweroff = false; 379 poweroff = false;