summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/ata_mmc.c14
1 files changed, 8 insertions, 6 deletions
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)
981static void mmc_thread(void) 981static void mmc_thread(void)
982{ 982{
983 struct event ev; 983 struct event ev;
984 static long last_seen_mtx_unlock = 0; 984 bool idle_notified = false;
985 985
986 while (1) { 986 while (1) {
987 queue_wait_w_tmo(&mmc_queue, &ev, HZ); 987 queue_wait_w_tmo(&mmc_queue, &ev, HZ);
@@ -1006,14 +1006,16 @@ static void mmc_thread(void)
1006#endif 1006#endif
1007 1007
1008 default: 1008 default:
1009 if (!ata_disk_is_active()) 1009 if (TIME_BEFORE(current_tick, last_disk_activity+(3*HZ)))
1010 { 1010 {
1011 if (!last_seen_mtx_unlock) 1011 idle_notified = false;
1012 last_seen_mtx_unlock = current_tick; 1012 }
1013 if (TIME_AFTER(current_tick, last_seen_mtx_unlock+(HZ*10))) 1013 else
1014 {
1015 if (!idle_notified)
1014 { 1016 {
1015 call_ata_idle_notifys(false); 1017 call_ata_idle_notifys(false);
1016 last_seen_mtx_unlock = 0; 1018 idle_notified = true;
1017 } 1019 }
1018 } 1020 }
1019 break; 1021 break;