Browse Source

[sis900] Enable interrupts to allow UNDI to work

Enable interrupts in sis900_irq(). Doing so allows some programs using
gPXE's UNDI interface to work properly, including Symantec Ghost.

Tested-by: Hubert Mercier <hubert.mercier@unilim.fr>
Signed-off-by: Marty Connor <mdc@etherboot.org>
tags/v0.9.9
Thomas Miletich 14 years ago
parent
commit
d07f79de35
1 changed files with 6 additions and 0 deletions
  1. 6
    0
      src/drivers/net/sis900.c

+ 6
- 0
src/drivers/net/sis900.c View File

@@ -1183,8 +1183,12 @@ static int
1183 1183
 sis900_poll(struct nic *nic, int retrieve)
1184 1184
 {
1185 1185
     u32 rx_status = rxd[cur_rx].cmdsts;
1186
+    u32 intr_status;
1186 1187
     int retstat = 0;
1187 1188
 
1189
+     /* acknowledge interrupts by reading interrupt status register */
1190
+    intr_status = inl(ioaddr + isr);
1191
+
1188 1192
     if (sis900_debug > 2)
1189 1193
         printf("sis900_poll: cur_rx:%d, status:%X\n", cur_rx, 
1190 1194
 	       (unsigned int) rx_status);
@@ -1264,8 +1268,10 @@ sis900_irq(struct nic *nic __unused, irq_action_t action __unused)
1264 1268
 {
1265 1269
   switch ( action ) {
1266 1270
   case DISABLE :
1271
+    outl(0, ioaddr + imr);
1267 1272
     break;
1268 1273
   case ENABLE :
1274
+    outl((RxSOVR|RxORN|RxERR|RxOK|TxURN|TxERR|TxIDLE), ioaddr + imr);
1269 1275
     break;
1270 1276
   case FORCE :
1271 1277
     break;

Loading…
Cancel
Save