summaryrefslogtreecommitdiffstats
path: root/c/src/libchip
diff options
context:
space:
mode:
authorDaniel Hellstrom <daniel@gaisler.com>2012-04-05 10:23:16 -0500
committerJoel Sherrill <joel.sherrill@oarcorp.com>2012-04-06 11:38:25 -0500
commit0f04edd9ccf392f03548defe2e1db05592025a94 (patch)
treee018c7644ba331cf6819fb0400ec414ce308e0c4 /c/src/libchip
parentLEON3 - Fix spacing (diff)
downloadrtems-0f04edd9ccf392f03548defe2e1db05592025a94.tar.bz2
SMC91111: updated to use shared IRQ service
Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
Diffstat (limited to 'c/src/libchip')
-rw-r--r--c/src/libchip/network/smc91111.c19
-rw-r--r--c/src/libchip/network/smc91111exp.h2
2 files changed, 9 insertions, 12 deletions
diff --git a/c/src/libchip/network/smc91111.c b/c/src/libchip/network/smc91111.c
index 7070108ece..864587a169 100644
--- a/c/src/libchip/network/smc91111.c
+++ b/c/src/libchip/network/smc91111.c
@@ -61,12 +61,6 @@
#ifdef BSP_FEATURE_IRQ_EXTENSION
#include <rtems/irq-extension.h>
-#else
- #if defined(__m68k__)
- extern m68k_isr_entry set_vector( rtems_isr_entry, rtems_vector_number, int );
- #else
- extern rtems_isr_entry set_vector( rtems_isr_entry, rtems_vector_number, int );
- #endif
#endif
struct lan91cxx_priv_data smc91111;
@@ -92,9 +86,9 @@ static void lan91cxx_phy_configure(struct lan91cxx_priv_data *cpd);
#define max(l,r) ((l) > (r) ? (l) : (r))
/* \ ------------- Interrupt ------------- \ */
-rtems_isr lan91cxx_interrupt_handler(rtems_vector_number v)
+void lan91cxx_interrupt_handler(void *arg)
{
- struct lan91cxx_priv_data *cpd = &smc91111;
+ struct lan91cxx_priv_data *cpd = arg;
unsigned short irq, event;
unsigned short oldbase;
unsigned short oldpointer;
@@ -1029,7 +1023,7 @@ static void smc91111_stop(struct lan91cxx_priv_data *cpd)
int lan91cxx_hardware_init(struct lan91cxx_priv_data *cpd)
{
unsigned short val;
- int i;
+ int i, rc;
DEBUG_FUNCTION();
@@ -1053,8 +1047,11 @@ int lan91cxx_hardware_init(struct lan91cxx_priv_data *cpd)
}
}
#else
- db_printf("Install lan91cxx irqvector at %d\n", cpd->config.vector);
- set_vector(lan91cxx_interrupt_handler, cpd->config.vector, 1);
+ db_printf("Install lan91cxx isr at vec/irq %d\n", cpd->config.vector);
+ rc = rtems_interrupt_handler_install(cpd->config.vector, "smc91cxx",
+ RTEMS_INTERRUPT_SHARED, lan91cxx_interrupt_handler, cpd);
+ if (rc != RTEMS_SUCCESSFUL)
+ return 0;
#endif
/* Reset chip */
diff --git a/c/src/libchip/network/smc91111exp.h b/c/src/libchip/network/smc91111exp.h
index 3f8ba1e414..2ab62c1417 100644
--- a/c/src/libchip/network/smc91111exp.h
+++ b/c/src/libchip/network/smc91111exp.h
@@ -9,7 +9,7 @@
typedef struct scmv91111_configuration {
void *baseaddr;
- unsigned int vector;
+ rtems_vector_number vector;
unsigned int pio;
unsigned int ctl_rspeed;
unsigned int ctl_rfduplx;