summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-12-04 14:58:48 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-12-04 14:58:48 +0000
commitb070dd55be61b19a0cf88cd8d8a5b80387c50f31 (patch)
treebda0516c85e38bfc687fdc74ba97eea016e46b58
parentd41942e12f6a63b1067e9d3b91e55a02ad78b2b6 (diff)
downloadrockbox-b070dd55be61b19a0cf88cd8d8a5b80387c50f31.zip
rockbox-b070dd55be61b19a0cf88cd8d8a5b80387c50f31.tar.gz
rockbox-b070dd55be61b19a0cf88cd8d8a5b80387c50f31.tar.bz2
rockbox-b070dd55be61b19a0cf88cd8d8a5b80387c50f31.tar.xz
Added disk spinup clocking
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2927 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/debug_menu.c9
-rw-r--r--firmware/drivers/ata.c3
-rw-r--r--firmware/drivers/ata.h1
3 files changed, 12 insertions, 1 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index 571ab09..e55aa12 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -1107,7 +1107,7 @@ static bool dbg_disk_info(void)
bool done = false;
int i;
int page = 0;
- const int max_page = 2;
+ const int max_page = 3;
unsigned short* identify_info = ata_get_identify();
while(!done)
@@ -1146,6 +1146,13 @@ static bool dbg_disk_info(void)
(unsigned)identify_info[60]) / 2048 );
lcd_puts(0, y++, "Size");
lcd_puts(0, y++, buf);
+ break;
+
+ case 3:
+ snprintf(buf, sizeof buf, "%d ms", ata_spinup_time * (1000/HZ));
+ lcd_puts(0, y++, "Spinup time");
+ lcd_puts(0, y++, buf);
+ break;
}
lcd_update();
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c
index 0b7a37e..8f70714 100644
--- a/firmware/drivers/ata.c
+++ b/firmware/drivers/ata.c
@@ -80,6 +80,7 @@ int ata_io_address; /* 0x300 or 0x200, only valid on recorder */
static volatile unsigned char* ata_control;
bool old_recorder = false;
+int ata_spinup_time = 0;
static bool sleeping = false;
static int sleep_timeout = 5*HZ;
static bool poweroff = false;
@@ -186,6 +187,7 @@ int ata_read_sectors(unsigned long start,
}
sleeping = false;
poweroff = false;
+ ata_spinup_time = current_tick - last_disk_activity;
}
ATA_SELECT = ata_device;
@@ -307,6 +309,7 @@ int ata_write_sectors(unsigned long start,
}
sleeping = false;
poweroff = false;
+ ata_spinup_time = current_tick - last_disk_activity;
}
ATA_SELECT = ata_device;
diff --git a/firmware/drivers/ata.h b/firmware/drivers/ata.h
index a9a7987..7a1fb4a 100644
--- a/firmware/drivers/ata.h
+++ b/firmware/drivers/ata.h
@@ -48,5 +48,6 @@ extern void ata_spin(void);
extern unsigned short* ata_get_identify(void);
extern long last_disk_activity;
+extern int ata_spinup_time; /* ticks */
#endif