summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/shared/openpic
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2007-12-07 09:10:55 +0000
committerTill Straumann <strauman@slac.stanford.edu>2007-12-07 09:10:55 +0000
commit2a90ae752281d50af0bbc1aa33c65bdb750d258d (patch)
treeb0de56c0720423d29fab81999aa0392891968875 /c/src/lib/libbsp/powerpc/shared/openpic
parentRemove unused functions. (diff)
downloadrtems-2a90ae752281d50af0bbc1aa33c65bdb750d258d.tar.bz2
2007-12-06 Till Straumann <strauman@slac.stanford.edu>
* shared/openpic/openpic.c, shared/openpic/openpic.h: added routines to set timer period and interupt mask and to read current count.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/shared/openpic')
-rw-r--r--c/src/lib/libbsp/powerpc/shared/openpic/openpic.c22
-rw-r--r--c/src/lib/libbsp/powerpc/shared/openpic/openpic.h2
2 files changed, 24 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/openpic/openpic.c b/c/src/lib/libbsp/powerpc/shared/openpic/openpic.c
index 46fc86d967..52de079062 100644
--- a/c/src/lib/libbsp/powerpc/shared/openpic/openpic.c
+++ b/c/src/lib/libbsp/powerpc/shared/openpic/openpic.c
@@ -492,6 +492,28 @@ void openpic_maptimer(unsigned int timer, unsigned int cpumask)
openpic_write(&OpenPIC->Global.Timer[timer].Destination, cpumask);
}
+ /*
+ * Set base count and / or enable / disable interrupt.
+ */
+
+
+void openpic_settimer(unsigned int timer, unsigned int base_count, int irq_enable)
+{
+ check_arg_timer(timer);
+ if ( base_count )
+ openpic_write(&OpenPIC->Global.Timer[timer].Base_Count, base_count);
+ if ( irq_enable )
+ openpic_clearfield(&OpenPIC->Global.Timer[timer].Vector_Priority, OPENPIC_MASK);
+ else
+ openpic_setfield(&OpenPIC->Global.Timer[timer].Vector_Priority, OPENPIC_MASK);
+}
+
+unsigned int openpic_gettimer(unsigned int timer)
+{
+ check_arg_timer(timer);
+ return (openpic_read(&OpenPIC->Global.Timer[timer]) & ~OPENPIC_MASK);
+}
+
/* -------- Interrupt Sources ---------------------------------------------- */
/*
diff --git a/c/src/lib/libbsp/powerpc/shared/openpic/openpic.h b/c/src/lib/libbsp/powerpc/shared/openpic/openpic.h
index 477d7b3699..7a9764857b 100644
--- a/c/src/lib/libbsp/powerpc/shared/openpic/openpic.h
+++ b/c/src/lib/libbsp/powerpc/shared/openpic/openpic.h
@@ -363,6 +363,8 @@ extern void openpic_cause_IPI(unsigned int cpu, unsigned int ipi, unsigned int c
/* Timer Interrupts */
extern void openpic_inittimer(unsigned int timer, unsigned int pri, unsigned int vector);
+extern void openpic_settimer(unsigned int timer, unsigned int base_count, int irq_enable);
+extern unsigned int openpic_gettimer(unsigned int timer);
extern void openpic_maptimer(unsigned int timer, unsigned int cpumask);
/* Interrupt Sources */