diff options
Diffstat (limited to 'firmware/drivers')
-rw-r--r-- | firmware/drivers/ata.c | 8 |
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; |