diff options
Diffstat (limited to 'c/src/lib/libbsp/arm/edb7312/network/network.c')
-rw-r--r-- | c/src/lib/libbsp/arm/edb7312/network/network.c | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/c/src/lib/libbsp/arm/edb7312/network/network.c b/c/src/lib/libbsp/arm/edb7312/network/network.c index 1db4d02dd2..ce139ecccb 100644 --- a/c/src/lib/libbsp/arm/edb7312/network/network.c +++ b/c/src/lib/libbsp/arm/edb7312/network/network.c @@ -2,18 +2,13 @@ #include <sys/mbuf.h> #include <bsp/irq.h> #include <libchip/cs8900.h> +#include <assert.h> #define CS8900_BASE 0x20000300 unsigned int bsp_cs8900_io_base = 0; unsigned int bsp_cs8900_memory_base = 0; cs8900_device *g_cs; void cs8900_isr(rtems_irq_hdl_param unused); -rtems_irq_connect_data cs8900_isr_data = {BSP_EINT3, - cs8900_isr, - NULL, - NULL, - NULL, - NULL}; char g_enetbuf[1520]; @@ -68,13 +63,29 @@ unsigned short cs8900_mem_get_reg (cs8900_device *cs, unsigned long reg) void cs8900_attach_interrupt (cs8900_device *cs) { + rtems_status_code status = RTEMS_SUCCESSFUL; g_cs = cs; - BSP_install_rtems_irq_handler(&cs8900_isr_data); + + status = rtems_interrupt_handler_install( + BSP_EINT3, + "Network", + RTEMS_INTERRUPT_UNIQUE, + cs8900_isr, + NULL + ); + assert(status == RTEMS_SUCCESSFUL); } void cs8900_detach_interrupt (cs8900_device *cs) { - BSP_remove_rtems_irq_handler(&cs8900_isr_data); + rtems_status_code status = RTEMS_SUCCESSFUL; + + status = rtems_interrupt_handler_remove( + BSP_EINT3, + cs8900_isr, + NULL + ); + assert(status == RTEMS_SUCCESSFUL); } unsigned short cs8900_get_data_block (cs8900_device *cs, unsigned char *data) |