summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-08-26 22:05:47 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-08-26 22:05:47 +0000
commitf0599be133804a47f76944d53dbeec29b7d86df8 (patch)
tree41d6656cad69ad1d43a6c6c2682ef8de7a43cd46
parent457b8a0a6743b7bee72d90e484055b7635861612 (diff)
downloadrockbox-f0599be133804a47f76944d53dbeec29b7d86df8.zip
rockbox-f0599be133804a47f76944d53dbeec29b7d86df8.tar.gz
rockbox-f0599be133804a47f76944d53dbeec29b7d86df8.tar.bz2
rockbox-f0599be133804a47f76944d53dbeec29b7d86df8.tar.xz
Don't call perform_sleep() while already sleeping
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1988 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/drivers/ata.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c
index e867ac2..ec0fe35 100644
--- a/firmware/drivers/ata.c
+++ b/firmware/drivers/ata.c
@@ -163,6 +163,7 @@ int ata_read_sectors(unsigned long start,
return -1;
}
#endif
+ sleeping = false;
}
#endif
mutex_lock(&ata_mtx);
@@ -179,7 +180,7 @@ int ata_read_sectors(unsigned long start,
ATA_NSECTOR = 0; /* 0 means 256 sectors */
else
ATA_NSECTOR = (unsigned char)count;
-
+
ATA_SECTOR = start & 0xff;
ATA_LCYL = (start >> 8) & 0xff;
ATA_HCYL = (start >> 16) & 0xff;
@@ -239,6 +240,7 @@ int ata_write_sectors(unsigned long start,
last_disk_activity = current_tick;
#ifndef USE_STANDBY
+ if ( sleeping ) {
#ifdef USE_POWEROFF
if (ata_power_on()) {
return -1;
@@ -248,6 +250,8 @@ int ata_write_sectors(unsigned long start,
return -1;
}
#endif
+ sleeping = false;
+ }
#endif
mutex_lock(&ata_mtx);
@@ -408,6 +412,7 @@ static void ata_thread(void)
while (1) {
while ( queue_empty( &ata_queue ) ) {
if ( sleep_timeout &&
+ !sleeping &&
TIME_AFTER( current_tick,
last_user_activity + sleep_timeout ) &&
TIME_AFTER( current_tick,