diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-10-21 13:58:18 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-10-21 13:58:18 +0000 |
commit | c477be46b897fe3965b2e1684cf460fc61c23341 (patch) | |
tree | a70bfb82edd4148e4ec74ff9678e26438a20ba42 /c/src/lib/libbsp/arm/lpc32xx/include/tm27.h | |
parent | 2010-10-19 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff) | |
download | rtems-c477be46b897fe3965b2e1684cf460fc61c23341.tar.bz2 |
2010-10-21 Sebastian Huber <sebastian.huber@embedded-brains.de>
* include/tm27.h: New file.
* Makefile.am, preinstall.am: Reflect change above.
* include/bsp.h: Fixed lpc32xx_micro_seconds_delay().
* misc/timer.c: Support for timer tests.
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/include/tm27.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/lpc32xx/include/tm27.h b/c/src/lib/libbsp/arm/lpc32xx/include/tm27.h new file mode 100644 index 0000000000..03f7c238c2 --- /dev/null +++ b/c/src/lib/libbsp/arm/lpc32xx/include/tm27.h @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2010 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 82178 Puchheim + * Germany + * <info@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#ifndef _RTEMS_TMTEST27 +#error "This is an RTEMS internal file you must not include directly." +#endif + +#ifndef __tm27_h +#define __tm27_h + +#define MUST_WAIT_FOR_INTERRUPT 0 + +#include <assert.h> + +#include <rtems.h> + +#include <bsp/lpc32xx.h> +#include <bsp/irq.h> +#include <bsp/irq-generic.h> + +#define MUST_WAIT_FOR_INTERRUPT 1 + +static void Install_tm27_vector(void (*handler)(rtems_vector_number)) +{ + rtems_status_code sc = RTEMS_SUCCESSFUL; + + LPC32XX_SW_INT = 0; + + sc = rtems_interrupt_handler_install( + LPC32XX_IRQ_SW, + "SW", + RTEMS_INTERRUPT_UNIQUE, + (rtems_interrupt_handler) handler, + NULL + ); + assert(sc == RTEMS_SUCCESSFUL); +} + +static void Cause_tm27_intr(void) +{ + LPC32XX_SW_INT = 0x1; +} + +static void Clear_tm27_intr(void) +{ + LPC32XX_SW_INT = 0; + lpc32xx_irq_set_priority(LPC32XX_IRQ_SW, LPC32XX_IRQ_PRIORITY_LOWEST); +} + +static void Lower_tm27_intr(void) +{ + bsp_interrupt_vector_enable(LPC32XX_IRQ_SW); + lpc32xx_irq_set_priority(LPC32XX_IRQ_SW, LPC32XX_IRQ_PRIORITY_HIGHEST); +} + +#endif /* __tm27_h */ |