From 8b7b0c46ef2e975c06c082ce9a68991f6826e261 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Wed, 3 Jun 2015 18:55:57 +0100 Subject: [PATCH] dragondos: floppy timer --- Kernel/platform-dragon-nx32/devfd.c | 18 ++++++++++++------ Kernel/platform-dragon-nx32/devtty.c | 2 ++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Kernel/platform-dragon-nx32/devfd.c b/Kernel/platform-dragon-nx32/devfd.c index e77d777b..c335e4bf 100644 --- a/Kernel/platform-dragon-nx32/devfd.c +++ b/Kernel/platform-dragon-nx32/devfd.c @@ -16,21 +16,27 @@ static uint8_t motorct; static uint8_t fd_selected = 0xFF; extern uint8_t fd_tab[]; -static void fd_motor_busy(void) +static uint8_t motor_timeout = 0; + +static inline void fd_motor_busy(void) { motorct++; + motor_timeout = 240; } -static void fd_motor_idle(void) +static inline void fd_motor_idle(void) { motorct--; - // if (motorct == 0) ... start timer */ } -static void fd_motor_timeout(void) +void fd_timer_tick(void) { - fd_selected = 0xff; - fd_motor_off(); + if (!motorct && motor_timeout) { + if (motor_timeout-- == 1) { + fd_selected = 0xff; + fd_motor_off(); + } + } } /* diff --git a/Kernel/platform-dragon-nx32/devtty.c b/Kernel/platform-dragon-nx32/devtty.c index 0dde12e1..56ee52fd 100644 --- a/Kernel/platform-dragon-nx32/devtty.c +++ b/Kernel/platform-dragon-nx32/devtty.c @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -212,6 +213,7 @@ void platform_interrupt(void) keyproc(); if (keysdown < 3 && newkey) keydecode(); + fd_timer_tick(); timer_interrupt(); } } -- 2.34.1