summaryrefslogtreecommitdiffstats
path: root/bsps/arm
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2023-03-23 16:53:30 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2024-03-20 16:34:09 +0100
commit1eed6f8bfca86b77174412292ff7807708f4ab3a (patch)
tree54b059527e936d7858de549b18d448a8b6990b57 /bsps/arm
parentDo not define CONFIGURE_TICKS_PER_TIMESLICE to 0 (diff)
downloadrtems-1eed6f8bfca86b77174412292ff7807708f4ab3a.tar.bz2
bsps: Avoid unused argument in clock interrupt
Pass the parameter of the clock interrupt handler to Clock_driver_support_at_tick() and Clock_driver_timecounter_tick(). This makes it possible to use the interrupt handler argument in clock drivers. Use the interrupt handler provided by Clock_driver_support_install_isr() to avoid local delarations of Clock_isr(). Update #4862.
Diffstat (limited to 'bsps/arm')
-rw-r--r--bsps/arm/beagle/clock/clock.c2
-rw-r--r--bsps/arm/csb336/clock/clockdrv.c2
-rw-r--r--bsps/arm/csb337/clock/clock.c2
-rw-r--r--bsps/arm/edb7312/clock/clockdrv.c6
-rw-r--r--bsps/arm/gumstix/clock/clock.c2
-rw-r--r--bsps/arm/raspberrypi/clock/clockdrv.c30
-rw-r--r--bsps/arm/rtl22xx/clock/clockdrv.c2
-rw-r--r--bsps/arm/shared/clock/clock-a9mpcore.c28
-rw-r--r--bsps/arm/shared/clock/clock-nxp-lpc.c17
-rw-r--r--bsps/arm/smdk2410/clock/clockdrv.c2
-rw-r--r--bsps/arm/tms570/clock/clock.c20
11 files changed, 45 insertions, 68 deletions
diff --git a/bsps/arm/beagle/clock/clock.c b/bsps/arm/beagle/clock/clock.c
index d42b051c98..a32dde86bf 100644
--- a/bsps/arm/beagle/clock/clock.c
+++ b/bsps/arm/beagle/clock/clock.c
@@ -290,7 +290,7 @@ static void beagle_clock_handler_install(rtems_interrupt_handler isr)
clock_isr = isr;
}
-#define Clock_driver_support_at_tick() beagle_clock_at_tick()
+#define Clock_driver_support_at_tick(arg) beagle_clock_at_tick()
#define Clock_driver_support_initialize_hardware() beagle_clock_initialize()
#define Clock_driver_support_install_isr(isr) \
beagle_clock_handler_install(isr)
diff --git a/bsps/arm/csb336/clock/clockdrv.c b/bsps/arm/csb336/clock/clockdrv.c
index 58f98d87be..6af507a877 100644
--- a/bsps/arm/csb336/clock/clockdrv.c
+++ b/bsps/arm/csb336/clock/clockdrv.c
@@ -38,7 +38,7 @@ rtems_irq_connect_data clock_isr_data = {
* - clear the interrupt bit?
* - restart the timer?
*/
-#define Clock_driver_support_at_tick() \
+#define Clock_driver_support_at_tick(arg) \
do { \
uint32_t reg; \
\
diff --git a/bsps/arm/csb337/clock/clock.c b/bsps/arm/csb337/clock/clock.c
index 69a3dafd81..ee05387baa 100644
--- a/bsps/arm/csb337/clock/clock.c
+++ b/bsps/arm/csb337/clock/clock.c
@@ -94,7 +94,7 @@ static void Clock_driver_support_initialize_hardware(void)
ST_REG(ST_PIMR) = value;
}
-#define Clock_driver_support_at_tick() \
+#define Clock_driver_support_at_tick(arg) \
do { \
uint32_t st_str; \
\
diff --git a/bsps/arm/edb7312/clock/clockdrv.c b/bsps/arm/edb7312/clock/clockdrv.c
index 8c7cc4f26a..79289366da 100644
--- a/bsps/arm/edb7312/clock/clockdrv.c
+++ b/bsps/arm/edb7312/clock/clockdrv.c
@@ -18,9 +18,7 @@
#define CLOCK_DRIVER_USE_FAST_IDLE 1
#endif
-void Clock_isr(void * arg);
-
-#define Clock_driver_support_at_tick() \
+#define Clock_driver_support_at_tick(arg) \
do { \
*EP7312_TC1EOI = 0xffffffff; \
} while(0)
@@ -32,7 +30,7 @@ void Clock_isr(void * arg);
BSP_TC1OI, \
"Clock", \
RTEMS_INTERRUPT_UNIQUE, \
- Clock_isr, \
+ _new, \
NULL \
); \
assert(status == RTEMS_SUCCESSFUL); \
diff --git a/bsps/arm/gumstix/clock/clock.c b/bsps/arm/gumstix/clock/clock.c
index c844f50a37..1e8f1fcb3f 100644
--- a/bsps/arm/gumstix/clock/clock.c
+++ b/bsps/arm/gumstix/clock/clock.c
@@ -99,7 +99,7 @@ static void Clock_driver_support_initialize_hardware(void)
#endif
}
-#define Clock_driver_support_at_tick() \
+#define Clock_driver_support_at_tick(arg) \
do { \
/* read the status to clear the int */ \
XSCALE_OS_TIMER_TSR = 0x1; \
diff --git a/bsps/arm/raspberrypi/clock/clockdrv.c b/bsps/arm/raspberrypi/clock/clockdrv.c
index 8d220d51ba..bb8490d03a 100644
--- a/bsps/arm/raspberrypi/clock/clockdrv.c
+++ b/bsps/arm/raspberrypi/clock/clockdrv.c
@@ -25,9 +25,6 @@
#include <bsp/raspberrypi.h>
#include <rtems/timecounter.h>
-/* This is defined in ../../../shared/dev/clock/clockimpl.h */
-void Clock_isr(rtems_irq_hdl_param arg);
-
static struct timecounter raspberrypi_tc;
static uint32_t raspberrypi_clock_get_timecount(struct timecounter *tc)
@@ -54,27 +51,18 @@ static void raspberrypi_clock_at_tick(void)
}
static void raspberrypi_clock_handler_install_isr(
- rtems_isr_entry clock_isr
+ rtems_interrupt_handler clock_isr
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
- if (clock_isr != NULL) {
- sc = rtems_interrupt_handler_install(
- BCM2835_IRQ_ID_GPU_TIMER_M3,
- "Clock",
- RTEMS_INTERRUPT_UNIQUE,
- (rtems_interrupt_handler) clock_isr,
- NULL
- );
- } else {
- /* Remove interrupt handler */
- sc = rtems_interrupt_handler_remove(
- BCM2835_IRQ_ID_GPU_TIMER_M3,
- (rtems_interrupt_handler) Clock_isr,
- NULL
- );
- }
+ sc = rtems_interrupt_handler_install(
+ BCM2835_IRQ_ID_GPU_TIMER_M3,
+ "Clock",
+ RTEMS_INTERRUPT_UNIQUE,
+ clock_isr,
+ NULL
+ );
if ( sc != RTEMS_SUCCESSFUL ) {
rtems_fatal_error_occurred(0xdeadbeef);
}
@@ -94,7 +82,7 @@ static void raspberrypi_clock_initialize_hardware(void)
rtems_timecounter_install(&raspberrypi_tc);
}
-#define Clock_driver_support_at_tick() raspberrypi_clock_at_tick()
+#define Clock_driver_support_at_tick(arg) raspberrypi_clock_at_tick()
#define Clock_driver_support_initialize_hardware() raspberrypi_clock_initialize_hardware()
diff --git a/bsps/arm/rtl22xx/clock/clockdrv.c b/bsps/arm/rtl22xx/clock/clockdrv.c
index 0e8fa274a7..53b6a763ee 100644
--- a/bsps/arm/rtl22xx/clock/clockdrv.c
+++ b/bsps/arm/rtl22xx/clock/clockdrv.c
@@ -157,7 +157,7 @@ static int clock_isr_is_on(const rtems_irq_connect_data *irq)
return T0IR & 0x01; /* MR0 mask */
}
-#define Clock_driver_timecounter_tick() lpc22xx_tc_tick()
+#define Clock_driver_timecounter_tick(arg) lpc22xx_tc_tick()
/* Make sure to include this, and only at the end of the file */
#include "../../../shared/dev/clock/clockimpl.h"
diff --git a/bsps/arm/shared/clock/clock-a9mpcore.c b/bsps/arm/shared/clock/clock-a9mpcore.c
index 9e0b3418d4..c393933c81 100644
--- a/bsps/arm/shared/clock/clock-a9mpcore.c
+++ b/bsps/arm/shared/clock/clock-a9mpcore.c
@@ -47,33 +47,29 @@
static struct timecounter a9mpcore_tc;
-/* This is defined in dev/clock/clockimpl.h */
-void Clock_isr(void *arg);
-
__attribute__ ((weak)) uint32_t a9mpcore_clock_periphclk(void)
{
/* default to the BSP option. */
return BSP_ARM_A9MPCORE_PERIPHCLK;
}
-static void a9mpcore_clock_at_tick(void)
+static void a9mpcore_clock_at_tick(volatile a9mpcore_gt *gt)
{
- volatile a9mpcore_gt *gt = A9MPCORE_GT;
-
gt->irqst = A9MPCORE_GT_IRQST_EFLG;
}
-static rtems_interrupt_entry a9mpcore_clock_interrupt_entry =
- RTEMS_INTERRUPT_ENTRY_INITIALIZER(
- (rtems_interrupt_handler) Clock_isr,
- NULL,
- "Clock"
- );
+static rtems_interrupt_entry a9mpcore_clock_interrupt_entry;
-static void a9mpcore_clock_handler_install(void)
+static void a9mpcore_clock_handler_install(rtems_interrupt_handler handler)
{
rtems_status_code sc;
+ rtems_interrupt_entry_initialize(
+ &a9mpcore_clock_interrupt_entry,
+ handler,
+ RTEMS_DEVOLATILE(a9mpcore_gt *, A9MPCORE_GT),
+ "Clock"
+ );
sc = rtems_interrupt_entry_install(
A9MPCORE_IRQ_GT,
RTEMS_INTERRUPT_UNIQUE,
@@ -193,14 +189,14 @@ CPU_Counter_ticks _CPU_Counter_read(void)
return gt->cntrlower;
}
-#define Clock_driver_support_at_tick() \
- a9mpcore_clock_at_tick()
+#define Clock_driver_support_at_tick(arg) \
+ a9mpcore_clock_at_tick(arg)
#define Clock_driver_support_initialize_hardware() \
a9mpcore_clock_initialize()
#define Clock_driver_support_install_isr(isr) \
- a9mpcore_clock_handler_install()
+ a9mpcore_clock_handler_install(isr)
/* Include shared source clock driver code */
#include "../../shared/dev/clock/clockimpl.h"
diff --git a/bsps/arm/shared/clock/clock-nxp-lpc.c b/bsps/arm/shared/clock/clock-nxp-lpc.c
index 86ece94b0e..77d6d423a2 100644
--- a/bsps/arm/shared/clock/clock-nxp-lpc.c
+++ b/bsps/arm/shared/clock/clock-nxp-lpc.c
@@ -41,9 +41,6 @@
#ifdef ARM_MULTILIB_ARCH_V4
-/* This is defined in ../../../shared/dev/clock/clockimpl.h */
-void Clock_isr(rtems_irq_hdl_param arg);
-
static volatile lpc_timer *const lpc_clock =
(volatile lpc_timer *) LPC_CLOCK_TIMER_BASE;
@@ -57,12 +54,12 @@ static uint32_t lpc_clock_tc_get_timecount(struct timecounter *tc)
return lpc_timecounter->tc;
}
-static void lpc_clock_at_tick(void)
+static void lpc_clock_at_tick(volatile lpc_timer *regs)
{
- lpc_clock->ir = LPC_TIMER_IR_MR0;
+ regs->ir = LPC_TIMER_IR_MR0;
}
-static void lpc_clock_handler_install(void)
+static void lpc_clock_handler_install(rtems_interrupt_handler handler)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
@@ -70,8 +67,8 @@ static void lpc_clock_handler_install(void)
LPC_CLOCK_INTERRUPT,
"Clock",
RTEMS_INTERRUPT_UNIQUE,
- (rtems_interrupt_handler) Clock_isr,
- NULL
+ handler,
+ RTEMS_DEVOLATILE(lpc_timer *, lpc_clock)
);
if (sc != RTEMS_SUCCESSFUL) {
rtems_fatal_error_occurred(0xdeadbeef);
@@ -118,10 +115,10 @@ static void lpc_clock_initialize(void)
rtems_timecounter_install(&lpc_clock_tc);
}
-#define Clock_driver_support_at_tick() lpc_clock_at_tick()
+#define Clock_driver_support_at_tick(arg) lpc_clock_at_tick(arg)
#define Clock_driver_support_initialize_hardware() lpc_clock_initialize()
#define Clock_driver_support_install_isr(isr) \
- lpc_clock_handler_install()
+ lpc_clock_handler_install(isr)
/* Include shared source clock driver code */
#include "../../../shared/dev/clock/clockimpl.h"
diff --git a/bsps/arm/smdk2410/clock/clockdrv.c b/bsps/arm/smdk2410/clock/clockdrv.c
index 6e32b7daed..0d0a0fd006 100644
--- a/bsps/arm/smdk2410/clock/clockdrv.c
+++ b/bsps/arm/smdk2410/clock/clockdrv.c
@@ -32,7 +32,7 @@ rtems_irq_connect_data clock_isr_data = {
* - clear the interrupt bit?
* - restart the timer?
*/
-#define Clock_driver_support_at_tick() \
+#define Clock_driver_support_at_tick(arg) \
do { \
ClearPending(BIT_TIMER4); \
} while(0)
diff --git a/bsps/arm/tms570/clock/clock.c b/bsps/arm/tms570/clock/clock.c
index 5e5965a680..2e71440857 100644
--- a/bsps/arm/tms570/clock/clock.c
+++ b/bsps/arm/tms570/clock/clock.c
@@ -144,9 +144,9 @@ static void tms570_clock_driver_support_initialize_hardware( void )
*
* @retval Void
*/
-static void tms570_clock_driver_support_at_tick( void )
+static void tms570_clock_driver_support_at_tick(volatile tms570_rti_t *rti)
{
- TMS570_RTI.INTFLAG = TMS570_RTI_INTFLAG_INT0;
+ rti->INTFLAG = TMS570_RTI_INTFLAG_INT0;
}
/**
@@ -158,7 +158,7 @@ static void tms570_clock_driver_support_at_tick( void )
* @retval Void
*/
static void tms570_clock_driver_support_install_isr(
- rtems_isr_entry Clock_isr
+ rtems_interrupt_handler handler
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
@@ -167,8 +167,8 @@ static void tms570_clock_driver_support_install_isr(
TMS570_IRQ_TIMER_0,
"Clock",
RTEMS_INTERRUPT_UNIQUE,
- (rtems_interrupt_handler) Clock_isr,
- NULL
+ handler,
+ RTEMS_DEVOLATILE(tms570_rti_t *, &TMS570_RTI)
);
if ( sc != RTEMS_SUCCESSFUL ) {
rtems_fatal_error_occurred(0xdeadbeef);
@@ -177,14 +177,12 @@ static void tms570_clock_driver_support_install_isr(
#define Clock_driver_support_initialize_hardware \
tms570_clock_driver_support_initialize_hardware
-#define Clock_driver_support_at_tick \
- tms570_clock_driver_support_at_tick
+#define Clock_driver_support_at_tick(arg) \
+ tms570_clock_driver_support_at_tick(arg)
#define Clock_driver_support_initialize_hardware \
tms570_clock_driver_support_initialize_hardware
-#define Clock_driver_support_install_isr(Clock_isr) \
- tms570_clock_driver_support_install_isr( Clock_isr )
-
-void Clock_isr(void *arg); /* to supress warning */
+#define Clock_driver_support_install_isr(handler) \
+ tms570_clock_driver_support_install_isr(handler)
#include "../../../shared/dev/clock/clockimpl.h"