From 1eed6f8bfca86b77174412292ff7807708f4ab3a Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 23 Mar 2023 16:53:30 +0100 Subject: 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. --- bsps/arm/beagle/clock/clock.c | 2 +- bsps/arm/csb336/clock/clockdrv.c | 2 +- bsps/arm/csb337/clock/clock.c | 2 +- bsps/arm/edb7312/clock/clockdrv.c | 6 ++---- bsps/arm/gumstix/clock/clock.c | 2 +- bsps/arm/raspberrypi/clock/clockdrv.c | 30 +++++++++--------------------- bsps/arm/rtl22xx/clock/clockdrv.c | 2 +- bsps/arm/shared/clock/clock-a9mpcore.c | 28 ++++++++++++---------------- bsps/arm/shared/clock/clock-nxp-lpc.c | 17 +++++++---------- bsps/arm/smdk2410/clock/clockdrv.c | 2 +- bsps/arm/tms570/clock/clock.c | 20 +++++++++----------- 11 files changed, 45 insertions(+), 68 deletions(-) (limited to 'bsps/arm') 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 #include -/* 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" -- cgit v1.2.3