From e673981e7e05763ace819382f3627fc815fc1fd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Sun, 12 Oct 2008 22:43:45 +0000 Subject: [PATCH] Add support for using the MFP0 timer A. Not calibrated though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28013 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/platform/atari_m68k/platform.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/system/kernel/platform/atari_m68k/platform.cpp b/src/system/kernel/platform/atari_m68k/platform.cpp index 25512633d4..c3ae52a913 100644 --- a/src/system/kernel/platform/atari_m68k/platform.cpp +++ b/src/system/kernel/platform/atari_m68k/platform.cpp @@ -1,5 +1,5 @@ /* - Just a dummy. No BIOS services are required in the kernel. + Atari kernel platform code. */ #include @@ -288,8 +288,10 @@ M68KAtari::InitRTC(struct kernel_args *kernelArgs, status_t M68KAtari::InitTimer(struct kernel_args *kernelArgs) { - panic("WRITEME"); - return B_NO_INIT; + + out8(fMFP[0]->Base() + MFP_TACR, 0); // stop it + install_io_interrupt_handler(fMFP[0]->Vector()+13, &pit_timer_interrupt, NULL, 0); + return B_OK; } @@ -504,12 +506,17 @@ M68KAtari::GetHardwareRTC() void M68KAtari::SetHardwareTimer(bigtime_t timeout) { + uint8 counts = (uint8)(timeout & 0x0ff); + //XXX: SCALE + out8(fMFP[0]->Base() + MFP_TADR, counts); + out8(fMFP[0]->Base() + MFP_TACR, 0x01); // delay mode, device by 4 } void M68KAtari::ClearHardwareTimer(void) { + out8(fMFP[0]->Base() + MFP_TACR, 0); // stop it }