summaryrefslogtreecommitdiffstats
path: root/c/src
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2006-08-09 22:02:16 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2006-08-09 22:02:16 +0000
commit82756afce6434552f2060600d7ce4fb023079510 (patch)
tree3b06b7e80f1a1e949d2e0edefe8085a371b8b771 /c/src
parent2006-08-09 Kolja Waschk <waschk@telos.de> (diff)
downloadrtems-82756afce6434552f2060600d7ce4fb023079510.tar.bz2
2006-08-09 Kolja Waschk <waschk@telos.de>
* clock/clock.c: New file.
Diffstat (limited to 'c/src')
-rw-r--r--c/src/lib/libbsp/nios2/nios2_iss/ChangeLog4
-rw-r--r--c/src/lib/libbsp/nios2/nios2_iss/clock/clock.c54
2 files changed, 58 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/nios2/nios2_iss/ChangeLog b/c/src/lib/libbsp/nios2/nios2_iss/ChangeLog
index c3cd7a3171..c880e2cc6c 100644
--- a/c/src/lib/libbsp/nios2/nios2_iss/ChangeLog
+++ b/c/src/lib/libbsp/nios2/nios2_iss/ChangeLog
@@ -1,3 +1,7 @@
+2006-08-09 Kolja Waschk <waschk@telos.de>
+
+ * clock/clock.c: New file.
+
2005-12-12 Kolja Waschk
* derived from no_cpu BSP
diff --git a/c/src/lib/libbsp/nios2/nios2_iss/clock/clock.c b/c/src/lib/libbsp/nios2/nios2_iss/clock/clock.c
new file mode 100644
index 0000000000..e676b7fa91
--- /dev/null
+++ b/c/src/lib/libbsp/nios2/nios2_iss/clock/clock.c
@@ -0,0 +1,54 @@
+/*
+ * Use SYS_CLK as system clock
+ *
+ * Copyright (c) 2005-2006 Kolja Waschk, rtemsdev/ixo.de
+ *
+ * $Id$
+ */
+
+#include <rtems.h>
+#include <bsp.h>
+
+#define CLOCK_REGS ((altera_avalon_timer_regs*)NIOS2_IO_BASE(CLOCK_BASE))
+
+/*
+ * Periodic interval timer interrupt handler
+ */
+#define Clock_driver_support_at_tick() \
+ do { CLOCK_REGS->status = 0; } while(0)
+
+/*
+ * Attach clock interrupt handler
+ */
+#define Clock_driver_support_install_isr(_new, _old) \
+ do { _old = (rtems_isr_entry)set_vector(_new, CLOCK_VECTOR, 1); } while(0)
+
+
+/*
+ * Turn off the clock
+ */
+#define Clock_driver_support_shutdown_hardware() \
+ do { CLOCK_REGS->control = ALTERA_AVALON_TIMER_CONTROL_STOP_MSK; } while(0)
+
+/*
+ * Set up the clock hardware
+ */
+void Clock_driver_support_initialize_hardware(void)
+{
+ uint32_t period;
+
+ CLOCK_REGS->control = ALTERA_AVALON_TIMER_CONTROL_STOP_MSK;
+
+ period = (CLOCK_FREQ/1000000L)*BSP_Configuration.microseconds_per_tick - 1;
+ CLOCK_REGS->period_hi = period >> 16;
+ CLOCK_REGS->period_lo = period & 0xFFFF;
+
+ CLOCK_REGS->control = ALTERA_AVALON_TIMER_CONTROL_ITO_MSK |
+ ALTERA_AVALON_TIMER_CONTROL_CONT_MSK |
+ ALTERA_AVALON_TIMER_CONTROL_START_MSK;
+
+ NIOS2_IENABLE(1 << CLOCK_VECTOR);
+}
+
+#include "../../../shared/clockdrv_shell.c"
+