summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/m68k
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-12-23 07:29:47 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-01-27 08:09:05 +0100
commit2145853b009e939dfbe14869b710133f50500a26 (patch)
treecb4504a3f442a83ea508a03b31aa8379b42790ed /c/src/lib/libbsp/m68k
parentbsps/arm: Fix broken switch statement (diff)
downloadrtems-2145853b009e939dfbe14869b710133f50500a26.tar.bz2
score: Fix simple timecounter support
Close #2502.
Diffstat (limited to 'c/src/lib/libbsp/m68k')
-rw-r--r--c/src/lib/libbsp/m68k/mcf52235/clock/clock.c19
-rw-r--r--c/src/lib/libbsp/m68k/mcf5225x/clock/clock.c19
-rw-r--r--c/src/lib/libbsp/m68k/mcf5329/clock/clock.c19
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/clock/clock.c51
4 files changed, 56 insertions, 52 deletions
diff --git a/c/src/lib/libbsp/m68k/mcf52235/clock/clock.c b/c/src/lib/libbsp/m68k/mcf52235/clock/clock.c
index fdc1ed6111..4b5f4afc51 100644
--- a/c/src/lib/libbsp/m68k/mcf52235/clock/clock.c
+++ b/c/src/lib/libbsp/m68k/mcf52235/clock/clock.c
@@ -32,18 +32,19 @@ static uint32_t mcf52235_tc_get_timecount(struct timecounter *tc)
);
}
-static void mcf52235_tc_tick(void)
+static void mcf52235_tc_at_tick(rtems_timecounter_simple *tc)
{
- rtems_timecounter_simple_downcounter_tick(&mcf52235_tc, mcf52235_tc_get);
+ MCF_PIT1_PCSR |= MCF_PIT_PCSR_PIF;
}
-/*
- * Periodic interval timer interrupt handler
- */
-#define Clock_driver_support_at_tick() \
- do { \
- MCF_PIT1_PCSR |= MCF_PIT_PCSR_PIF; \
- } while (0) \
+static void mcf52235_tc_tick(void)
+{
+ rtems_timecounter_simple_downcounter_tick(
+ &mcf52235_tc,
+ mcf52235_tc_get,
+ mcf52235_tc_at_tick
+ );
+}
/*
* Attach clock interrupt handler
diff --git a/c/src/lib/libbsp/m68k/mcf5225x/clock/clock.c b/c/src/lib/libbsp/m68k/mcf5225x/clock/clock.c
index 743bd1ff94..ee97e5035c 100644
--- a/c/src/lib/libbsp/m68k/mcf5225x/clock/clock.c
+++ b/c/src/lib/libbsp/m68k/mcf5225x/clock/clock.c
@@ -32,18 +32,19 @@ static uint32_t mcf5225x_tc_get_timecount(struct timecounter *tc)
);
}
-static void mcf5225x_tc_tick(void)
+static void mcf5225x_tc_at_tick(rtems_timecounter_simple *tc)
{
- rtems_timecounter_simple_downcounter_tick(&mcf5225x_tc, mcf5225x_tc_get);
+ MCF_PIT1_PCSR |= MCF_PIT_PCSR_PIF;
}
-/*
- * Periodic interval timer interrupt handler
- */
-#define Clock_driver_support_at_tick() \
- do { \
- MCF_PIT1_PCSR |= MCF_PIT_PCSR_PIF; \
- } while (0) \
+static void mcf5225x_tc_tick(void)
+{
+ rtems_timecounter_simple_downcounter_tick(
+ &mcf5225x_tc,
+ mcf5225x_tc_get,
+ mcf5225x_tc_at_tick
+ );
+}
/*
* Attach clock interrupt handler
diff --git a/c/src/lib/libbsp/m68k/mcf5329/clock/clock.c b/c/src/lib/libbsp/m68k/mcf5329/clock/clock.c
index 94c5bb0b04..5741b3081d 100644
--- a/c/src/lib/libbsp/m68k/mcf5329/clock/clock.c
+++ b/c/src/lib/libbsp/m68k/mcf5329/clock/clock.c
@@ -32,18 +32,19 @@ static uint32_t mcf5329_tc_get_timecount(struct timecounter *tc)
);
}
-static void mcf5329_tc_tick(void)
+static void mcf5329_tc_at_tick(rtems_timecounter_simple *tc)
{
- rtems_timecounter_simple_downcounter_tick(&mcf5329_tc, mcf5329_tc_get);
+ MCF_PIT3_PCSR |= MCF_PIT_PCSR_PIF;
}
-/*
- * Periodic interval timer interrupt handler
- */
-#define Clock_driver_support_at_tick() \
- do { \
- MCF_PIT3_PCSR |= MCF_PIT_PCSR_PIF; \
- } while (0) \
+static void mcf5329_tc_tick(void)
+{
+ rtems_timecounter_simple_downcounter_tick(
+ &mcf5329_tc,
+ mcf5329_tc_get,
+ mcf5329_tc_at_tick
+ );
+}
/*
* Attach clock interrupt handler
diff --git a/c/src/lib/libbsp/m68k/uC5282/clock/clock.c b/c/src/lib/libbsp/m68k/uC5282/clock/clock.c
index 46e045cae3..1489d7efad 100644
--- a/c/src/lib/libbsp/m68k/uC5282/clock/clock.c
+++ b/c/src/lib/libbsp/m68k/uC5282/clock/clock.c
@@ -17,6 +17,17 @@
#include <mcf5282/mcf5282.h>
/*
+ * CPU load counters
+ * Place in static RAM so updates don't hit the SDRAM
+ */
+#define IDLE_COUNTER __SRAMBASE.idle_counter
+#define FILTERED_IDLE __SRAMBASE.filtered_idle
+#define MAX_IDLE_COUNT __SRAMBASE.max_idle_count
+#define PITC_PER_TICK __SRAMBASE.pitc_per_tick
+#define NSEC_PER_PITC __SRAMBASE.nsec_per_pitc
+#define FILTER_SHIFT 6
+
+/*
* Use INTC0 base
*/
#define CLOCK_VECTOR (64+58)
@@ -42,34 +53,24 @@ static uint32_t uC5282_tc_get_timecount(struct timecounter *tc)
);
}
-static void uC5282_tc_tick(void)
+static void uC5282_tc_at_tick(rtems_timecounter_simple *tc)
{
- rtems_timecounter_simple_downcounter_tick(&uC5282_tc, uC5282_tc_get);
+ unsigned idle = IDLE_COUNTER;
+ IDLE_COUNTER = 0;
+ if (idle > MAX_IDLE_COUNT)
+ MAX_IDLE_COUNT = idle;
+ FILTERED_IDLE = idle + FILTERED_IDLE - (FILTERED_IDLE>>FILTER_SHIFT);
+ MCF5282_PIT3_PCSR |= MCF5282_PIT_PCSR_PIF;
}
-/*
- * CPU load counters
- * Place in static RAM so updates don't hit the SDRAM
- */
-#define IDLE_COUNTER __SRAMBASE.idle_counter
-#define FILTERED_IDLE __SRAMBASE.filtered_idle
-#define MAX_IDLE_COUNT __SRAMBASE.max_idle_count
-#define PITC_PER_TICK __SRAMBASE.pitc_per_tick
-#define NSEC_PER_PITC __SRAMBASE.nsec_per_pitc
-#define FILTER_SHIFT 6
-
-/*
- * Periodic interval timer interrupt handler
- */
-#define Clock_driver_support_at_tick() \
- do { \
- unsigned idle = IDLE_COUNTER; \
- IDLE_COUNTER = 0; \
- if (idle > MAX_IDLE_COUNT) \
- MAX_IDLE_COUNT = idle; \
- FILTERED_IDLE = idle + FILTERED_IDLE - (FILTERED_IDLE>>FILTER_SHIFT);\
- MCF5282_PIT3_PCSR |= MCF5282_PIT_PCSR_PIF; \
- } while (0)
+static void uC5282_tc_tick(void)
+{
+ rtems_timecounter_simple_downcounter_tick(
+ &uC5282_tc,
+ uC5282_tc_get,
+ uC5282_tc_at_tick
+ );
+}
/*
* Attach clock interrupt handler