From f2042983f08cd49404be0b6916fc73d778fe8dba Mon Sep 17 00:00:00 2001 From: Dave Chapman Date: Fri, 2 May 2008 19:12:09 +0000 Subject: Add the Sansa M200 (v1) as a target - it's extremely similar to the Logik DAX (the LCD driver worked unchanged). Plus various tcc77x work, including a working tick interrupt (enabled in the bootloader). Rockbox itself builds for the M200 (there are no keymaps yet for the DAX), but doesn't progress very far due to the lack of an ATA (NAND flash) driver. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17306 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/arm/tcc77x/kernel-tcc77x.c | 45 ++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 firmware/target/arm/tcc77x/kernel-tcc77x.c (limited to 'firmware/target/arm/tcc77x/kernel-tcc77x.c') diff --git a/firmware/target/arm/tcc77x/kernel-tcc77x.c b/firmware/target/arm/tcc77x/kernel-tcc77x.c new file mode 100644 index 0000000000..17c6ff0734 --- /dev/null +++ b/firmware/target/arm/tcc77x/kernel-tcc77x.c @@ -0,0 +1,45 @@ +/*************************************************************************** +* __________ __ ___. +* Open \______ \ ____ ____ | | _\_ |__ _______ ___ +* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +* \/ \/ \/ \/ \/ +* $Id$ +* +* Copyright (C) 2008 by Rob Purchase +* +* All files in this archive are subject to the GNU General Public License. +* See the file COPYING in the source tree root for full license agreement. +* +* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +* KIND, either express or implied. +* +****************************************************************************/ + +#include "config.h" +#include "system.h" +#include "kernel.h" +#include "timer.h" +#include "thread.h" + +void tick_start(unsigned int interval_in_ms) +{ + /* configure Timer T-Clock to 2Mhz (clock source 4 (Xin) divided by 6) */ + PCLKCFG4 = (1 << 31) | (4 << 28) | (5 << 16); + + /* disable Timer0 */ + TCFG0 &= ~1; + + /* set counter reference value based on 1Mhz tick */ + TREF0 = interval_in_ms * 1000; + + /* Timer0 = reset to 0, divide=2, IRQ enable, enable (continuous) */ + TCFG0 = (1<<8) | (0<<4) | (1<<3) | 1; + + /* Unmask timer IRQ */ + IEN |= TIMER0_IRQ_MASK; +} + +/* NB: Since we are using a single timer IRQ, tick tasks are dispatched as + part of the central timer IRQ processing in timer-tcc77x.c */ -- cgit v1.2.3