From 412bea9782db6843bcefd53ce7ce74b003b3c8c5 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Thu, 9 Nov 2006 18:57:47 +0000 Subject: Ondio: Better activity monitoring for 'ata' idle notification. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11481 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/ata_mmc.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'firmware/drivers/ata_mmc.c') diff --git a/firmware/drivers/ata_mmc.c b/firmware/drivers/ata_mmc.c index 9491429542..bf78bc84f4 100644 --- a/firmware/drivers/ata_mmc.c +++ b/firmware/drivers/ata_mmc.c @@ -981,7 +981,7 @@ void ata_spin(void) static void mmc_thread(void) { struct event ev; - static long last_seen_mtx_unlock = 0; + bool idle_notified = false; while (1) { queue_wait_w_tmo(&mmc_queue, &ev, HZ); @@ -1006,14 +1006,16 @@ static void mmc_thread(void) #endif default: - if (!ata_disk_is_active()) + if (TIME_BEFORE(current_tick, last_disk_activity+(3*HZ))) { - if (!last_seen_mtx_unlock) - last_seen_mtx_unlock = current_tick; - if (TIME_AFTER(current_tick, last_seen_mtx_unlock+(HZ*10))) + idle_notified = false; + } + else + { + if (!idle_notified) { call_ata_idle_notifys(false); - last_seen_mtx_unlock = 0; + idle_notified = true; } } break; -- cgit v1.2.3