diff options
author | Vipul Nayyar <nayyar_vipul@yahoo.com> | 2013-07-10 09:54:01 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-10 10:10:42 +0200 |
commit | 52e44630e57b030d22dc6866425929efb1abac0f (patch) | |
tree | 0e511a1ed105e598efc05472683797f462eb9650 /c/src/lib/libbsp/arm/csb336/network/network.c | |
parent | libchip ns16550.c: Improve comment (diff) | |
download | rtems-52e44630e57b030d22dc6866425929efb1abac0f.tar.bz2 |
bsp/csb336: Use IRQ extensions API
Fix warnings.
Diffstat (limited to 'c/src/lib/libbsp/arm/csb336/network/network.c')
-rw-r--r-- | c/src/lib/libbsp/arm/csb336/network/network.c | 46 |
1 files changed, 14 insertions, 32 deletions
diff --git a/c/src/lib/libbsp/arm/csb336/network/network.c b/c/src/lib/libbsp/arm/csb336/network/network.c index e5135956d8..f93fcc88b9 100644 --- a/c/src/lib/libbsp/arm/csb336/network/network.c +++ b/c/src/lib/libbsp/arm/csb336/network/network.c @@ -19,6 +19,7 @@ #include <errno.h> #include <rtems/error.h> #include <rtems/bspIo.h> +#include <assert.h> #include <sys/param.h> #include <sys/mbuf.h> @@ -39,19 +40,8 @@ #define START_TRANSMIT_EVENT RTEMS_EVENT_2 static void enet_isr(rtems_irq_hdl_param); -static void enet_isr_on(const rtems_irq_connect_data *unused); -static void enet_isr_off(const rtems_irq_connect_data *unused); -static int enet_isr_is_on(const rtems_irq_connect_data *irq); - -/* Replace the first value with the clock's interrupt name. */ -rtems_irq_connect_data mc9328mxl_enet_isr_data = { - .name = BSP_INT_GPIO_PORTA, - .hdl = enet_isr, - .handle = (void *)BSP_INT_GPIO_PORTA, - .on = enet_isr_on, - .off = enet_isr_off, - .isOn = enet_isr_is_on, -}; +static void enet_isr_on(void); + typedef struct { unsigned long rx_packets; /* total packets received */ unsigned long tx_packets; /* total packets transmitted */ @@ -238,6 +228,7 @@ void mc9328mxl_enet_init_hw(mc9328mxl_enet_softc_t *sc) { uint16_t stat; uint16_t my = 0; + rtems_status_code status = RTEMS_SUCCESSFUL; lan91c11x_write_reg(LAN91C11X_RCR, LAN91C11X_RCR_RST); lan91c11x_write_reg(LAN91C11X_RCR, 0); @@ -334,7 +325,15 @@ void mc9328mxl_enet_init_hw(mc9328mxl_enet_softc_t *sc) MC9328MXL_GPIOA_IMR |= bit(3); /* Install the interrupt handler */ - BSP_install_rtems_irq_handler(&mc9328mxl_enet_isr_data); + status = rtems_interrupt_handler_install( + BSP_INT_GPIO_PORTA, + "Network", + RTEMS_INTERRUPT_UNIQUE, + enet_isr, + (void *)BSP_INT_GPIO_PORTA + ); + assert(status == RTEMS_SUCCESSFUL); + enet_isr_on(); } /* mc9328mxl_enet_init_hw() */ @@ -602,7 +601,7 @@ void mc9328mxl_enet_stats (mc9328mxl_enet_softc_t *sc) /* Enables mc9328mxl_enet interrupts. */ -static void enet_isr_on(const rtems_irq_connect_data *unused) +static void enet_isr_on(void) { /* Enable interrupts */ MC9328MXL_AITC_INTENNUM = MC9328MXL_INT_GPIO_PORTA; @@ -610,23 +609,6 @@ static void enet_isr_on(const rtems_irq_connect_data *unused) return; } -/* Disables enet interrupts */ -static void enet_isr_off(const rtems_irq_connect_data *unused) -{ - /* disable all various TX/RX interrupts */ - MC9328MXL_AITC_INTDISNUM = MC9328MXL_INT_GPIO_PORTA; - - return; -} - -/* Tests to see if mc9328mxl_enet interrupts are enabled, and returns non-0 if so. - * If interrupt is not enabled, returns 0. - */ -static int enet_isr_is_on(const rtems_irq_connect_data *irq) -{ - return MC9328MXL_AITC_INTENABLEL & (1 << MC9328MXL_INT_GPIO_PORTA); -} - /* Driver ioctl handler */ static int mc9328mxl_enet_ioctl (struct ifnet *ifp, ioctl_command_t command, caddr_t data) |