diff options
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/i386/pc386/wd8003/wd8003.c | 44 |
1 files changed, 16 insertions, 28 deletions
diff --git a/c/src/lib/libbsp/i386/pc386/wd8003/wd8003.c b/c/src/lib/libbsp/i386/pc386/wd8003/wd8003.c index d26464c6e8..64b7fda174 100644 --- a/c/src/lib/libbsp/i386/pc386/wd8003/wd8003.c +++ b/c/src/lib/libbsp/i386/pc386/wd8003/wd8003.c @@ -18,6 +18,7 @@ #include <errno.h> #include <rtems/error.h> #include <rtems/rtems_bsdnet.h> +#include <assert.h> #include <sys/param.h> #include <sys/mbuf.h> @@ -73,7 +74,6 @@ */ struct wd_softc { struct arpcom arpcom; - rtems_irq_connect_data irqInfo; struct mbuf **rxMbuf; struct mbuf **txMbuf; int acceptBroadcast; @@ -84,6 +84,7 @@ struct wd_softc { int txBdActiveCount; rtems_id rxDaemonTid; rtems_id txDaemonTid; + rtems_vector_number name; unsigned int port; unsigned char *base; @@ -127,7 +128,7 @@ static struct wd_softc wd_softc[NWDDRIVER]; * WD interrupt handler */ static void -wd8003Enet_interrupt_handler (void *unused) +wd8003Enet_interrupt_handler (void * unused) { unsigned int tport; unsigned char status, status2; @@ -169,19 +170,6 @@ wd8003Enet_interrupt_handler (void *unused) } -static void nopOn(const rtems_irq_connect_data* notUsed) -{ - /* - * code should be moved from wd8003Enet_initialize_hardware - * to this location - */ -} - -static int wdIsOn(const rtems_irq_connect_data* irq) -{ - return BSP_irq_enabled_at_i8259s (irq->name); -} - /* * Initialize the ethernet hardware */ @@ -191,7 +179,7 @@ wd8003Enet_initialize_hardware (struct wd_softc *sc) int i1, ultra; char cc1, cc2; unsigned char temp; - rtems_status_code st; + rtems_status_code status; unsigned int tport; unsigned char *hwaddr; @@ -257,15 +245,15 @@ wd8003Enet_initialize_hardware (struct wd_softc *sc) /* * Set up interrupts */ - sc->irqInfo.hdl = wd8003Enet_interrupt_handler; - sc->irqInfo.on = nopOn; - sc->irqInfo.off = nopOn; - sc->irqInfo.isOn = wdIsOn; - - st = BSP_install_rtems_irq_handler (&sc->irqInfo); - if (!st) - rtems_panic ("Can't attach WD interrupt handler for irq %d\n", - sc->irqInfo.name); + + status = rtems_interrupt_handler_install( + sc->name, + "wd8003", + RTEMS_INTERRUPT_UNIQUE, + wd8003Enet_interrupt_handler, + NULL + ); + assert(status == RTEMS_SUCCESSFUL); } static void @@ -397,7 +385,7 @@ sendpacket (struct ifnet *ifp, struct mbuf *m) /* * Driver transmit daemon */ -void +static void wd_txDaemon (void *arg) { struct wd_softc *sc = (struct wd_softc *)arg; @@ -607,9 +595,9 @@ rtems_wd_driver_attach (struct rtems_bsdnet_ifconfig *config, int attach) mtu = ETHERMTU; if (config->irno) - sc->irqInfo.name = config->irno; + sc->name = config->irno; else - sc->irqInfo.name = 5; + sc->name = 5; if (config->port) sc->port = config->port; |